
Использование Менеджера временных таблиц
Содержание
Механизм запросов, возникнув в 7 версии программы 1С, с выходом первых версий 8 платформы получил все более широкое распространение и постоянно растущую популярность. Появление управляемых форм и системы компоновки данных существенно увеличило область применения этого инструмента. Однако многим начинающим программистам достаточно сложно его освоить.
Использование объекта, который носит название «Менеджер временных таблиц» позволяет:
- Значительно упростить текст запроса;
- Разбить его на более простые блоки;
- Увеличить его читаемость и структурированность.
Несколько слов о том, как это работает
В принципе, в работе менеджера временных таблиц можно выделить четыре этапа использования:
- Создание менеджера;
- Его заполнение;
- Чтение данных из таблиц;
- Уничтожение менеджера и очистка таблиц.
Давайте поговорим о каждом этапе поподробнее.
Создание менеджера временных таблиц
Для того, чтобы определить этот объект необходимо выполнить код, показанный на Рис.1
Здесь следует обратить внимание, что определение менеджера временных таблиц дается перед оператором Выполнить(), в противном случае выполнение кода гарантированно прервется ошибкой, информационное окно которой указанно на Рис.2.
Заполнение менеджера
На том же рисунке 1 указана строка, которая передает выборку во временную таблицу. Начинается она с оператора «Поместить». В качестве места назначения указывается имя таблицы-приемника.
Используя «Конструктор запроса» эту строку можно создать на закладке «Дополнительно» Рис.3.
Для этого необходимо:
- Установить переключатель «Тип запроса» в положение «Создание временной таблицы»;
- Указать имя приемника.
Если с помощью отладчика проверить последовательность заполнения менеджера, можно обнаружить, что данные в нем появятся только после исполнения метода запроса Выполнить().
Определить заполненость менеджера можно с помощью оператора Количество(). Пример строки: МВТ.Таблицы.Количество().
Чтение таблиц менеджера
Следующий этап работы – чтение данных из существующих таблиц в другом запросе. Здесь существует одна проблема: новый создаваемый запрос не знает о существовании заполненной таблицы, поэтому в окне «База данных» консоли она не появится.
Её необходимо прописывать и создавать вручную.
Для этого на закладке «Таблицы и поля» (Рис.4) необходимо выполнить некоторую последовательность действий:
- В меню окна «Таблицы» этой закладки необходимо нажать кнопку «Создать описание временной таблицы»;
- В открывшемся окне необходимо указать наименование поля и его описание (тип поля), как оно задано в существующей таблице;
- Необходимые поля или функции с ними нужно перенести в третье окно закладки.
Все время выполнения временные таблицы хранятся в оперативной памяти компьютера пользователя при файловом варианте работе или засоряют память сервера в клиент-серверном режиме до полного завершения работы функции или процедуры, вызвавшей менеджер. Большие объемы данных могут значительно снижать производительность даже не самого слабого железа.
Удаление таблиц
В общем случае опытные специалисты, для того, чтобы не сильно засорять память рекомендуют удалять временные таблицы сразу после их использования, если они больше нигде не будут вызываться.
Удаление таблиц из менеджера можно производить двумя основными способами:
- Указав непосредственно в тексте запроса ключевое слово Уничтожить;
- Использовав метод Закрыть(), примененный непосредственно к менеджеру.
Во втором случае будут принудительно уничтожены все таблицы, созданные различными запросами.
Использование первого варианта удаления данных можно прописать явно, записав в тексте запроса строку вида «Уничтожить ИмяТаблицы», либо воспользовавшись закладкой «Дополнительно» (Рис.2) окна «Конструктор запроса».
Переключив переключатель в положение «Уничтожение» и указав имя объекта, который необходимо удалить, Вы без проблем выполните это действие.
Передача таблицы значений (ТЗ) в запрос
Одно из наиболее частых направлений использования этого менеджера – передача в качестве одного из источников данных в запрос таблицы значений. Как известно, непосредственное использование этой коллекции в запросе в 1С не предусмотрено.
Для этого текст запроса должен содержать строку вида «Выбрать * Поместить МВТ из &Тз Как Таб» . Передав в качестве параметра «ТЗ» для запроса существующую таблицу значений мы получим объект, подходящий для дальнейшей обработки в других запросах.
Единственным условием, препятствующим передаче ТЗ в качестве параметра, являются неявно объявленные типы ее колонок. То есть при создании колонок ТЗ необходимо заполнять второй параметр строкой вида «Новый ОписаниеТипов(«»)).