|  | 
|  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 | 
|  | 
|  | 
| 
 |