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

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

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

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

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

Чаще всего задача возникает при доработке печатных форм документов: нужно вывести дополнительный реквизит — например, артикул товара, скидку или комментарий. Важно понимать, что просто нарисовать ячейку недостаточно: колонка должна входить в область, которая выводится в коде, иначе данные не появятся. Ниже разобраны оба сценария с точными действиями и способами проверки результата.

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

Где находится макет и как его открыть

Макеты хранятся в дереве конфигурации. Для печатных форм документов макет обычно лежит в ветке конкретного документа: Документы → ИмяДокумента → Макеты. Общие макеты находятся в ветке Общие → Макеты, а макеты отчётов — внутри соответствующего отчёта.

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

Если макет не находится, посмотрите модуль менеджера объекта или общий модуль печати: в коде вызов вида ПолучитьМакет("ИмяМакета") укажет точное имя искомого макета.

Добавление колонки в конфигураторе

Основной сценарий — расширение существующей области макета. Колонка в 1С не существует отдельно от области: выделяемый в коде фрагмент (например, «ШапкаТаблицы» или «Строка») должен включать новый столбец, иначе он не выведется.

Порядок действий
  1. 1
    Откройте макет и найдите горизонтальную область, в которую нужно добавить колонку (шапка, строка, итог).
  2. 2
    Вставьте пустой столбец: щёлкните правой кнопкой по заголовку соседнего столбца и выберите «Вставить» или «Добавить справа/слева».
  3. 3
    Выделите новую колонку вместе с ячейками области и через меню «Таблица → Имена → Назначить имя» расширьте именованную область на новый диапазон либо пересоздайте её с увеличенной шириной.
  4. 4
    В ячейке шапки введите текст заголовка колонки, в ячейке строки данных задайте параметр через свойство «Заполнение» = «Параметр» и укажите имя параметра.
  5. 5
    Сохраните макет и обновите конфигурацию базы данных (F7).

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

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

Как назначить параметр для вывода данных

Ячейка с данными должна ссылаться на параметр области. Выделите ячейку, откройте палитру свойств, установите «Заполнение» в значение «Параметр», а в поле «Параметр» впишите имя, например Артикул. В тексте ячейки при этом обычно отображается [Артикул]. Если нужно вывести шаблон с текстом и значением, используйте заполнение «Шаблон» и конструкцию вида Арт.: [Артикул].

Программное добавление колонки

Когда макет формируется полностью из кода или нужно динамически менять число колонок, работают с объектом ТабличныйДокумент напрямую. Типовой приём — выводить области макета в цикле, а для переменного числа столбцов — собирать документ по частям, присоединяя области горизонтально методом Присоединить().

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

Метод Присоединить() добавляет область справа от уже выведенной — так строят отчёты с переменным числом колонок, например по месяцам или складам. При этом каждая присоединяемая область должна иметь одинаковую высоту с основной, иначе строки «поедут».

Для адресации конкретных ячеек без макета используйте обращение вида ТабДок.Область(\"R1C3\") — это позволяет записать текст или параметр в произвольную ячейку. Такой подход подходит для простых форм, но усложняет сопровождение: любые изменения структуры придётся править в коде.

Обновление кода вывода после добавления колонки

Добавленная в макет колонка с параметром не заполнится сама — значение нужно присвоить в коде. Найдите процедуру печати (обычно в модуле менеджера объекта или общем модуле) и добавьте строку присвоения параметра области.

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

Добавление колонки без изменения конфигурации

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

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

Сравнение вариантов

Правка макета в конфигураторе

Быстро и наглядно, но затрагивает типовой объект и усложняет обновление конфигурации.

Внешняя печатная форма

Не меняет конфигурацию, легко откатывается; требует дублирования логики печати и ручной актуализации.

Расширение конфигурации

Сохраняет поддержку типовой, но требует аккуратного заимствования объектов и проверки после обновлений.

Настройки СКД

Подходит только для отчётов; печатные формы документов так не доработать.

Проверка результата и типичные ошибки

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

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

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

Отображение колонки
Норма

Колонка видна в печатной форме с заголовком и данными

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

Колонки нет или она пустая при заполненных данных

Вход в область
Норма

Выделение области в макете захватывает новый столбец

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

Граница области обрывается перед новой колонкой

Предпросмотр печати
Норма

Вся таблица помещается на страницу

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

Колонка уходит за край листа или переносится на отдельную страницу

Часто задаваемые вопросы

Добавил колонку в макет, но в печатной форме её нет. Что не так?

Чаще всего новый столбец не входит в именованную область, которую выводит код. Выделите область в макете и убедитесь, что её граница охватывает новую колонку; при необходимости переназначьте имя на расширенный диапазон. Также проверьте, что программа выводит именно этот макет, а не другой с похожим именем.

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

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

Как вывести в новой колонке данные, которых нет в табличной части документа?

Добавьте нужное поле в запрос процедуры печати — например, реквизит справочника номенклатуры через точку от ссылки. Затем присвойте значение параметру области: ОбластьСтрока.Параметры.Артикул = Выборка.Артикул;. Убедитесь, что имя параметра в макете совпадает с именем в коде.

Что делать, если после добавления колонки таблица не помещается на лист?

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

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

Если макет изменён в типовом объекте, при обновлении он будет заменён на версию поставщика, если вы не отметите его вручную при сравнении и объединении. Чтобы не зависеть от этого, выносите доработки во внешнюю печатную форму или расширение конфигурации.

Итог

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

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