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