|
|
|
Работа с временными таблицами в коде AlexYurg, craxx, dedmoroz777, , trad, denk32, X Leshiy, Chai Nic, crasler, Kongo2019, ДемьянТ, okmail, eddy_n, TormozIT, Asmody, Доминошник, who respawn, DeeK, Волшебник, shuhard, RomarioAgro, ZloyBrawler, aka MIK, Franchiser, DimVad
| ☑ | ||
|---|---|---|---|---|
|
0
Dragonofdwarfs
28.11.25
✎
16:48
|
Коллеги, всем доброго времени суток! Можете подсказать, есть ли какой-нибудь способ обработать записи временной таблицы в самом коде? Иными словами, временная таблица вроде как существует только во время выполнения запроса, есть ли возможность продлить ей жизнь?
|
|||
|
1
Волшебник
28.11.25
✎
16:49
|
используйте МенеджерВременныхТаблиц.
После запроса можете получить данные из временной таблицы в виде ТаблицаЗначений |
|||
|
2
Dragonofdwarfs
28.11.25
✎
16:50
|
Ок, попробую, спасибо!
|
|||
|
3
Волшебник
28.11.25
✎
16:52
|
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Заказы.Ссылка КАК Заказ,
| Заказы.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ЕСТЬNULL(РегЗаказыОстатки.СуммаУпрОстаток, 0) КАК ОсталосьОтгрузитьСуммаУпр,
| ЕСТЬNULL(РегВзаиморасчетыОстатки.СуммаУпрОстаток, 0) КАК ЗадолженностьСуммаУпрОстаток
|ПОМЕСТИТЬ ЗаказыОбрабатываемые
...
РезультатыЗапроса = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
тзЗаказы = Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("ЗаказыОбрабатываемые").ПолучитьДанные().Выгрузить(); |
|||
|
4
Dragonofdwarfs
28.11.25
✎
16:54
|
(3) Огонь!
|
|||
|
5
АгентБезопасной Нацио
28.11.25
✎
17:10
|
(3) лучше б ты ему СП продал... Вместо ДенисаЧ
|
|||
|
6
TormozIT
гуру
30.11.25
✎
09:53
|
(3) Ты смешал 2 подхода в одном примере.
Надо либо одно делать либо другое, т.е. эти подходы альтернативны. Совместное их использование приведет к лишней нагрузке.
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ 2 ПОМЕСТИТЬ Ф";
// Способ №1
РезультатПакета = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
Рез1 = РезультатПакета[0].Выгрузить();
// Способ №2
Запрос.Выполнить();
Рез2 = Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("Ф").ПолучитьДанные().Выгрузить();
Наиболее оптимальным является способ №2 |
|||
|
7
Волшебник
30.11.25
✎
10:04
|
(6) Да, ты прав. Я взял пример из своего АРМ Продажи. Там кроме временных таблиц есть ещё основной результат запроса.
|
|||
|
8
eddy_n
30.11.25
✎
14:04
|
(6) Разве для первого способа нужен Менеджер ВТ? Да и просто ВыполнитьПакет() работает на получение потом таблиц из массивов пакетов.
|
|||
|
9
Chai Nic
30.11.25
✎
15:30
|
Менеджер ВТ явно создавать нужно только если надо сохранять временные таблицы между разными запросами.
|
|||
|
10
Волшебник
30.11.25
✎
16:46
|
(8)(9) Вы правы.
Я кэширую МВТ и потом делаю к ним следующие запросы. |
|||
|
11
TormozIT
гуру
30.11.25
✎
17:20
|
(8) Для первого способа создавать менеджер действительно не требуется. Но и лишней нагрузки это не создаст. А метод ВыполнитьПакет() в данном спучае не даст решения задачи, т.к. он для запроса создания временной таблицы вернет только строку с числом добавленных в эту таблицу строк.
|
|||
|
12
eddy_n
30.11.25
✎
18:08
|
(11) Довольно часто этого достаточно, чтобы понять, на каком этапе ВТ подсократилась и внести коррективы в запрос.
|
|||
|
13
eddy_n
30.11.25
✎
18:12
|
(12) + Но, конечно, стандартным средствам платформы ещё далеко до Инструментов Разработчика.
|
|||
|
14
Kongo2019
30.11.25
✎
18:48
|
Когда начинают гонять временные таблицы по коду, как правило это показатель ошибки в архитектуре приложения.
Получили данные обработали и вернули. Не надо их по коду гонять. |
|||
|
15
craxx
30.11.25
✎
19:17
|
(14) Отладка запроса бывает часто необходима.
|
|||
|
16
Kongo2019
30.11.25
✎
19:19
|
(15) что консоль запросов уже вышла из моды?
|
|||
|
17
craxx
30.11.25
✎
19:23
|
(16) Ага, попробуй в ЗУП запросы консолью поотлаживай. Которые тянутся хрен знает откуда, где стек вызовов штук так 40 глубиной.
|
|||
|
18
Kongo2019
30.11.25
✎
19:40
|
(17) ЗУП давно ушел от схемы запросов, они там считай уже API нарисовали, коряво пока, но запросами там уже работать не рекомендуется, Надо юзать программный интерфейс уже.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |