Цитата:
Сообщение от
AvrDen
Изменили код Classes\SalesFormLetter\postUpdate
В результате получили обработку заказа на 2500 строк 10 минут, вместо 20 минут.
Не корректная модификация. Это будет работать только в том случае, если в пределах отобранных salesParmLine будут только записи с одинаковым значением OrigSalesId. Если окажется что есть несколько значений OrigSalesId, то код будет не корректным.
Необходимо сохранить salesIdPrev, например в SET (он автоматически отбросит дубли в момент записи), а потом сканировать полученный SET, чтобы перебрать все SalesId.
X++:
Set setSalesId = new Set(types::String);
SetIterator si;
;
// Перебор salesParmLine
recordListSalesParmLine.first(salesParmLine);
while (salesParmLine)
{
(...)
salesIdPrev = salesParmLine.OrigSalesId;
setSalesId.add(salesIdPrev);
(...)
} // while (salesParmLine)
// Перебор salesTable на которые есть ссылка в salesParmLine
si = new SetIterator(setSalesId)
while (si.more())
{
salesIdPrev = si.value();
salesTable = SalesTable::find(salesIdPrev, true)
(...)
si.next();
} // while (si.more())
(...)