К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как добавить таблицу в макет 1С

Как добавить таблицу в макет 1С: создание макета табличного документа, области, параметры, заполнение из кода и вывод на печать. Примеры и типичные ошибки.

Макет в 1С — это шаблон, по которому программа формирует печатную форму или табличный документ. Таблица в макете задаёт структуру будущего документа: шапку с названиями колонок, строки с данными и итоговую часть. Работа ведётся в конфигураторе, а результат выводится либо на печать, либо в табличный документ на форме.

Чаще всего таблицу добавляют в макет типа «Табличный документ» — он подходит для счетов, актов, накладных и произвольных отчётов. Реже используют макет «Схема компоновки данных», где таблица собирается настройками без ручного рисования ячеек. Ниже разобран основной сценарий — табличный документ, а также программное заполнение и проверка результата.

Перед началом убедитесь, что у вас есть права на изменение конфигурации или возможность создать внешнюю печатную форму. Если конфигурация типовая и находится на поддержке, безопаснее работать через внешнюю обработку, чтобы не нарушить условия обновления.

Где создаётся макет и какие типы бывают

Макет создаётся в конфигураторе: откройте дерево конфигурации, найдите нужный объект (например, документ «РеализацияТоваровУслуг»), раскройте ветку «Макеты» и через контекстное меню выберите «Добавить». Также макеты бывают общими — в ветке «Общие → Макеты», если шаблон используется несколькими объектами.

При создании мастер предложит выбрать тип макета. Для таблицы с произвольным оформлением выбирайте «Табличный документ» — это редактор, похожий на электронную таблицу, где можно рисовать границы, объединять ячейки и задавать шрифты. Тип «Схема компоновки данных» подходит для отчётов, где структуру таблицы формирует сама система по настройкам.

Какой тип макета выбрать

Табличный документ

Полный контроль над оформлением: счета, акты, накладные. Требует ручного рисования областей и кода заполнения.

Схема компоновки данных

Отчёты с группировками и отборами. Таблица строится автоматически, но тонкая настройка внешнего вида ограничена.

HTML-документ

Редкий вариант для писем и веб-публикаций. Для печатных таблиц обычно не используется.

Как нарисовать таблицу в макете табличного документа

После создания макета откроется редактор, похожий на лист Excel. Выделите нужный диапазон ячеек и через меню «Таблица → Границы» (или панель инструментов) задайте видимые линии. Чтобы сделать заголовок колонки, введите текст в ячейку и при необходимости настройте шрифт, заливку и выравнивание через свойства ячейки.

Объединение ячеек делается через «Таблица → Объединить ячейки» — это нужно для шапки документа, где название организации занимает всю ширину таблицы. Ширину колонок меняйте перетаскиванием границ заголовков столбцов или через свойство «Ширина колонки».

Порядок создания таблицы в макете
  1. 1
    В конфигураторе откройте объект и добавьте макет типа «Табличный документ»
  2. 2
    Нарисуйте шапку таблицы: заголовки колонок, границы, шрифты
  3. 3
    Ниже добавьте строку-образец для данных с параметрами вместо текста
  4. 4
    Добавьте область итогов, если нужны суммы по таблице
  5. 5
    Сохраните макет и напишите код заполнения
  6. 6
    Сформируйте печатную форму и проверьте результат на реальных данных

Как разбить таблицу на области

Таблица в макете выводится не целиком, а по областям — именованным фрагментам, которые программа вставляет в нужном порядке. Типичный набор областей: «Шапка» (выводится один раз), «Строка» (выводится в цикле для каждой позиции) и «Подвал» с итогами.

Чтобы создать область, выделите строки таблицы и выберите «Таблица → Имена → Назначить имя» (или Ctrl+Shift+N). Имя области должно быть понятным — например, «ШапкаТаблицы» или «СтрокаТовара». Горизонтальные области удобны для строк, вертикальные — когда нужно выводить колонки порциями.

Ошибка на этом этапе — сделать одну большую область на всю таблицу. Тогда строки нельзя вывести в цикле, и макет придётся переделывать. Делите макет на области сразу, пока структура простая.

Как задать параметры в ячейках таблицы

Чтобы данные подставлялись из программы, в ячейках строки-образца укажите параметры. Откройте свойства ячейки (правый клик → «Свойства») и в поле «Заполнение» выберите «Параметр», а в поле «Текст» укажите имя параметра, например «Номенклатура» или «Сумма». Быстрый способ — вписать имя параметра в квадратных скобках прямо в текст ячейки: [Номенклатура].

Различайте три режима заполнения: «Текст» — фиксированная надпись, «Параметр» — значение подставляется из кода, «Шаблон» — смешанный текст с параметрами в квадратных скобках, например «Товар: [Номенклатура], артикул [Артикул]». Для колонок с данными почти всегда нужен режим «Параметр».

Для числовых колонок настройте формат через свойство «Формат» ячейки — например, вывод суммы с двумя знаками после запятой. Это избавит от необходимости форматировать числа в коде.

Как заполнить таблицу из кода

Заполнение выполняется в модуле менеджера объекта (процедура Печать) или в модуле внешней обработки. Логика стандартная: получить макет, получить области, заполнить параметры и вывести области в табличный документ.

Макет = ПолучитьМакет("МакетПечати");

ТабДок = Новый ТабличныйДокумент;

ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");

ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовара");

Для Каждого СтрокаТовара Из Товары Цикл

