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