27.10.2025 Дмитрий Коваль 3047
Обращение к таблице значений в программе 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С:Бухгалтерия 8 ПРОФ

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

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

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

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

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

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

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

- Финансово-бухгалтерский блок
- Казначейство ...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

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

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

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

Подсистема казначейства
Модуль бюджетного контроля по ДДС ...

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

Отрасль:
Профессиональные услуги

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

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор ...

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

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

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

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

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– ...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» ...

ЗАО «Ламбумиз»
ЗАО «Ламбумиз»

Отрасль:
Производство картонной упаковки

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

- Маркетинг;
- Продажи;
- Планирование закупок;
- Закупки;
- Регламенти...

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

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

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

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