ОбластьСтрока.Параметры.Номенклатура = СтрокаТовара.Номенклатура;

ОбластьСтрока.Параметры.Сумма = СтрокаТовара.Сумма;

ТабДок.Вывести(ОбластьСтрока);

КонецЦикла;

Обратите внимание: область строки получается один раз до цикла, а внутри цикла только перезаполняются параметры и вызывается Вывести. Это быстрее и нагляднее, чем получать область на каждой итерации. Итоговые суммы считайте в переменной внутри цикла и подставляйте в область подвала после его завершения.

bsl
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовара");
Для Каждого Стр Из Товары Цикл
    ОбластьСтрока.Параметры.Заполнить(Стр);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

Если имена параметров в макете совпадают с именами полей выборки или строки табличной части, используйте метод Параметры.Заполнить() — он подставит все совпадающие значения одной строкой кода и сократит объём ручного перечисления.

Особенности для типовых конфигураций

В конфигурациях на БСП (Библиотека стандартных подсистем) — «Управление торговлей», «Бухгалтерия предприятия», «ERP» — печатные формы подключаются через механизм дополнительных отчётов и обработок. В этом случае макет размещается внутри внешней обработки, а код печати оформляется по шаблону с функцией СведенияОВнешнейОбработке и процедурой Печать.

Преимущество подхода: конфигурация остаётся на полной поддержке и обновляется штатно. Подключённая обработка появляется в меню «Печать» нужных документов. Изменение макета сводится к замене файла обработки, без доработки конфигурации.

Как проверить результат и исправить типичные проблемы

Сформируйте печатную форму на реальном документе с несколькими строками табличной части. Проверьте: шапка выводится один раз, строки идут в правильном порядке, итоги сходятся с данными документа, таблица не разрывается неудачно при переходе на новую страницу.

Для контроля разрывов страниц используйте метод ПроверитьВывод перед выводом области — он покажет, помещается ли область на текущей странице. Если нет, выведите горизонтальный разделитель страниц и повторите шапку таблицы, чтобы на каждой странице были заголовки колонок.

Контрольные точки

Как проверить результат

Вывод областей
Норма

Шапка один раз, строки по числу позиций, подвал с итогами в конце

Тревожный признак

Шапка повторяется после каждой строки или итоги выводятся до данных

Заполнение параметров
Норма

Все ячейки заполнены значениями из документа

Тревожный признак

Пустые ячейки или текст вида [ИмяПараметра] — параметр не задан или имя не совпадает

Разбивка на страницы
Норма

Строка не разрезается посередине, на новой странице повторяется шапка

Тревожный признак

Половина строки на одной странице, половина на другой

Типичные ошибки
01
Опечатка в имени области в ПолучитьОбласть — программа выдаёт ошибку или возвращает пустую область
02
Режим заполнения ячейки оставлен «Текст» вместо «Параметр» — данные не подставляются, в печати виден шаблонный текст
03
Получение области внутри цикла — лишние обращения к макету и замедление печати на больших документах
04
Итоги считаются по выведенным строкам, а не по данным документа — при отборах и фильтрации суммы расходятся
05
Изменение макета в типовой конфигурации напрямую — при обновлении доработка теряется или блокирует обновление

Частые вопросы

Можно ли добавить таблицу в макет без конфигуратора?

Нет, макеты редактируются только в конфигураторе или в редакторе внешней обработки. Пользователь в режиме «Предприятие» может изменить уже сформированный табличный документ перед печатью, если включён режим редактирования, но эти правки не сохраняются в макете.

Как вывести в таблице картинку, например логотип?

Добавьте в макет область с рисунком (меню «Таблица → Рисунки») или используйте объект «Картинка» в ячейке. Из кода картинку подставляют через свойство области: сначала получить рисунок из макета, затем присвоить ему значение типа Картинка, загруженное из файла или хранилища значений.

Почему параметр не заполняется, хотя имя указано верно?

Проверьте три вещи: режим заполнения ячейки должен быть «Параметр» или «Шаблон», имя параметра в макете должно совпадать с именем в коде посимвольно, а сама ячейка должна входить в выводимую область. Если параметр задан вне области, он не обрабатывается.

Как сделать разное количество колонок в разных строках таблицы?

Создайте несколько областей строк с разной структурой — например, «СтрокаОбычная» и «СтрокаГруппа». В коде выбирайте нужную область по условию. Альтернатива — объединять ячейки программно после вывода, но это усложняет поддержку макета.

Чем макет табличного документа отличается от макета СКД для таблицы?

В табличном документе вы рисуете каждую ячейку и управляете выводом кодом — это гибко, но трудоёмко. В СКД таблица строится автоматически по запросу и настройкам: пользователь может сам менять колонки и группировки, но точное оформление под форму с фиксированной структурой даётся сложнее.

Как повторять шапку таблицы на каждой странице при печати?

Используйте метод ПроверитьВывод перед выводом очередной строки: если строка не помещается, выведите горизонтальный разделитель страниц и повторно выведите область шапки. Для отчётов на СКД повторение заголовков настраивается в параметрах вывода без кода.

Итог

Что важно запомнить

Таблица в макете 1С создаётся в макете типа «Табличный документ»: рисуются ячейки, макет делится на области (шапка, строка, подвал), в ячейках задаются параметры, которые заполняются из кода через ПолучитьОбласть и Вывести. Для типовых конфигураций используйте внешние печатные формы, а результат всегда проверяйте на реальном многострочном документе.