AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2022, 19:45   #1  
Aleksey2020 is offline
Aleksey2020
Участник
 
14 / 10 (1) +
Регистрация: 25.02.2020
Передать выборку по таблице из класса в класс
Здравствуйте. Простой вопрос, но не понял. Как сделав выборку в одном классе передать отобранные записи таблицы в другой класс? Например класс с диалогом, по его параметрам сделать выборку в таблице, а отобранные записи надо передать в другие классы.
Старый 26.07.2022, 20:13   #2  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
Смотря в каком виде выглядит выборка.
1) Если на диалоге расширенный фильтр, то query
2) Если грид, то можно сформировать Set
Старый 27.07.2022, 13:41   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Aleksey2020 Посмотреть сообщение
Как сделав выборку в одном классе передать отобранные записи таблицы в другой класс?
А вы уже знаете как бы вы передали отобранные записи не в другой класс а в другой метод того же класса?
Старый 27.07.2022, 14:40   #4  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
305 / 873 (30) +++++++
Регистрация: 23.10.2012
Добрый день.
Какую цель преследуете?
Для примера с диалогом стоит посмотреть в сторону формирования запросе без его выполнения (ключевое слово noFetch и передача курсора, либо query, как писали ранее).
Если задача перебрать два раза один и тот же набор данных - есть иные способы решения. Например система событий. Сделав класс получатель - подписчиком на событие.

Последний раз редактировалось Товарищ ♂uatr; 27.07.2022 в 14:44.
Старый 27.07.2022, 19:50   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Aleksey2020 Посмотреть сообщение
Например класс с диалогом, по его параметрам сделать выборку в таблице, а отобранные записи надо передать в другие классы.
прежде всего, диалог и выборка - это Query.

Query - это программный объект, который позволяет программно создавать и модифицировать запросы к SQL.


В вопросе под выборкой вы, скорее всего, имели в виду select.
под рукой нет аксапты, пишу навскидку:

X++:
public void method1()
{
   myTable myTable;

   select myTable
   where myTable.myField == someValue;

   this.method2(myTable);
}

public void method2(myTable myTable)
{
   while( myTable )
   {
       // ... myTable....

       next myTable;
   }
}
будьте предельно осторожны, когда передаете выборку между клиентом и сервером. постарайтесь не делать выборки на клиенте.

обязательно освойте Query.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Aleksey2020 (1).
Старый 28.07.2022, 07:02   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,316 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Система концептуально не позволяет передавать выбранные записи между классами. Ну т.е. таким образом не надо мыслить при проектировании алгоритма. Здесь правильнее передавать правила отбора записей (объект Query), чтобы конечный метод, который будет работать с записями - смог бы их выбрать. Безусловно, в системе встречаются конструкции, которые именно в память складируют отобранные записи (объекты Map, List, Set, RecordSortedList), но они эффективно работают с малым количеством записей (условно - до 20). Есть ещё временные таблицы, но с ними также есть свои заморочки. Поэтому, наиболее эффективный вариант - передавать правила выборки (Query). Если записи не поддаются какому-либо общему правилу выборки, то можно во временную таблицу TmpRecidFilter напихать recId выбираемых записей и её уже передать в метод работы с отобранными записями. Сохранять же большое количество записей в памяти есть зло для производительности
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 26.08.2022 в 18:10.
За это сообщение автора поблагодарили: Aleksey2020 (1).
Старый 29.07.2022, 08:47   #7  
Aleksey2020 is offline
Aleksey2020
Участник
 
14 / 10 (1) +
Регистрация: 25.02.2020
Цитата:
Сообщение от Товарищ ♂uatr Посмотреть сообщение
Добрый день.
Какую цель преследуете?
Для примера с диалогом стоит посмотреть в сторону формирования запросе без его выполнения (ключевое слово noFetch и передача курсора, либо query, как писали ранее).
Если задача перебрать два раза один и тот же набор данных - есть иные способы решения. Например система событий. Сделав класс получатель - подписчиком на событие.
А есть примеры классов-подписчиков в стандарте аксапты 2012?
Старый 26.08.2022, 17:42   #8  
astralsun is offline
astralsun
Участник
 
16 / 19 (1) ++
Регистрация: 17.04.2018
Цитата:
Сообщение от Aleksey2020 Посмотреть сообщение
А есть примеры классов-подписчиков в стандарте аксапты 2012?
SubledgerJournalizer
и его подписчик, например,
SubledgerJournalizerALEExtension
и подписчик поинтереснее
SubledgerJournalizerBondExtension
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как передать Args формы в класс service? Sysoperation Framework Skolos DAX: Программирование 8 30.03.2018 17:15
Передать выборку классу SalesFormLetter_Quotation Eland DAX: Программирование 2 19.01.2007 17:43
Передать параметр Hobo DAX: Программирование 2 05.03.2004 19:18
Класс RunBase SergS DAX: База знаний и проекты 0 19.06.2002 18:07
Класс xSysLastValue Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:39

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:43.