Как добавить таблицу со значениями в программу 1С? Инструкция
Многие программисты, которые только недавно начали работать в программной среде 1С, не умеют добавлять таблицу значений в запрос. Подобное отсутствие знаний может обернуться различными ошибками, чаще всего возникает такой неоптимальный алгоритм как «запрос в цикле». Грубо говоря, специалист, вместо того чтобы использовать табличную форму, создает цикл, где есть несколько запросов на все строки данных по отдельности. В данной небольшой статье будет подробно рассмотрена эта тема.
![]()
Лучший способ объяснить — это показать действия и их логику на простом и понятном для программиста примере. Итак, существует табличная форма документа или обработки со значениями, где есть список позиций номенклатуры. Цель программиста — узнать (и показать пользователю) остатки каждой номенклатурной позиции на складах.
Изначально таблица может быть сформирована либо в самом программном алгоритме, либо получена откуда-либо (является частью загруженного документа). В случае с программным созданием таблицы, обязательно нужно указать тип колонки.
Действия:
//создать таблицу значений
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить (“Номенклатура”, Новый ОписаниеТипов («СправочникССылка.Номенклатура”));
//заполнить таблицу
//НоваяСтрока = ТЗ.Добавить ();
//НоваяСтрока.Номенклатура = …;
Как видно, вид данных указывается вторым параметром и формируется через объект типа «ОписаниеТипов» с указанием значения - типа «СправочникСсылка.Номенклатура».
Теперь нужно сформировать запрос, используя команду «УстановитьПараметр»:
//таблицу в запрос, поиск остатков для таблицы
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ”
| ВнешняяТаблицаНоменклатуры.Номенклатура КАК Номенклатура
| ПОМЕСТИТЬ ВнешняяТаблицаНоменклатуры
| ИЗ
| &ВнешняяТаблицаНоменклатуры КАК ВнешняяТаблицаНоменклатуры
|;
|////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаНоменклатуры.Номенклатура,
| ТоварыНаСкладах.КоличествоОстаток
|ИЗ
| ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНкопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладах
| ПО ТаблицаНоменклатуры.Номенклатура = ТоварыНаСкладах.Номенклатура”;
Запрос.УстановитьПараметр (“ВнешняяТаблицаНоменклатуры”, ТЗ);
Результат = Запрос.Выполнить ();
//обработка результата запроса
Важно! Результат сформированной таблицы требуется перенести во временную таблицу, иначе возникнет ошибка «Ошибка при вызове метода контекста (Выполнить): Содержимое объекта данных может быть выбрано только во временную таблицу».
А затем подключить ее к регистру остатков с позициями номенклатуры.
В таком случае запрос отработает корректно и только по тем позициям, которые были переданы через таблицу значений.
Другие статьи
- Рост цен на программы и лицензии 1С в 2026 году
- Переход с УСН на ОСНО в 1С — пошаговая инструкция
- Как сдавать ЕФС-1 в 2025 году?
- Изменения в 2025 году
- Новый формат УПД: важные изменения с 1 августа 2025 года
- Как заполнить декларацию по НДС на упрощенке?
- Налоговая реформа — 2025: важное про УСН и НДС
- Налоговая реформа 2025 — считаем НДФЛ и получаем вычеты по-новому
- Налоговая реформа - 2025
- Как оприходовать товар в программе 1С версии 8.3? Инструкция