Показать сообщение отдельно
Старый 16.11.2010, 10:13   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 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.
но в этом случае делается один запрос для всех выделенных строк.

лично мне больше нравится первый вариант.
он дает более независимый код. хотя и чуть менее оптимальный по производительности.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Alexanderrrr (1).