Разработка и Конфигурация · 10 мин
Как вывести таблицу в 1С: рабочие способы с примерами
Практические способы вывести таблицу в 1С: через табличный документ, запрос, таблицу значений и СКД. Примеры кода, ошибки и проверка результата.
Вывод таблицы в 1С — одна из базовых задач разработчика и администратора. Под «вывести таблицу» обычно понимают одно из трёх действий: показать данные запроса в виде таблицы, сформировать печатную форму через табличный документ или вывести таблицу значений на форму. У каждого сценария свой инструмент и свой код.
Выбор способа зависит от цели. Если нужен печатный документ или файл Excel — используется табличный документ. Если требуется быстро посмотреть результат запроса — достаточно консоли запросов или метода Выбрать() с обходом в цикле. Если таблица должна быть интерактивной и редактируемой — выводится таблица значений на управляемую форму.
Ниже разобраны все основные варианты с готовыми фрагментами кода, типичными ошибками и способами проверки результата. Примеры написаны на встроенном языке 1С и работают в типовых конфигурациях на платформе 8.3.
Как выбрать способ вывода таблицы
Прежде чем писать код, определите, что должно получиться на выходе. От этого зависит вся архитектура решения. Один и тот же набор данных можно вывести четырьмя разными способами, и каждый имеет свои ограничения.
Сравнение вариантов
Печатные формы, сохранение в Excel/PDF, простые отчёты. Ограничение: не редактируется пользователем как данные, только просмотр и печать.
Интерактивный просмотр и редактирование данных пользователем. Ограничение: требует создания реквизита формы и элементов интерфейса.
Отчёты с группировками, отборами, настройками пользователем. Ограничение: сложнее в освоении, избыточна для простых списков.
Разовая проверка данных без написания кода. Ограничение: внешний инструмент, не встраивается в прикладное решение.
Если сомневаетесь — начните с табличного документа. Это самый универсальный вариант: результат можно показать на экране, распечатать и сохранить в файл без дополнительных настроек.
Вывод таблицы через табличный документ
Табличный документ — основной объект для формирования печатных форм и простых табличных отчётов. Данные выводятся либо напрямую через свойство Текст области, либо через заранее подготовленный макет с областями и параметрами.
Простой вывод без макета
Минимальный пример — вывод списка номенклатуры напрямую в ячейки табличного документа:
ТабДок = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Код КАК Код
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Строка = 1;
Пока Выборка.Следующий() Цикл
ТабДок.Область("R" + Строка + "C1").Текст = Выборка.Код;
ТабДок.Область("R" + Строка + "C2").Текст = Выборка.Наименование;
Строка = Строка + 1;
КонецЦикла;
ТабДок.Показать("Список номенклатуры");
Метод Показать() открывает документ пользователю в отдельном окне. Если формирование выполняется на сервере, табличный документ нужно вернуть на клиент — например, через реквизит формы типа «ТабличныйДокумент».
Вывод через макет с областями
Для аккуратных печатных форм создайте макет типа «Табличный документ» в конфигураторе, разметьте области «Шапка», «Строка», «Подвал» и заполняйте их параметрами:
Макет = ПолучитьМакет("МакетОтчета");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Пока Выборка.Следующий() Цикл
ОбластьСтрока.Параметры.Наименование = Выборка.Наименование;
ОбластьСтрока.Параметры.Код = Выборка.Код;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Преимущество макета — оформление (шрифты, границы, цвета) задаётся визуально в конфигураторе и не захламляет код. Изменение дизайна не требует правки алгоритма.
Как вывести результат запроса в таблицу
Запрос возвращает данные в виде объекта «РезультатЗапроса». Чтобы получить таблицу, примените метод Выгрузить() — он вернёт таблицу значений, которую можно передать на форму, в табличный документ или в СКД:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Ссылка КАК Товар,
| Товары.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Товары";
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
Для разовой проверки данных писать код не обязательно. Откройте консоль запросов (в типовых конфигурациях — через «Инструменты разработчика» или встроенную консоль в режиме толстого клиента), вставьте текст запроса и выполните его — результат отобразится в табличном виде автоматически.
Если запрос возвращает иерархические данные или итоги по группам, используйте Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) — тогда получится дерево значений вместо плоской таблицы.
Вывод таблицы значений на управляемую форму
Чтобы пользователь мог видеть и редактировать таблицу, её нужно разместить на форме. В конфигураторе добавьте реквизит формы типа «ТаблицаЗначений», опишите колонки и перетащите реквизит в дерево элементов формы — платформа создаст поле таблицы автоматически.
Программно заполнить такой реквизит можно прямым присваиванием:
// В модуле формы
ТаблицаНаФорме.Загрузить(Запрос.Выполнить().Выгрузить());
Если таблица создаётся полностью программно (динамически), потребуется добавить реквизиты через метод ИзменитьРеквизиты() и создать элементы формы кодом. Это более трудоёмкий путь, применяйте его только когда структура колонок заранее неизвестна.
Признак успешного вывода: таблица видна на форме, колонки имеют заголовки, данные доступны для прокрутки. Если таблица пустая — проверьте, не выполняется ли заполнение на клиенте, тогда как данные получены на сервере и не переданы обратно.
Вывод таблицы через СКД
Система компоновки данных подходит, когда пользователю нужны гибкие настройки: отборы, сортировки, группировки без доработки кода. Создайте схему компоновки с запросом, настройте ресурсы и поля, а вывод выполняется программно:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки,
КомпоновщикНастроек.Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ТабДок = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Результат СКД можно вывести не только в табличный документ, но и в таблицу значений — для этого используется ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений. Это удобно, когда дальше данные обрабатываются программно.
Для простого плоского списка СКД избыточна: тот же результат через табличный документ пишется быстрее и работает прозрачнее. Применяйте СКД там, где нужны настройки пользователя или сложные итоги.
Сохранение выведенной таблицы в файл
Табличный документ сохраняется в популярные форматы одним методом Записать():
ТабДок.Записать("C:\Отчеты\Список.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Отчеты\Список.pdf", ТипФайлаТабличногоДокумента.PDF);
Таблицу значений напрямую в Excel записать нельзя — сначала выведите её в табличный документ или используйте построитель отчёта. Альтернатива для обмена данными — сериализация через ЗначениеВСтрокуВнутр() или выгрузка в CSV построчно.
При сохранении в PDF учитывайте, что разбивка на страницы зависит от настроек области печати табличного документа. Проверьте результат визуально перед отправкой файла контрагенту.
Проверка результата и частые проблемы
Как проверить результат
Все строки выборки присутствуют, значения соответствуют запросу
Пустые ячейки или меньше строк, чем вернул запрос — проверяйте параметры макета и цикл обхода
Документ формируется за секунды
Формирование длится минутами — ограничьте выборку или перенесите в фоновое задание
Файл открывается, структура таблицы сохранена
Файл не создаётся — проверьте права на каталог и корректность пути
Если табличный документ сформирован, но пользователь его не видит, чаще всего причина в контексте выполнения: метод Показать() не работает на сервере и в фоновых заданиях. Возвращайте документ на клиент через реквизит формы или временное хранилище.
Что важно запомнить
Печатные формы и файлы — табличный документ с макетом, интерактивная таблица — таблица значений на форме, гибкие отчёты — СКД. Всегда ограничивайте объём выборки и проверяйте результат визуально перед передачей пользователям.
Частые вопросы
Как вывести таблицу в 1С без написания кода?
Используйте консоль запросов или универсальный отчёт в типовых конфигурациях: выберите источник данных, настройте поля и отборы — результат отобразится в табличном виде. Для справочников и документов также работает стандартная команда «Вывести список» из меню «Ещё» в форме списка.
Почему табличный документ формируется, но не открывается у пользователя?
Чаще всего код выполняется на сервере, где метод Показать() недоступен. Поместите документ в реквизит формы типа «ТабличныйДокумент» и добавьте на форму поле с видом «Поле табличного документа» — тогда результат отобразится автоматически.
Как вывести таблицу значений в Excel?
Напрямую — никак. Сначала перенесите данные в табличный документ (в цикле по строкам или через макет), затем вызовите метод Записать() с типом файла XLSX. Либо сформируйте отчёт через СКД и сохраните его результат.
Что быстрее: обход выборки запроса или выгрузка в таблицу значений?
Для простого вывода в табличный документ обход выборки через Выбрать() обычно экономнее по памяти, так как не создаёт промежуточную коллекцию. Выгрузка в таблицу значений оправдана, когда данные нужно сортировать, сворачивать или передавать между процедурами.
Как вывести в таблицу картинки или штрихкоды?
В макете табличного документа задайте ячейке тип «Картинка» и присвойте параметру значение типа «Картинка», полученное из хранилища значений или файла. Для штрихкодов используются специальные компоненты печати, подключаемые в типовых конфигурациях через общий макет.