|
03.03.2011, 11:12 | #1 |
Участник
|
Ax2009 RU5: LedgerTrans.reverseSettlement()
В этом методе входной параметр - RecId из таблицы LedgerTrans. Вызывается reverseSettlement в одном месте - LedgerVoucher.post(), в качестве входного параметра передаётся переменная sourceRecid, которая заполняется значением RecId из записи ledgerTrans, являющейся на тот момент временной записью. RecId во временных таблицах совсем не такие как в постоянных.
Вследствие чего в таблице LedgerTransSettlement появляются записи со значениями типа 3, 4, 5, 6 и т.д. в поле TransRecId (таких записей не большинство, но они есть). И изредка во время разноски возникают ошибки о невозможности вставки записи в эту таблицу, так как TransRecId должно быть уникально. Не могу понять какую всё-таки цель пытались добиться разработчики и что изменить чтобы ошибка не возникала.
__________________
Дмитрий |
|
26.03.2011, 16:54 | #2 |
Участник
|
аналогичный вопрос. и аналогичная проблема - не понимаю.
ax2009, sp5 докопался до класса LedgerVoucherTransList в котором редиска-локализатор (нехороший человек) использует refId_RU как счетчик записей внутри списка. но потом возвращает этот счетчик как нормальный recId. у аксапточки "едет крыша" от такого издевательства. ============== также похоже, что LedgerSettlement - это буржуйская корреспонденция (необязательная). ============== Есть мысли как избавиться от ошибки об неуникальности вставляемых записей? Может кто знает на уровне функционала для чего именно используется таблица LedgerSettlement? (Перекрестные ссылки смотрел - много где используется) |
|
27.03.2011, 17:37 | #3 |
MCTS
|
Цитата:
Сопоставлют проводки ГК из меню "ГК-Периодические операции-Сопоставления ГК" (как-то так, но точно не помню, а Аксапты под рукой нет). Сопоставленные проводки просматриваются из формы проводок ГК по кнопке "Сопоставления ГК" (или как-то так).
__________________
Dynamics AX Experience |
|
26.01.2012, 08:31 | #4 |
Постигающий
|
Цитата:
Сообщение от Damn
В этом методе входной параметр - RecId из таблицы LedgerTrans. Вызывается reverseSettlement в одном месте - LedgerVoucher.post(), в качестве входного параметра передаётся переменная sourceRecid, которая заполняется значением RecId из записи ledgerTrans, являющейся на тот момент временной записью. RecId во временных таблицах совсем не такие как в постоянных.
Вследствие чего в таблице LedgerTransSettlement появляются записи со значениями типа 3, 4, 5, 6 и т.д. в поле TransRecId (таких записей не большинство, но они есть). И изредка во время разноски возникают ошибки о невозможности вставки записи в эту таблицу, так как TransRecId должно быть уникально. Не могу понять какую всё-таки цель пытались добиться разработчики и что изменить чтобы ошибка не возникала. X++: if (localDetailSummary == DetailSummary::Detail )
{
recId++;
ledgerTrans.RecId = recId;
} хотел добавить условие (как в 73 строке этого самого LedgerVoucher.postGroup) X++: if (localDetailSummary == DetailSummary::Detail && !reversal)
{
recId++;
ledgerTrans.RecId = recId;
} кто-то еще сталкивался с проблемой описанной в перовом посте? как решали? Последний раз редактировалось Андрей К.; 26.01.2012 в 08:40. |
|
09.10.2013, 17:13 | #5 |
Участник
|
Цитата:
На приложении DAX 2009 RU8 только, что столкнулся с последствиями данного исправления, как минимум(мне показали только данный случай) при отмене сопоставления накладной с предоплатой появляется сообщение "Установлена не верная корреспонденция. Корреспонденция будет отменена." и часть проводок ГК(налоговые) формируются без корреспонденции. (возможно это как то зависит от конфигурации налогов и самого приложения, но от этого не легче). Если вы не пользуетесь функционалом сопоставления ГК, то алгоритм исправления я бы смотрел в сторону предложенную avm, отключение формирования записей в данной табличке.
__________________
Sergey Nefedov Последний раз редактировалось SRF; 09.10.2013 в 17:17. |
|
26.01.2012, 23:06 | #6 |
Участник
|
По-моему, тут было про то же самое:
AX2009: не работает рассопоставление проводок при ВЫключенной корреспонденции и DetailSummary::Detail |
|
27.01.2012, 07:18 | #7 |
Постигающий
|
Цитата:
Сообщение от gl00mie
По-моему, тут было про то же самое:
AX2009: не работает рассопоставление проводок при ВЫключенной корреспонденции и DetailSummary::Detail Последний раз редактировалось Андрей К.; 27.01.2012 в 07:46. |
|
30.07.2012, 21:35 | #8 |
Участник
|
Никто не раскопал в чем было дело и как лечить ?
|
|
06.08.2012, 18:46 | #9 |
Участник
|
Logger, на проекте в свое время исправил аналогично способу, описанному выше Андрей К., все довольны, ошибка не появляется, корреспонденция работает.
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
10.04.2013, 09:51 | #10 |
Участник
|
Для себя решили проблему путем внесения изменения в метод post класса LedgerVoucher.
X++: if (reversal && sourceRecid && !correspondenceEnabled) // if (reversal && sourceRecid) mav bugFix { ledgerTrans.reverseSettlement(sourceRecid); } Результат сопоставленные проводки не переоцениваются алгоритмом курсовой разницы (КР) счетов ГК. Ниже код из класса LedgerExchAdj метода run(). X++: while select ledgerTrans where ledgerTrans.AccountNum == ledgerTable.AccountNum && ledgerTrans.TransDate >= searchDate && ledgerTrans.TransDate <= toDate && (ledgerTrans.CurrencyCode >= fromCur || ! fromCur) && (ledgerTrans.CurrencyCode <= toCur || ! toCur) notexists join legderTransSettlement where ledgerTrans.RecId == legderTransSettlement.TransRecId |
|
|
|