Уничтожитель временных таблиц пакета запросов

Программирование - Инструментарий

Обработка позволяет модифицировать текст запроса, расставляя в нужных позициях пакета запросов уничтожения временных таблиц.

Если вы пишете большие отчеты, используя множество временных таблиц в запросе, то для экономии памяти желательно уничтожать ВТ, которые дальше не будут использоваться при выполнении пакета запросов.

Данная обработка меняет текст запроса через объектную модель, правильно определяя ту позицию, в которой временную таблицу можно уничтожить.

Предусмотрена обработка ситуаций, когда ВТ с одним и тем же именем может несколько раз создаваться и уничтожаться в пределах одного пакета запросов.

Есть пара необязательных настроек, актуальных для случаев, когда вы принудительно НЕ создаете менеджер временных таблиц для последующей работы с ним:

  • "Уничтожать временные таблицы после последнего запроса" - выводит в текст запроса уничтожение временных таблиц, использованных в последнем запросе. Это нужно для информации, т. к. практического смысла не имеет, потому что ВТ и так автоматически уничтожатся после выполнения пакета запросов.
  • "Удалять из пакета запросов неиспользуемые временные таблицы" - если в пакете создается ВТ, которая в дальнейшем не используется, то обработка удалит из пакета запросов данную ВТ.

Протестировано на платформах 8.3.9, 8.3.10, но должно работать, начиная с платформы 8.3.5. Конфигурация не важна. Исходный запрос для обработки надо брать тот, который выполняется без ошибок в той же конфигурации.

Скачать файлы

Наименование Файл Версия Размер
Уничтожитель временных таблиц пакета запросов:
.epf 9,40Kb
22.09.17
1
.epf 1.0 9,40Kb 1 Скачать

См. также

Комментарии
1. Николай Зевеке (zekrus) 151 27.09.17 08:05 Сейчас в теме
Доброе утро!
- "Лед тронулся господа ..."
Жду не дождусь когда увижу код:
Запрос.Текст="ВСТАВИТЬ ..."
С уважением
3. Серега (SerVer1C) 61 27.09.17 09:01 Сейчас в теме
(1) Представьте, что вы пишите большой аналитический отчет, достающий данные из 20+....30+....50+ таблиц (sql). Соответственно у вас (возможно) будет несколько десятков временных таблиц. Причем могут быть и подзапросы, в которых идет обращение к ВТ. Конечно, можно пройтись по такому запросу вручную, и вставлять уничтожения ВТ по мере необходимости (для экономии памяти). Но "скормив" текст запроса данной обработке, она сама вставит уничтожения ВТ в текст запроса в те места текста запроса, после которого ВТ уже не будет востребована ниже по тексту. Может быть вы не поняли функционал данной обработки?
5. Николай Зевеке (zekrus) 151 27.09.17 11:17 Сейчас в теме
(3)Добрый день!
Возможно я не понятно объяснил, меня интересует возможность из запроса выполнить запись в таблицу СУБД.
С уважением
7. Серега (SerVer1C) 61 27.09.17 11:35 Сейчас в теме
(5) Это было бы интересно, но фирма 1С на это не пойдет, т. к. при таком подходе может произойти рассогласование между платформой и данными в скуле.
2. DenisCh Гейтс (DenisCh) 27.09.17 08:46 Сейчас в теме
Грохнуть менеджер временных таблиц - не проще будет?
4. Серега (SerVer1C) 61 27.09.17 09:04 Сейчас в теме
(2) Проще, но перед "Грохнуть" у вас память может быть занята гигабайтами данных временных таблиц. Поэтому будет лучше своевременно подчищать за собой неиспользуемые ВТ по мере необходимости.
6. Валерий М (VmvLer) 27.09.17 11:28 Сейчас в теме
если создан запрос где

20+....30+....50+ таблиц

то наверняка на создание этого запроса затрачено много времени и логика удаления временных таблиц может быть НЕ линейной.

Я хочу сказать, что если на написание пакетного запроса потрачено более часа времени, то лучше потратить еще 5-10 минут в финале на удаление временных осознанно, а не автоматически.

хотя как "черновик" удаления эта обработка может и прокатит.
Infector; +1 Ответить
8. Серега (SerVer1C) 61 27.09.17 11:38 Сейчас в теме
(6) Как понять "логика удаления временных таблиц может быть НЕ линейной" ? Если ВТ в пакете запросов дальше не используется, то на этом шаге ее можно (нужно) уничтожить. Обработка "осознанно" находит это место в пакете )
9. kiruha Д (kiruha) 363 28.09.17 11:07 Сейчас в теме
(8)
Бывают исключения - если задан Менеджер временных таблиц, то временная таблица может использоваться в другом запросе.
Еще бывает что подменяют текст запроса в зависимости от настроек (СтрЗаменить)
10. Серега (SerVer1C) 61 28.09.17 11:33 Сейчас в теме
(9) Естественно, если программист использует МВТ, то в таком случае человек должен сам решать, какие ВТ ему далее потребуются в работе, но и при таком варианте обработка подскажет, какие "использованные" ВТ можно уничтожить, останется только руками убрать уничтожения для тех ВТ, которые будут использоваться в следующих запросах. Ну а через "СтрЗаменить" вообще можно прийти к совершенно другому запросу, не имеющему связи с исходным, так что тут автоматизировать нечего...
Оставьте свое сообщение