Разработка и Конфигурация · 12 мин
Как найти печатную форму в конфигураторе 1С
Как найти печатную форму в конфигураторе 1С: поиск макета в объекте, внешних печатных формах, общих макетах. Проверка результата и типичные ошибки.
Печатная форма в 1С — это макет (обычно табличный документ), по которому программа выводит документ на печать: счёт, акт, накладную, договор. Когда бухгалтер просит «поправить шапку счёта» или «добавить колонку в ТОРГ-12», первый шаг — найти нужный макет в конфигураторе. Проблема в том, что макетов в типовой конфигурации сотни, и искать нужную форму «на глаз» по дереву метаданных долго и ненадёжно.
Есть несколько рабочих способов поиска: через объект конфигурации (документ или справочник), через общие макеты, через глобальный поиск по тексту модулей и через механизм внешних печатных форм. Какой из них сработает, зависит от того, типовая это форма или подключённая извне, и от того, как реализована печать в конкретной конфигурации.
Ниже разобраны все основные сценарии: от простого поиска макета внутри документа до случаев, когда форма формируется программно без макета вообще. Инструкции применимы к конфигурациям на управляемых формах (Бухгалтерия 3.0, УТ 11, ERP, ЗУП 3.1) и к старым решениям на обычных формах.
Как устроена печать в 1С и где вообще живут макеты
Перед поиском полезно понимать, что печатная форма в 1С состоит из двух частей: макета (шаблон с областями, параметрами и оформлением) и программного кода, который заполняет этот макет данными. Макет сам по себе ничего не печатает — его обрабатывает процедура в модуле менеджера объекта, общем модуле или модуле обработки.
Макеты могут храниться в четырёх местах. Первое — внутри конкретного объекта метаданных: у документа «Реализация товаров и услуг» есть своя ветка «Макеты». Второе — в разделе «Общие → Общие макеты», куда выносят формы, используемые несколькими объектами. Третье — макеты обработок и отчётов, если печать реализована через них. Четвёртое — внешние печатные формы, которые хранятся не в конфигурации, а в информационной базе как файлы и подключаются через справочник «Дополнительные отчеты и обработки».
Способ 1. Поиск макета внутри документа или справочника
Самый частый случай: нужно найти форму, которая печатается из конкретного документа. Откройте конфигуратор, разверните дерево конфигурации (меню «Конфигурация → Открыть конфигурацию»), найдите нужный объект — например, «Документы → СчетНаОплатуПокупателю». Раскройте его и перейдите в ветку «Макеты».
Внутри вы увидите список макетов с говорящими именами: «МакетСчета», «МакетАкта», «ТОРГ12» и т.п. Двойной клик открывает макет в редакторе табличного документа. Чтобы убедиться, что это именно та форма, сравните структуру областей с тем, что видит пользователь на печати: названия колонок, расположение шапки, наличие подписей.
Если макетов несколько и непонятно, какой используется, откройте модуль менеджера объекта (правый клик по объекту → «Открыть модуль менеджера») и найдите процедуру «Печать» или «ДобавитьКомандыПечати». В ней видно, какой макет вызывается для каждой команды печати — обычно через ПолучитьМакет("ИмяМакета") или УправлениеПечатью.СведенияОПечатнойФорме.
- 1Откройте конфигуратор и дерево конфигурации
- 2Найдите нужный документ или справочник, раскройте ветку «Макеты»
- 3Откройте модуль менеджера и найдите процедуру печати
- 4Сопоставьте имя команды печати с именем макета в коде
- 5Откройте найденный макет и сверьте области с реальной распечаткой
Способ 2. Поиск через общие макеты
В типовых конфигурациях, особенно на Библиотеке стандартных подсистем, часть форм вынесена в «Общие → Общие макеты». Там лежат макеты, которые используются сразу несколькими объектами: типовые формы по ОКУД (ТОРГ-12, ТТН, счёт-фактура), служебные шаблоны, макеты для обмена.
Откройте ветку «Общие → Общие макеты» и пролистайте список. Имена обычно соответствуют форме: «МакетТОРГ12», «СчетФактура1137». Если список большой, используйте поиск по дереву метаданных: правый клик по корню конфигурации → «Поиск» или сочетание Ctrl+F в окне конфигурации с фильтром по имени.
Признак того, что форма берётся из общего макета: в модуле печати встречается вызов ПолучитьОбщийМакет("ИмяМакета"). Найдите этот вызов глобальным поиском — и вы точно узнаете имя нужного макета.
Способ 3. Глобальный поиск по коду — самый надёжный путь
Когда неизвестно, где лежит макет, эффективнее идти от кода. Нажмите Ctrl+Shift+F («Правка → Глобальный поиск») и ищите по ключевым словам. Хорошие зацепки: текст кнопки печати, которую нажимает пользователь («Счет на оплату», «Акт выполненных работ»), имя команды печати, фрагменты вроде «ДобавитьКомандуПечати» или «ПолучитьМакет».
Например, поиск по строке «Счет на оплату» покажет все модули, где встречается это представление команды. Открыв найденное место, вы увидите идентификатор команды и процедуру формирования, а из неё — имя макета. Этот способ работает даже когда макет лежит в неочевидном общем модуле или формируется обработкой.
Ищите не по имени макета, а по представлению команды печати, которое видит пользователь в меню «Печать». Имена макетов в типовых часто не совпадают с названиями кнопок: кнопка «Счет на оплату» может использовать макет «МакетСчетаЗаказа», и догадаться об этом без чтения кода невозможно.
Способ 4. Когда форма — внешняя печатная обработка
Если в конфигурации макет не находится, а форма при этом печатается — скорее всего, подключена внешняя печатная форма. Она хранится не в метаданных, а в базе: «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки» (в режиме Предприятия). Там видно список подключённых файлов .epf и объекты, к которым они привязаны.
Чтобы открыть такую форму в конфигураторе, сохраните файл обработки из справочника на диск (команда «Выгрузить в файл») и откройте его через «Файл → Открыть». Внутри обработки — обычная структура: макеты в ветке «Макеты», код формирования в модуле объекта, функция «СведенияОВнешнейОбработке» с регистрацией команд печати.
Учтите важное ограничение: внешние печатные формы при обновлении конфигурации не затираются, но могут перестать работать, если в типовой конфигурации изменились имена реквизитов или процедур. Поэтому после обновления релиза их стоит проверять в первую очередь.
Способ 5. Форма формируется программно, без макета
Иногда макета не существует в принципе: табличный документ строится целиком кодом — построчно, через ТабличныйДокумент.Вывести() с областями, созданными на лету, или через построитель отчёта. Признак — в процедуре печати нет вызовов ПолучитьМакет, но есть прямые обращения к ячейкам результирующего документа.
В этом случае «найти печатную форму» означает найти процедуру формирования. Ищите глобальным поиском по имени команды печати или по обработчику ОбработкаКомандыПечати. Все изменения такой формы делаются только в коде — это трудоёмко, и для серьёзных правок часто проще создать отдельный макет и переписать формирование на него.
Как проверить, что найдена именно та форма
Самый быстрый тест: внесите в найденный макет безобидную пометку (например, пробел или символ в скрытой области — лучше в копии базы) и распечатайте документ. Если пометка появилась на печати — макет тот. Второй способ: поставьте точку останова в процедуре печати в отладчике и пройдите выполнение по шагам — вы увидите, какой макет загружается и какие области выводятся.
Ещё один признак — совпадение областей. Откройте макет и сравните имена областей («Шапка», «СтрокаТаблицы», «Подвал») с логикой заполнения в коде: процедура печати должна получать именно эти области через Макет.ПолучитьОбласть("Шапка").
Как проверить результат
Тестовый символ появился на распечатке документа
Печать не изменилась — редактируется не тот макет или подключена внешняя форма
В процедуре печати есть ПолучитьМакет с именем найденного макета
Макет нигде не вызывается — форма формируется иначе
Точка останова в процедуре печати срабатывает при нажатии кнопки
Отладка не останавливается — печать идёт через другую команду или обработку
Типичные ошибки при поиске печатных форм
Самая распространённая ошибка — правка первого попавшегося макета с похожим именем. В типовых конфигурациях бывает несколько макетов одной формы: для разных видов операций, для печати с НДС и без, устаревшие версии, оставшиеся после обновлений. Итог: правки внесены, а на печати ничего не изменилось.
Вторая ошибка — игнорирование внешних печатных форм. Разработчик правит типовой макет, а пользователи продолжают печатать через подключённую обработку, потому что в списке команд печати внешняя форма стоит выше или типовая команда отключена. Всегда проверяйте справочник дополнительных отчётов и обработок до начала правок.
Третья ошибка — поиск только в макетах документа. В конфигурациях на БСП печать централизована: макет может лежать в общих макетах, а логика — в общем модуле «УправлениеПечатьюПереопределяемый» или модуле менеджера печати объекта. Ограничивать поиск одной веткой метаданных — значит почти гарантированно пропустить нужное место.
Что выбрать для правок: типовой макет, расширение или внешнюю форму
Если правка небольшая и база небольшая, допустимо изменить типовой макет — но заранее оцените цену снятия с поддержки. Если конфигурация регулярно обновляется, безопаснее расширение конфигурации: оно позволяет заимствовать и переопределять объекты, не трогая основную конфигурацию. Если нужна отдельная форма для конкретного подразделения или клиента — оптимальна внешняя печатная форма: она подключается без изменения конфигурации и переживает обновления.
Сравнение вариантов доработки формы
Быстро, но снимает объект с поддержки и усложняет обновления. Подходит для баз без регулярных обновлений.
Не затрагивает основную конфигурацию, обновления сохраняются. Требует аккуратности при изменении типовых объектов в новых релизах.
Подключается без изменения конфигурации вообще. Ограничение: работает только в конфигурациях с подсистемой дополнительных отчётов и обработок.
Что важно запомнить
Начинайте поиск с макетов объекта и модуля менеджера, при неудаче — с глобального поиска по представлению команды печати. Обязательно проверяйте общие макеты и подключённые внешние печатные формы. Перед правками сделайте копию базы и по возможности используйте расширение или внешнюю форму вместо изменения типового макета.
Частые вопросы
Почему я изменил макет, а на печати ничего не поменялось?
Чаще всего используется другой макет: одноимённый в общих макетах, другой макет того же объекта или внешняя печатная форма. Проверьте в модуле менеджера, какой именно макет вызывается, и загляните в справочник дополнительных отчётов и обработок в режиме Предприятия.
Можно ли найти печатную форму без доступа к конфигуратору?
Частично. В режиме Предприятия видно подключённые внешние печатные формы и можно выгрузить их файлы. Но типовые макеты, встроенные в конфигурацию, доступны только через конфигуратор — для их просмотра и правки нужны соответствующие права.
Где искать печатную форму в конфигурации на обычных формах (например, УТ 10.3)?
Логика та же: макеты лежат в ветке «Макеты» документа, а процедура печати — в модуле объекта, обычно в функциях «Печать» и «ПечатьИмяФормы». Внешние формы там подключаются через справочник «Внешние обработки» с типом «Печатная форма».
Что делать, если макета нет нигде, но форма печатается?
Значит, табличный документ строится программно. Найдите глобальным поиском процедуру, связанную с командой печати, и смотрите, как формируется результат. Все изменения такой формы выполняются только правкой кода.
Снимется ли конфигурация с поддержки, если я изменю макет?
Да, изменение типового макета при полной поддержке приводит к снятию объекта с поддержки — обновления этого объекта перестанут устанавливаться автоматически. Чтобы этого избежать, используйте расширение конфигурации или внешнюю печатную форму.
Как понять, какая команда печати какой макет использует?
Откройте модуль менеджера объекта и найдите процедуру «ДобавитьКомандыПечати» — там перечислены команды с их идентификаторами и представлениями. Затем в процедуре «Печать» по идентификатору команды видно, какой макет и какие области выводятся.