Привет. Подскажите куда копать что бы понять по какой логике AX09 осуществляет связь в методах перебора.
Есть стоковый метод
SalesFormLetter::chooseLines
Внутри которого есть цикл:
X++:
void chooseLines(SalesParmTable _salesParmTable = null, boolean _directDeliveryUpdate = false)
{
...
chooseLines.reset(); // if the select button is used from saleseditlines
while (chooseLines.next())
{
progressTotal++;
if (chooseLines.changed(tablenum(SalesTable)))
{
localSalesTable = chooseLines.get(tablenum(SalesTable));
mayJournalBePosted = this.mayJournalBePosted(localSalesTable);
if (!localSalesTable.canCustomerBeUpdated(this.documentStatus()))
{
mayJournalBePosted = checkFailed(strfmt("@SYS7987",localSalesTable.CustAccount));
}
}
localSalesLine = chooseLines.get(tablenum(SalesLine));
...
}
...
}
Заметил что в некоторых случаях при формировании счета из SO на печать цикл перебирает линии из выбранного заказа - тут все OK, а в некоторых случаях по другим заказам он тупо начинает перебирать вообще другие линии других заказов.
1. Хотелось бы понять что происходит внутри методов:
chooseLines.reset()
chooseLines.next()
2. По какой логике (и откуда AX берет эту логику) иногда корректно перебираются все линии заказа, а в каких случаях тупо начинают перебираться другие линии из других заказов?