Цитата:
Сообщение от
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 выделять все равно нужно.