Цитата:
Сообщение от
ski
Добрый день! Подскажите, пожалуйста, как создать многострочную обработку в Axapta 3, т.е. обработку для нескольких строк формы (например, как это сделано для нескольких заказов в плане создания накладных). Нужно перекрывать методы на источнике данных формы? Спасибо.
правильный ответ тут
Работа с записями таблицы
Модификация выделенных строк
Цитата:
Сообщение от
S.Kuskov
Если совсем конкретно, то вам нужны методы getFirst и getNext источника данных Args.record().dataSource()
э-э-э... похоже вопрос холиварный - где разместить код, который обрабатывает эти несколько строк.
X++:
for (localSalesLine = salesLine_ds.getFirst(true) ? salesLine_ds.getFirst(true) : salesLine.dataSource().cursor(); localSalesLine; localSalesLine = salesLine_ds.getNext())
{
...
// вызвать menuItem для одной записи
...
}
1.
по рекомендациям bestpractice код нужно разместить в кнопке формы.
в этом случае обработка может быть стандартной. Она по-умолчанию принимает одну строчку. из любого датасорса
но в этом случае делается отдельные запросы для каждой выделенной строки внутри обработки.
2.
другой вариант - разместить этот код внутри обработки.
в этом случае обработка становится зависимой от вызывающего объекта (внутри она должна содержать switch, который обрабатывает выделенные строки для разных вызывающих объектов). В этом случае часто ломают dynalink.
но в этом случае делается один запрос для всех выделенных строк.
лично мне больше нравится первый вариант.
он дает более независимый код. хотя и чуть менее оптимальный по производительности.