Содержание:
1. Что такое менеджер временных таблиц?
2. Задача с штрихкодом номенклатуры
1. Что такое менеджер временных таблиц?
Давайте для начала разберемся, что такое менеджер временных таблиц (МВТ) и зачем он нужен. Что такое МВТ - этот объект позволяет передавать временные таблицы из запроса в запрос. То есть, мы можем создать временную таблицу в запросе, прерваться, выполнить какой-нибудь код, и продолжить работу с этой временной таблицей дальше. Менеджер временных таблиц нужен, если результат запроса нужно на какой-то небольшой промежуток времени сохранять и потом к этому результату делать ещё запросы.
И так с понятие что такое МВТ и для чего он нужен мы разобрали. Перейдем к практической задаче использования менеджера временных таблиц в 1С.
2. Задача с штрихкодом номенклатуры
Пример задачи: необходимо вывести данные обо всех товарах с соблюдением иерархии справочника Номенклатура. Для каждого товара мы хотим видеть соответствующий штрихкод.
Решение задачи:
· Шаг первый – создадим менеджер временных таблиц и поместим в него выборку штрихкодов номенклатуры
// Создадим объект МВТ
МенеджерВТ = Новый МенеджерВременныхТаблиц;
// Создадим объект типа запрос
Запрос = Новый Запрос;
// Инициализируем МВТ запроса объектом МВТ
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.Штрихкод
|ПОМЕСТИТЬ ВТ_Штрихкоды
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура";
// Сформируем инициализируем объект МВТ
Запрос.Выполнить();
Результатом первого шага и создания временной таблицы будут данные, выбранные запросом, помещаются во временную таблицу ВТ_Штрихкоды. Результат выполнения запроса включает одну колонку Количество, содержащую количество строк, помещенных во временную таблицу.
· Шаг второй – сформируем итоговый запрос с использованием менеджера временных таблиц в 1С 8.3.
// Создадим объект типа запрос
ЗапросИтог = Новый Запрос;
// Инициализируем МВТ запроса объектом МВТ
ЗапросИтог .МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Наименование КАК Наименование,
| ВТ_Штрихкоды.Штрихкод
|ИЗ
| Справочник.Номенклатура КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Штрихкоды КАК ВТ_Штрихкоды
| ПО (ВТ_Штрихкоды.Номенклатура = Товары.Ссылка)
|
|ГДЕ
| НЕ Товары.Услуга
|
|УПОРЯДОЧИТЬ ПО
| Наименование ИЕРАРХИЯ";
РезультатЗапроса = ЗапросИтог.Выполнить();
ВыборкаЗапроса = РезультатЗапроса.Выбрать();
Результатом второго шага будет объединение данных временной таблицы «ВТ_Штрихкоды» МВТ «МенеджерВТ» и данных выборки из справочника «Номенклатура» с соблюдением иерархии справочника. Результат выполнения представлен на рисунке 1.
Рисунок 1. Результат итогового запроса
Необходимо учитывать, что когда вы создали временные таблицы, они будут существовать в памяти компьютера до закрытия менеджера временных таблиц (автоматически или принудительно методом Закрыть()) или до срока исполнения запроса, связанного с этим менеджером, уничтожающего временную таблицу с помощью конструкции УНИЧТОЖИТЬ.
Заключение – использование МВТ дает мощный функционал для выполнения запроса на выборку данных в 1С.
Спасибо за внимание уважаемые коллеги.
Специалист компании «Кодерлайн»
Дмитрий Гречушкин