Axapta 4.0 SP2 EE
система 4.0.25.01.121
проблема в CustVendSettle.postExchRateLedgerTrans
История вопроса.
Разработан функционал по переброске с контрагента на поставщика и наоборот через сложную проводку в ГК. Не через транзитный счёт ГК. Допустим, выполнена переброска с клиента на поставщика.
Поставщик и клиент имеют разные аналитики, например, аналитику Контрагент. В итоге по клиенту была насчитана нереализованная курсовая разница.
В ГК проводка по переброске состоит из двух частей: первая клиентская с постингом "Сальдо по Клиенту", вторая - "Сальдо по поставщику", аналитики у частей разные, соответствуют клиенту и поставщику соответственно.
Выполняется сопоставление. Нереализованная курсовая реверсируется. И вот тут баг. Аналитика для проводки-реверса выбирается из той части проводки-переброски, которая по постингу не равна "Сальдо клиента", получаем часть "Сальдо поставщика". В итоге в проводке реверса нереализованной КР аналитика выбрана из поставщика. В этом косяк.
X++:
if (_custVendTrans.TableId == tablenum(CustTrans))
{
balancePosting = LedgerPostingType::CustBalance;
}
else
{
balancePosting = LedgerPostingType::VendBalance;
}
// ........
// некоторый код
//.........
while select * from ledgerTrans
where ledgerTrans.Voucher == _custVendTrans.Voucher
&& ledgerTrans.TransDate == _custVendTrans.TransDate
&& ledgerTrans.Posting != balancePosting
{
calcAmountPerDimension(ledgerTrans);
}
У меня два вопроса. В чём смысл этой выборки? Как починить? Я предполагаю, что для варианта "Сальдо клиента"-"Сальдо поставщика" нужно дописать в выборке выбор LedgerTrans по "Сальдо клиента", а не наоборот по "не равно".