Как из общего макета создать внешнюю печатную форму в 1С:УПП

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

При ведении учета нескольких организаций в единой информационной базе 1С:Управление производственным предприятием (УПП 1.3) часто возникает задача настроить индивидуальный состав подписей или видоизменить унифицированную форму для конкретного юридического лица. Например, требуется скорректировать форму М-11 (Требование-накладная).

Разберем, можно ли сгенерировать внешнюю печатную форму (ВПФ) непосредственно из макета конфигурации, как правильно перенести общий макет в обработку и существует ли штатный способ решить проблему без доработки кода.

Штатная альтернатива: настройка ответственных лиц без программирования

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

В типовой 1С:УПП механизм заполнения подписантов работает через периодический регистр сведений:

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

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

Принцип создания внешней печатной формы на основе общего макета

Платформа 1С:Предприятие не содержит встроенного механизма «конвертации» макета в обработку одной кнопкой. Создать объект конфигурации напрямую из ветки общих макетов невозможно. Однако архитектура ВПФ позволяет полностью изолировать доработку:

  1. Создается новая внешняя обработка (файл с расширением .epf).
  2. Общий макет из дерева конфигурации копируется в состав макетов созданной внешней обработки.
  3. В модуль объекта обработки переносится и адаптируется алгоритм формирования печатного документа.

Рассмотрим весь процесс по шагам.

Шаг 1. Создание каркаса внешней обработки

Откроем конфигуратор и выполним следующие действия:

  1. Через меню Файл → Новый выберем «Внешняя обработка». Зададим понятное имя, например, ВПФ_ТребованиеНакладная_М11.
  2. Добавим в обработку реквизит с именем СсылкаНаОбъект. Установим тип реквизита: ДокументСсылка.ТребованиеНакладная (или составной тип, если форма применяется к нескольким документам). Именно через этот реквизит типовой механизм печати УПП передает ссылку на текущий документ.
  3. В дереве конфигурации раскроем ветку Общие → Общие макеты, найдем типовой макет ФормаМ11, скопируем его и вставим в ветку «Макеты» нашей внешней обработки.
  4. Внесем необходимые визуальные корректировки в скопированный макет (изменим текстовые поля подписей, должности, расшифровки). Исходный макет конфигурации при этом останется нетронутым.

Шаг 2. Разработка модуля объекта

Откроем модуль объекта внешней обработки. Основной точкой входа для формирования печатного документа в обычных формах УПП является экспортная функция Печать(). Она не должна принимать параметров и обязана возвращать сформированный ТабличныйДокумент.

Посмотрим на базовую структуру программного кода модуля объекта:


Функция Печать() Экспорт

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладная_М11";

    // Получаем макет из состава самой внешней обработки
    Макет = ЭтотОбъект.ПолучитьМакет("ФормаМ11");

    // Формируем печатную форму на основании переданной ссылки
    Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
        СформироватьПечатнуюФорму(ТабДокумент, Макет);
    КонецЕсли;

    Возврат ТабДокумент;

КонецФункции

Шаг 3. Адаптация алгоритма печати

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

  1. Обращение к макету: везде, где в типовом коде используется ПолучитьОбщийМакет("ФормаМ11"), заменяем вызов на локальный метод обработки: ПолучитьМакет("ФормаМ11").
  2. Контекст данных: типовой код внутри документа часто обращается напрямую к реквизитам через контекст ЭтотОбъект. Во внешней обработке все данные необходимо получать через реквизит СсылкаНаОбъект. Рекомендуется использовать запрос к реквизитам и табличным частям документа для оптимальной производительности.
  3. Локальные процедуры: если процедура печати обращается к неэкспортным служебным функциям модуля документа, их необходимо скопировать в модуль объекта внешней обработки. Вызовы процедур общих модулей с признаком «Экспорт» остаются без изменений.

Шаг 4. Регистрация внешней печатной формы в 1С:УПП

После сохранения файла .epf подключим его к информационной базе в режиме «1С:Предприятие»:

  1. Перейдем в раздел Сервис → Дополнительные отчеты и обработки → Внешние печатные формы.
  2. Создадим новый элемент справочника. Нажмем кнопку загрузки и выберем созданный файл обработки.
  3. В табличной части «Принадлежность печатной формы» добавим строку, укажем документ Требование-накладная.
  4. В поле «Заменяемая печатная форма» можно указать стандартную форму, если требуется полностью переопределить типовую печать, либо оставить поле пустым — тогда новая форма появится в выпадающем меню кнопки «Печать» отдельной строкой.

Важные ограничения и особенности платформы

При разработке и подключении ВПФ в среде 1С:УПП 1.3 обратим внимание на следующие нюансы:

  1. Безопасный режим: если при регистрации внешней обработки система запускает ее в безопасном режиме, в коде будут недоступны привилегированные операции, вызовы внешних COM-компонентов и прямая работа с файловой системой на стороне сервера.
  2. Обычные формы: конфигурация УПП 1.3 использует интерфейс обычных форм (толстый клиент). Механизмы БСП для управляемых форм (включая функцию СведенияОВнешнейОбработке()) типовым механизмом дополнительных обработок УПП не задействуются. Регистрация выполняется полностью через встроенный справочник «Внешние обработки».
← На главную