Разработка и Конфигурация · 10 мин
Как вывести таблицу в макете 1С
Как вывести таблицу в макете 1С: создание табличного документа, области, параметры, методы Вывести и Присоединить, примеры кода и типичные ошибки.
Вывод данных в макет — базовая задача при создании печатных форм и отчётов в 1С. Макет типа «Табличный документ» служит шаблоном: разработчик заранее размечает области, ячейки и параметры, а программный код заполняет их данными и формирует готовый документ для печати или просмотра.
Механизм одинаково работает в управляемых и обычных формах, вне зависимости от конфигурации — будь то «Управление торговлей», «Бухгалтерия» или самописное решение. Различия касаются только контекста вызова: на клиенте или на сервере.
Ниже разобран полный цикл: от создания макета в конфигураторе до вывода шапки, строк табличной части и подвала, а также проверка результата и типичные ошибки, из-за которых документ выводится пустым или с ошибками.
Создание макета табличного документа
Макет создаётся в конфигураторе. Откройте нужный объект (документ, справочник, обработку или отчёт), перейдите на вкладку «Макеты» и нажмите «Добавить». В мастере выберите тип «Табличный документ» и задайте имя, например «МакетПечати». Общие макеты для нескольких объектов создаются в ветке «Общие — Макеты».
После создания откроется редактор, внешне похожий на электронную таблицу. В ячейках вводится текст, оформление (шрифт, границы, цвет) настраивается через свойства ячейки или панель форматирования. Этот шаблон останется неизменным — данные в него подставятся программно.
Для печатных форм документов удобно пользоваться конструктором печати: меню «Конструкторы — Конструктор печати» автоматически создаст макет с областями «Шапка», «Строка» и «Подвал» и сгенерирует процедуру вывода. Её затем можно доработать вручную.
Разметка областей и параметров
Выделите строки, которые должны образовать область, и задайте имя через меню «Таблица — Имена — Назначить имя» либо в поле имени слева от строки формул. Стандартный набор для таблицы: «Шапка» (заголовки колонок), «Строка» (повторяющаяся строка данных), «Подвал» (итоги).
Чтобы ячейка принимала данные из кода, её содержимое оформляется как параметр: в свойстве ячейки «Заполнение» выберите «Параметр», а в тексте укажите имя в квадратных скобках, например [Номенклатура]. Если нужно вывести и текст, и параметр вместе («Товар: [Номенклатура]»), используйте заполнение «Шаблон».
Имена параметров чувствительны к регистру букв при обращении из кода и не должны содержать пробелов. Опечатка в имени — самая частая причина пустых ячеек в готовом документе.
Программный вывод: ПолучитьМакет, ПолучитьОбласть, Вывести
Вывод строится по одной схеме: создаётся объект «ТабличныйДокумент», из макета последовательно берутся области, их параметры заполняются данными, и области выводятся в документ. Пример для печати табличной части документа:
ТабДок = Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("МакетПечати");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Номер;
ОбластьШапка.Параметры.ДатаДокумента = Формат(Дата, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТЧ Из Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Метод Параметры.Заполнить() удобен тем, что автоматически сопоставляет параметры макета с одноимёнными полями источника данных — строки табличной части или выборки запроса. Это сокращает код и снижает риск рассинхронизации имён.
Если макет общий, его получают иначе: ПолучитьОбщийМакет("ИмяМакета"). В модуле менеджера объекта макет получают через Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати").
- 1Создайте макет типа «Табличный документ» у объекта или в общих макетах
- 2Разметьте области «Шапка», «Строка», «Подвал» и задайте параметры ячеек
- 3В коде создайте ТабличныйДокумент и получите макет через ПолучитьМакет()
- 4Получите области методом ПолучитьОбласть() и заполните параметры
- 5Выведите области методом Вывести(), строки — в цикле по данным
- 6Покажите результат методом Показать() или верните в печатную форму
Вывод колонок: метод Присоединить
Метод Вывести() добавляет область вниз. Когда таблица строится по горизонтали — например, колонки соответствуют датам или складам — используется Присоединить(): область добавляется справа от уже выведенного фрагмента.
ТабДок.Вывести(ОбластьШапкаСтрока);
Для Каждого Колонка Из Колонки Цикл
ОбластьЯчейка.Параметры.Значение = Колонка.Значение;
ТабДок.Присоединить(ОбластьЯчейка);
КонецЦикла;
Типовой сценарий: сначала выводится область с названием строки, затем в цикле присоединяются ячейки по каждой колонке. Важно, чтобы высота присоединяемой области совпадала с высотой уже выведенной, иначе строки «поедут».
Вывести или Присоединить
Добавляет область ниже. Подходит для строк таблицы, шапки, подвала — стандартный вертикальный вывод.
Добавляет область справа от последней выведенной. Нужен для динамического числа колонок: периоды, склады, точки.
Вставляет область внутрь существующего документа со сдвигом. Используется редко, для сложной перекрёстной компоновки.
Проверка результата и вывод на экран
После формирования документ показывают пользователю методом ТабДок.Показать("Печать документа") либо возвращают из функции печати в типовой подсистеме «Печать» (БСП), где вывод и предпросмотр выполняются автоматически.
Проверьте ключевые моменты: все параметры заполнены (нет пустых ячеек там, где должны быть данные), количество строк совпадает с табличной частью, итоги в подвале сходятся с суммой по строкам, при печати таблица не разрывается неудачно — для этого областям задают свойство «Повторять при печати» (шапка) и проверяют разрывы страниц.
Для отладки удобно выводить промежуточный ТабДок после каждого этапа: сначала только шапку, потом добавить строки. Так проще локализовать, на каком шаге теряются данные.
Как проверить результат
Все значения подставлены, пустых параметров нет
Пустые ячейки или текст [ИмяПараметра] в готовом документе
Строк в документе столько же, сколько в источнике данных
Строки дублируются или пропущены
Сумма по колонке равна итогу источника
Итог не сходится или равен нулю
Типичные ошибки и ограничения
Ошибка «Область не найдена» возникает, когда имя в ПолучитьОбласть() не совпадает с именованной областью макета — проверьте, что область назначена именно на строки, а не на отдельные ячейки. Пустые значения при корректном коде чаще всего означают, что ячейке задано заполнение «Текст» вместо «Параметр» или «Шаблон».
При работе в управляемом приложении формирование табличного документа выполняйте на сервере: объект «ТабличныйДокумент» и макеты недоступны в тонком клиентском контексте формы. Передавайте готовый документ на клиент для показа.
Учтите и ограничение производительности: при выводе тысяч строк табличный документ формируется заметно дольше и потребляет память. Для больших выгрузок рассмотрите построчную запись через объект «ЗаписьТабличногоДокумента» или выгрузку в Excel.
Альтернативы: СКД и внешние печатные формы
Если задача — отчёт, а не строго регламентированная печатная форма, макет табличного документа часто избыточен. Система компоновки данных (СКД) строит таблицу по запросу без ручного вывода областей и даёт пользователю настройки группировок и отборов.
Для печатных форм, которые нужно менять без доработки конфигурации, подходят внешние печатные формы (для конфигураций на БСП) — обработка с экспортной функцией Печать(), возвращающей табличный документ. Шаблоны Word и Excel также поддерживаются как тип макета, если документ должен открываться в офисном пакете для ручной правки.
Что важно запомнить
Вывод таблицы в макет — это цикл «макет → область → параметры → Вывести()». Корректные имена областей и параметров, заполнение «Параметр»/«Шаблон» у ячеек и серверный контекст выполнения решают 90% проблем с пустым или ошибочным результатом.
Частые вопросы
Как вывести номер строки в макете?
Добавьте в область «Строка» параметр [НомерСтроки] и в цикле присваивайте его вручную через переменную-счётчик либо используйте свойство СтрокаТЧ.НомерСтроки табличной части — метод Параметры.Заполнить() подхватит его автоматически.
Почему в готовом документе виден текст [ИмяПараметра]?
Ячейке задано заполнение «Текст», и платформа воспринимает скобки как обычную надпись. Откройте свойства ячейки в макете и смените «Заполнение» на «Параметр» или «Шаблон».
Как повторять шапку таблицы на каждой странице?
Выделите строки шапки в готовом табличном документе или задайте в макете свойство области: «Таблица — Настройка печати — Повторять при печати». Программно это свойство ПовторятьПриПечатиСтроки у объекта ТабличныйДокумент.
Можно ли вывести макет в управляемой форме?
Да, но формирование выполняется в серверной процедуре, а готовый ТабличныйДокумент передаётся на клиент и показывается через Показать() или помещается в реквизит формы типа «ТабличныйДокумент».
Чем макет табличного документа отличается от макета СКД?
Макет табличного документа — статичный шаблон с областями, который заполняется кодом вручную. Макет СКД описывает структуру отчёта для компоновщика: платформа сама выводит группировки и ресурсы по настройкам пользователя.
Как вывести таблицу без изменения конфигурации?
Используйте внешнюю печатную форму (внешнюю обработку с функцией Печать) или расширение конфигурации. Оба способа добавляют свой макет и код, не затрагивая типовую поставку и не мешая обновлениям.