Запуск печатной формы из расширения приводит к аварийному завершению 1С: как исправить проблему?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

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

Рассмотрим подробнее причины возникновения этой проблемы и разберем проверенные способы её решения.

Выясняем причины аварийного завершения 1С

Проанализируем ситуации, при которых 1С:Предприятие вылетает с ошибкой:

  1. Ошибка конкретного релиза платформы: В сборках платформы 1С:Предприятие 8.3.10 (в частности, 8.3.10.2580) при работе с заимствованными макетами табличных документов, входящими в состав обработок, существовала платформенная ошибка. При вызове печатной формы из заимствованной обработки платформа некорректно обращалась к внутренним объектам метаданных в сеансе сеансового кэша.
  2. Особенности заимствования объектов из обработок: В отличие от общих макетов, макеты внутри обработок при переносе в расширение требуют четкого соответствия контекста вызова. Если макет просто добавлен в расширение без изменения логики вызова в модуле менеджера, подсистема печати БСП (Библиотеки Стандартных Подсистем) не может корректно сопоставить путь к табличному документу.
  3. Конфликт режима объединения макетов: По умолчанию платформа пытаются объединить макет расширения с основным макетом конфигурации. Если структура табличного документа разнится, процесс rphost или тонкий клиент завершается со сбоем.

Решение 1. Обновление платформы 1С:Предприятие

Основная причина падения программы — зафиксированный баг платформы. Начиная с версии 8.3.10.2639 (и в более свежих релизах, таких как 8.3.10.2667 и выше), поведение платформы при работе с расширяемыми макетами обработок было полностью исправлено и стабилизировано.

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

  1. Обновите платформу 1С:Предприятие до актуального релиза.
  2. Очистите кэш сеансов на сервере и локальный кэш тонкого клиента на рабочем месте.
  3. Перезапустите службу 1С:Предприятия и проверьте формирование макета.

Решение 2. Обходной путь через добавление нового макета и перехват процедуры печати

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

Разберем алгоритм реализации по шагам:

  1. Перенесите обработку (например, ПечатьКадровыхПриказовРасширенная) в расширение конфигурации.
  2. Добавьте в эту обработку внутри расширения новый макет (скопировав содержимое типового макета ПФ_MXL_Т11) и дайте ему уникальное имя, например ПФ_MXL_Т11_МойВариант.
  3. Перенесите модуль менеджера этой обработки в расширение.
  4. В модуле менеджера перехватите процедуру формирования печатных форм с помощью аннотации &Вместо.
  5. В перехваченной процедуре укажите вызов созданного макета ПФ_MXL_Т11_МойВариант вместо стандартного.

Пример перехвата процедуры формирования печатной формы в модуле менеджера обработки:


&Вместо("Печать")
Процедура Расш1_Печать(МассивОбъектов, ПараметрыПечати, КомплектПечати, ОбъектыПечати, КоллекцияПечатныхФорм)
	// Вызываем нужный макет из расширения по новому имени
	Макет = ПолучитьМакет("ПФ_MXL_Т11_МойВариант");
	
	// Далее следует алгоритм заполнения макета
КонецПроцедуры

Решение 3. Изменение режима расширения макета на «Замещать»

В случаях, когда платформа падает из-за конфликта механизмов слияния макетов, можно явно отключить автоматическое объединение табличных документов:

  1. Откройте заимствованный макет в расширении в режиме Конфигуратора.
  2. В главном меню перейдите в раздел Таблица — Расширение.
  3. Смените режим работы макета с Объединять на Замещать.
  4. Сохраните конфигурацию базы данных и проверьте печать.

Альтернативные способы доработки печатных форм

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

  1. Редактирование макета в пользовательском режиме: В конфигурациях на базе БСП макеты можно редактировать напрямую в интерфейсе программы. Для этого перейдите в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм. Найдите нужную форму, нажмите кнопку «Изменить» и внесите необходимые правки текста или оформления.
  2. Создание внешней печатной формы (ВПФ): Сформируйте отдельную внешнюю печатную форму (файл .epf) и подключите её через механизм дополнительных отчетов и обработок. Этот подход полностью исключает риск падения платформы из-за расширений и не создает проблем при последующих обновлениях конфигурации.
← На главную