26.07.2022, 19:45 | #1 |
Участник
|
Передать выборку по таблице из класса в класс
Здравствуйте. Простой вопрос, но не понял. Как сделав выборку в одном классе передать отобранные записи таблицы в другой класс? Например класс с диалогом, по его параметрам сделать выборку в таблице, а отобранные записи надо передать в другие классы.
|
|
26.07.2022, 20:13 | #2 |
Участник
|
Смотря в каком виде выглядит выборка.
1) Если на диалоге расширенный фильтр, то query 2) Если грид, то можно сформировать Set |
|
27.07.2022, 13:41 | #3 |
Участник
|
|
|
27.07.2022, 14:40 | #4 |
Участник
|
Добрый день.
Какую цель преследуете? Для примера с диалогом стоит посмотреть в сторону формирования запросе без его выполнения (ключевое слово noFetch и передача курсора, либо query, как писали ранее). Если задача перебрать два раза один и тот же набор данных - есть иные способы решения. Например система событий. Сделав класс получатель - подписчиком на событие. Последний раз редактировалось Товарищ ♂uatr; 27.07.2022 в 14:44. |
|
27.07.2022, 19:50 | #5 |
Участник
|
Цитата:
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. |
|
|
За это сообщение автора поблагодарили: Aleksey2020 (1). |
28.07.2022, 07:02 | #6 |
Administrator
|
Система концептуально не позволяет передавать выбранные записи между классами. Ну т.е. таким образом не надо мыслить при проектировании алгоритма. Здесь правильнее передавать правила отбора записей (объект Query), чтобы конечный метод, который будет работать с записями - смог бы их выбрать. Безусловно, в системе встречаются конструкции, которые именно в память складируют отобранные записи (объекты Map, List, Set, RecordSortedList), но они эффективно работают с малым количеством записей (условно - до 20). Есть ещё временные таблицы, но с ними также есть свои заморочки. Поэтому, наиболее эффективный вариант - передавать правила выборки (Query). Если записи не поддаются какому-либо общему правилу выборки, то можно во временную таблицу TmpRecidFilter напихать recId выбираемых записей и её уже передать в метод работы с отобранными записями. Сохранять же большое количество записей в памяти есть зло для производительности
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.08.2022 в 18:10. |
|
|
За это сообщение автора поблагодарили: Aleksey2020 (1). |
29.07.2022, 08:47 | #7 |
Участник
|
Цитата:
Сообщение от Товарищ ♂uatr
Добрый день.
Какую цель преследуете? Для примера с диалогом стоит посмотреть в сторону формирования запросе без его выполнения (ключевое слово noFetch и передача курсора, либо query, как писали ранее). Если задача перебрать два раза один и тот же набор данных - есть иные способы решения. Например система событий. Сделав класс получатель - подписчиком на событие. |
|
26.08.2022, 17:42 | #8 |
Участник
|
|
|