27.10.2025 Дмитрий Коваль 1428
Обращение к таблице значений в программе 1С: ...

Содержание:

В платформе 1С: Предприятие 8.3 нередко встречается задача использовать ТаблицуЗначений как источник данных для запросов. Подобный подход позволяет сократить количество явных циклов в коде и повысить быстродействие за счёт оптимизации на стороне сервера СУБД. В этой инструкции поэтапно разберёмся, как сформировать, передать и использовать таблицу значений в запросах 1С.


1.    Руководство по созданию и заполнению таблицы значений в 1С для передачи данных в запросы


1.    Формирование ТаблицыЗначений и определение колонок


2.    Создаём экземпляр таблицы
МояТЗ = Новый ТаблицаЗначений;


3.    Описываем структуру столбцов
Обязательно указывать типы данных, чтобы избежать неявных преобразований при выполнении запросов:
МояТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
МояТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));


4.    Заполняем строки значениями
НоваяСтрока = МояТЗ.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0001");
НоваяСтрока.Количество = 10;
При необходимости можно добавить несколько строк в цикле или выборкой из другого источника.


5.    Передача таблицы значений в запрос через временную таблицу


2.    Интеграция таблицы значений в запросы 1С через временную таблицу


Чтобы обращаться к данным ТЗ из текста запроса, её передают во временную таблицу внутри контекста запроса:


1.    Создаём объект запроса и менеджер временных таблиц
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;


2.    Пишем SQL-текст для помещения данных
Запрос.Текст =
"ВЫБРАТЬ
*
ПОМЕСТИТЬ ВТ_МояТЗ
ИЗ
&ТЗ КАК ТЗ";


3.    Привязываем параметр и выполняем
Запрос.УстановитьПараметр("ТЗ", МояТЗ);
РезультатПломещения = Запрос.Выполнить();
После этого во внутреннем хранилище запроса появится временная таблица ВТ_МояТЗ.


4.    Объединение временной таблицы с регистрами или справочниками

Теперь можно строить основной запрос, используя ранее созданную ВТ_МояТЗ:

Запрос.Текст =
"ВЫБРАТЬ
ВТ_МояТЗ.Номенклатура КАК Товар,
Остатки.КоличествоОстаток КАК Остаток
ИЗ
ВТ_МояТЗ КАК ВТ_МояТЗ
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки() КАК Остатки
ПО
ВТ_МояТЗ.Номенклатура = Остатки.Номенклатура";
Результат = Запрос.Выполнить().Выбрать();

В результате мы получим набор строк с товаром из таблицы значений и соответствующими остатками по складам.


5.    Прямое использование ТаблицыЗначений в конструкторе запросов 


3.    Использование ПостроителяЗапроса для динамического формирования запросов в системе 1С

Вместо текстового SQL можно воспользоваться объектом-помощником ПостроительЗапроса:


1.    Инициализация построителя
ПострЗап = Новый ПостроительЗапроса;


2.    Указываем источник данных как таблицу значений
ПострЗап.ИсточникДанных = Новый ОписаниеИсточникаДанных(МояТЗ);


3.    Задаём условие отбора
Отбор = ПострЗап.Отбор.Добавить("Номенклатура");
Отбор.Значение = Справочники.Номенклатура.НайтиПоКоду("0001");
Отбор.ВидСравнения = ВидСравнения.Равно;
Отбор.Использование = Истина;


4.    Выполняем и выгружаем результат
ПострЗап.Выполнить();
Результат = ПострЗап.Результат.Выгрузить();

Такой приём особенно удобен для динамического построения сложных фильтров без ручного конструирования текста.


Полезные советы и рекомендации

  • Явное указание типов столбцов убережёт от ошибок при сравнении или агрегации данных разных типов.
  • Избегайте больших объёмов в ТаблицеЗначений, если данных слишком много — лучше загрузить их в обычную базовую таблицу или регистр.
  • Именуйте временные таблицы осмысленно, чтобы в сложных запросах не запутаться в алиасах.
  • Закрывайте соединение с запросом, если вы создаёте и уничтожаете объекты в цикле, чтобы не расходовать память.


С помощью описанных приёмов вы сможете гибко и быстро обрабатывать наборы данных, используя встроенные возможности платформы 1С: Предприятие 8.3.


Специалист компании ООО "Кодерлайн"

Дмитрий Коваль

Наши проекты

ООО "ОМЗ"
ООО "ОМЗ"

Отрасль:
Металлургическая промышленность, металлообработка

Внедренное типовое решение:
1С:Управление производственным предприятием

Автоматизация бизнес-процессов...

ООО «Экслтрейд»
ООО «Экслтрейд»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

Внедрение блока расчета себестоимости РАУЗ в 1С:УПП 8
ООО «Пелигрин Матен»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление производственным предприятием

– Оформление заказов покупателей;
– Взаиморасчеты с покупателями;
– О...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-проце...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

Внедренное типовое решение:
1С:Бухгалтерия

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслев...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Управление производственным предприятием

- Внедрение функционала управления НСИ;
- Рефакторинг;
- Оптимизация общег...

Автоматизация подсистемы учета взаиморасчетов с агентами и интернет-магазинами на базе «1С:Управление холдингом 8»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

– Оформление заказов поставщикам;
– Управление отношениями с поставщика...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Управление холдингом 8

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение