Документы и Печать · 10 мин
Как в 1С добавить строку в печатную форму
Как добавить строку в печатную форму 1С: редактирование макета, добавление параметров, изменение кода модуля. Инструкция для типовых и самописных печатных форм.
Добавить строку в печатную форму 1С можно несколькими способами: через редактирование макета в конфигураторе, через механизм внешних печатных форм или через пользовательское изменение макета в режиме «Предприятие» (в конфигурациях на БСП). Выбор зависит от того, типовая у вас конфигурация или доработанная, есть ли у вас доступ к конфигуратору и нужно ли выводить просто статичный текст или данные из документа.
Строкой в печатной форме может быть как новая строка табличной части (например, дополнительная колонка или строка в таблице товаров), так и отдельная текстовая строка — подпись, комментарий, реквизит. Технически оба случая решаются через макет печатной формы: вы добавляете область или ячейку в макет, а затем при необходимости заполняете её параметром в коде.
Прежде чем вносить изменения, определите, как именно устроена печатная форма в вашей конфигурации. В типовых решениях («Управление торговлей», «Бухгалтерия предприятия», «ERP») печатные формы обычно построены на табличных макетах, а их вывод выполняется процедурами в общих модулях или модулях менеджеров документов. В старых или самописных конфигурациях макет может храниться прямо в документе.
Определите, как устроена печатная форма
Первый шаг — найти макет. Откройте конфигуратор и в дереве конфигурации найдите нужный документ или справочник. Макеты печатных форм обычно лежат в ветке «Макеты» объекта, в общих макетах (раздел «Общие» → «Макеты») или подключаются как внешние печатные формы через справочник «Дополнительные отчеты и обработки».
Быстрый способ найти нужный макет — выполнить глобальный поиск (Ctrl+Shift+F) по имени кнопки печати или по фрагменту текста, который виден в готовой печатной форме. Например, если на печати выводится фраза «Всего наименований», найдите её в конфигурации — так вы выйдете на процедуру формирования и на макет.
Обратите внимание на тип макета. Для печатных форм документов чаще всего используется табличный документ, реже — HTML-документ или макет СКД. Дальнейшая инструкция ориентирована на табличный макет, как наиболее распространённый вариант.
Требуется доступ к конфигуратору и, для типовых, режим поддержки с возможностью изменения
Меняется файл .epf, конфигурация не затрагивается
Редактируется через «Администрирование» → «Печатные формы, отчеты и обработки»
Добавьте строку в макет печатной формы
Откройте макет двойным щелчком. Макет табличного документа состоит из именованных областей (слева от таблицы видны их границы) и ячеек. Чтобы добавить новую строку, выделите строку, выше или ниже которой нужно вставить новую, кликните правой кнопкой и выберите «Вставить» → «Строки» (или используйте стандартные команды работы с таблицей).
Если строка должна выводиться многократно — например, вы расширяете область «Строка» табличной части — добавляйте ячейки внутрь существующей именованной области. Если нужна одиночная строка (подпись, примечание), удобнее создать новую именованную область: выделите строки, затем в меню «Таблица» → «Имена» → «Назначить имя» задайте понятное имя, например «ДопСтрока».
В ячейке, которая должна показывать данные, укажите тип заполнения. Откройте свойства ячейки (правый клик → «Свойства») и установите «Заполнение» = «Параметр», а в поле «Параметр» впишите имя, например «КомментарийКСтроке». Если текст статичный, оставьте заполнение «Текст» и просто введите нужную надпись.
Заполните новый параметр в коде
Добавление ячейки в макет — только половина задачи. Если в ячейке параметр, его нужно заполнить в коде, иначе на печати вы увидите пустое место или угловые скобки с именем параметра (в зависимости от настроек отображения). Найдите процедуру, которая формирует печатную форму — обычно она называется «Печать», «СформироватьПечатнуюФорму» или по имени формы.
Логика вывода строится так: из макета получают область, заполняют её параметры и выводят в результирующий табличный документ. Для новой области добавьте аналогичный блок кода:
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");
ОбластьДопСтрока = Макет.ПолучитьОбласть("ДопСтрока");
ОбластьДопСтрока.Параметры.КомментарийКСтроке = СсылкаНаДокумент.Комментарий;
ТабличныйДокумент.Вывести(ОбластьДопСтрока);
Если вы добавили ячейку в существующую область «Строка», отдельный вывод не нужен — достаточно в цикле обхода табличной части дописать заполнение нового параметра: ОбластьСтрока.Параметры.Артикул = СтрокаТовары.Номенклатура.Артикул;. Убедитесь, что запрашиваемое поле доступно в источнике данных: если печать формируется запросом, добавьте поле в текст запроса.
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовары Из ТаблицаТоваров Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТовары);
ОбластьСтрока.Параметры.Артикул = СтрокаТовары.Номенклатура.Артикул;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;Добавление строки без конфигуратора: внешняя и пользовательская печатная форма
Если конфигурация типовая и снимать её с поддержки нежелательно, используйте механизм внешних печатных форм. Создайте внешнюю обработку (.epf) со стандартной экспортной функцией «Печать» или сведениями о внешней обработке для БСП, скопируйте в неё макет типовой формы, добавьте строку и подключите обработку через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки».
В конфигурациях на библиотеке стандартных подсистем (БСП) доступен ещё более простой путь: в форме печати документа есть команда «Изменить макет» (или через «Администрирование» → «Печатные формы, отчеты и обработки» → «Макеты печатных форм»). Там можно добавить строку и статичный текст прямо в режиме «Предприятие». Ограничение: выводить можно только те параметры, которые уже предусмотрены в коде формирования печати, — новые параметры без доработки кода не появятся.
Сравнение вариантов
Полный контроль: любые строки и параметры. Минус — затрагивается конфигурация, усложняется обновление типовой
Конфигурация не меняется, обновления проходят штатно. Минус — нужно поддерживать обработку при смене структуры данных
Быстро и без программирования. Минус — только статичный текст и существующие параметры
Проверьте результат
После изменений обновите конфигурацию базы данных (F7), откройте документ в режиме «Предприятие» и сформируйте печатную форму. Проверьте три вещи: новая строка появилась на ожидаемом месте; параметр заполнен реальными данными, а не пустым значением или именем параметра; остальная форма не «поехала» — не сбились ширины колонок, итоги и нумерация строк.
Особое внимание уделите многостраничным документам. Если вы добавили строку в область, которая выводится в цикле, убедитесь, что при переносе на новую страницу шапка таблицы и итоги выводятся корректно. Для этого сформируйте печать документа с большим количеством строк.
Как проверить результат
Строка видна, данные соответствуют документу
Строки нет или выводится имя параметра в скобках
Выводятся данные из документа
Пустое значение при заполненном поле в документе
Итоги, нумерация и ширины колонок не изменились
Съехали колонки, пропали итоги или шапка таблицы
Переносы страниц корректны
Строки накладываются или шапка не повторяется
Типичные ошибки и ограничения
Самая частая ошибка — добавить ячейку с параметром в макет, но забыть заполнить параметр в коде. Вторая по популярности — изменить макет, который вообще не используется: в типовых конфигурациях печать может формироваться из общего макета или из макета в модуле менеджера, а не из макета документа. Всегда проверяйте путь к макету в процедуре печати.
Ещё одна группа проблем связана с областями: если вы вставили строку в середину именованной области, но область определена по строкам жёстко, новая строка может не попасть в неё. Перепроверьте границы областей после вставки — они отображаются в левой части редактора макета.
Частые вопросы
Можно ли добавить строку в печатную форму без программирования?
Да, если конфигурация построена на БСП: откройте «Администрирование» → «Печатные формы, отчеты и обработки» → «Макеты печатных форм», найдите нужный макет и отредактируйте его как таблицу. Так можно добавить статичный текст и переставить существующие параметры, но новые данные из документа без доработки кода вывести не получится.
Почему после добавления параметра на печати выводится его имя в угловых скобках?
Это признак того, что параметр объявлен в макете, но в коде ему не присвоено значение. Найдите процедуру формирования печатной формы и добавьте заполнение параметра через «Область.Параметры.ИмяПараметра = Значение».
Как добавить строку в табличную часть печатной формы, чтобы она повторялась для каждого товара?
Добавьте ячейку внутрь именованной области, которая выводится в цикле (обычно она называется «Строка»), задайте ей параметр и заполните этот параметр внутри цикла обхода табличной части. Отдельный вывод области для новой ячейки не требуется.
Что делать, если печатная форма — внешняя обработка (.epf)?
Откройте файл обработки в конфигураторе («Файл» → «Открыть»), измените макет и код в её модуле, сохраните и переподключите обработку в справочнике дополнительных отчетов и обработок. Конфигурация при этом не изменяется.
Сломается ли обновление конфигурации, если я изменю типовой макет?
Обновление не сломается, но изменённый объект может потребовать ручного сопоставления при обновлении, а при полной загрузке типовой конфигурации ваши изменения будут затёрты. Чтобы этого избежать, используйте внешние печатные формы или расширения конфигурации.
Как добавить строку, если печать построена на СКД или офисном макете (Word)?
Для макета Word откройте файл-шаблон, добавьте строку и поле, затем убедитесь, что соответствующие данные передаются из кода. Для СКД добавьте поле в набор данных и в настройки макета. Принцип тот же: изменение шаблона плюс передача данных из кода.
Что важно запомнить
Строка добавляется в два этапа: сначала область или ячейка в макете, затем заполнение параметра в коде. Для типовых конфигураций предпочтительны внешние печатные формы или пользовательские макеты — они не мешают обновлениям. Перед изменениями сделайте копию базы и проверяйте результат на документах с разным числом строк.