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

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

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

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

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

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

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

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

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

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

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

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

Построение единого информационного пространства финансовой службы;
Учет ...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

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

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

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

- Разработка подсистемы оперативного учета транзакций...

ООО «ЛукБелОйл»
ООО «ЛукБелОйл»

Отрасль:
Нефтегазовая отрасль

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

- Обследовании бизнес-процессов «Документооборот», «Казначейство и Бюджети...

ООО ХДМ Рус
ООО ХДМ Рус

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

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

Управление цепочками поставок Оптовая торговля ...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

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

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

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

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