Показать сообщение отдельно
Старый 07.07.2009, 07:04   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от EVGL Посмотреть сообщение
...
SalesFormLetter_PackingSlip\chooseLinesFromWMSArrival:

SalesFormLetter_Invoice\chooseLinesFromWMSShipment:
...
Цитата:
Сообщение от Jabberwocky Посмотреть сообщение
А Ваш коллега не задумался, для чего была добавлена генерация RecId?

Просто везде после строчки:
X++:
localSalesParmTable.RecId  = systemSequence.reserveValues(1, tablenum(SalesParmTable));
стоят вызовы:

X++:
AddressTrans_RU::createFromSalesParmTable(localSalesParmTable);
PlInventPackageParm::updateFromSalesParmTable(localSalesParmTable);
Для корректной работы этих методов необходимо, чтобы буфер localSalesParmTable уже содержал "реальный" RecId.

В вышеприведенных методах

SalesFormLetter_PackingSlip\chooseLinesFromWMSArrival, SalesFormLetter_Invoice\chooseLinesFromWMSShipment

эти вызовы не используются.
Цитата:
Сообщение от Logger Посмотреть сообщение
Хм, а что при вставке записи recId не перезатирается ? Или там добавлен код подавляющий это ?
На самом деле все-таки видимо это ошибка(не проверял на реальных данных), в выше означенных методах, как и в других chooseLines... идет вызов
X++:
this.recordInsertListInit()
провалившись в него можно увидеть метод suspendRecIds()
X++:
systemSequence = new systemSequence();
systemSequence.suspendRecIds(tableNum(SalesParmLine));
systemSequence.suspendRecIds(tableNum(SalesParmTable));
Отсюда можно сделать вывод, что генерацией recId будут заниматься вручную, т.е. по идее не важно идут вызовы
X++:
AddressTrans_RU::createFromSalesParmTable(localSalesParmTable);
PlInventPackageParm::updateFromSalesParmTable(localSalesParmTable);
или нет, recId выделять все равно нужно.

Последний раз редактировалось SRF; 07.07.2009 в 07:09.
За это сообщение автора поблагодарили: EVGL (5).