Что делать, если внешние печатные формы перестали работать после обновления 1С:Бухгалтерия до версии 3.0.142.56?

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

После обновления типовой конфигурации 1С:Бухгалтерия предприятия до релиза 3.0.142.56 многие специалисты столкнулись с неприятной ситуацией: внешние печатные формы (ВПФ), которые годами работали стабильно, просто перестали открываться. При этом при попытке запуска через меню «Печать» программа не выдает никаких ошибок — она просто игнорирует действие пользователя. Примечательно, что если открыть ту же самую обработку через «Файл — Открыть», она продолжает функционировать в режиме отладки.

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

Выясняем причину: почему старые механизмы регистрации больше не работают?

Проанализируем ситуацию. Основная причина кроется в обновлении механизмов безопасности и логики вызова внешних обработок в новых версиях БСП. В релизе 3.0.142.56 произошли изменения в том, как система интерпретирует параметры, возвращаемые функцией СведенияОВнешнейОбработке. В частности, усилился контроль за безопасным режимом и типами команд печати.

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


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.2");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма;
    ПараметрыРегистрации.Версия = "3.0.1";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима();
    ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
    
    ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
    
    КомандаПечати = ПараметрыРегистрации.Команды.Добавить();
    КомандаПечати.Идентификатор = "СчетЗаказКомплект";
    КомандаПечати.Представление = "Счет на оплату (по приказу)";
    КомандаПечати.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы;
    КомандаПечати.Модификатор = "ПечатьMXL";
    
    Возврат ПараметрыРегистрации;
КонецФункции

Проблема здесь заключается в сочетании использования ТипКомандыОткрытиеФормы и строгих правил БезопасныйРежим = Истина. В новых версиях конфигурации механизм печати ожидает строгого следования протоколам передачи табличного документа, и если форма просто «открывается», но не возвращает результат в стандартное окно печати, вызов блокируется.

Решение №1: Изменение типа команды на серверный вызов

Это самый эффективный и быстрый способ вернуть ВПФ к жизни. Мы перенаправим выполнение команды с простого открытия формы на вызов серверного метода, который является стандартным для современных версий БСП.

Выполним следующие шаги в модуле объекта внешней печатной формы:

  1. Найдем функцию СведенияОВнешнейОбработке.
  2. Заменим значение в строке КомандаПечати.Использование. Вместо ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы установим ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода.
  3. Если в вашей обработке используется запрос разрешений на привилегированный режим, который перестал проходить проверку, попробуем временно закомментировать эти строки для диагностики.

Посмотрим на исправленный фрагмент кода:


// Изменяем тип команды
КомандаПечати.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода;

// Если форма все равно не запускается, пробуем отключить разрешения
// Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима();
// ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

Важно: При использовании ВызовСерверногоМетода основная логика формирования печатной формы должна находиться в процедуре Печать() модуля объекта обработки. Убедитесь, что эта процедура описана правильно и принимает необходимые параметры (МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода).

Решение №2: Корректировка версии API БСП в параметрах регистрации

Разберем еще один нюанс. В коде регистрации часто встречается строка ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.2"). Указание версии "2.2.2.2" заставляет систему формировать структуру параметров старого образца.

Проанализируем ситуацию: если версия БСП в конфигурации значительно новее (а в 3.0.142.56 это именно так), старая структура может не содержать полей, необходимых для корректной работы механизмов безопасности.

Попробуем изменить инициализацию структуры:


// Вместо этого:
// ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.2");

// Используем вызов без параметров, чтобы получить актуальную структуру:
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

Это позволит системе автоматически подготовить набор полей, соответствующих текущей версии конфигурации, что часто снимает проблемы с «молчаливым» игнорированием запуска.

Решение №3: Управление безопасным режимом

Если ваша печатная форма обращается к файловой системе, внешним компонентам или выполняет сложные запросы к метаданным, параметр ПараметрыРегистрации.БезопасныйРежим = Истина может стать непреодолимым препятствием в новых релизах. В версии 3.0.142.56 контроль за выполнением кода в безопасном режиме стал более жестким.

Рассмотрим вариант решения проблемы через изменение режима безопасности:

  1. Установим ПараметрыРегистрации.БезопасныйРежим = Ложь;.
  2. После этого сохраним обработку и заново обновим её в справочнике «Дополнительные отчеты и обработки».
  3. При регистрации система выдаст предупреждение о безопасности — подтвердите его (потребуются права администратора).

Внимание! Отключение безопасного режима следует делать только для проверенных обработок, так как это дает коду ВПФ полные права в системе.

Решение №4: Очистка кэша регистрации

Иногда после обновления конфигурации 1С «запоминает» старые настройки регистрации внешних форм в своих внутренних кэшах. Даже если вы изменили код обработки, система может продолжать пытаться запустить её по старому алгоритму.

Выполним процедуру полной перерегистрации:

  1. Зайдем в раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.
  2. Найдем проблемную печатную форму и полностью удалим запись из справочника (а не просто обновим файл).
  3. Закроем сеанс 1С:Предприятие.
  4. Снова запустим программу и создадим новую запись в справочнике, выбрав исправленный файл обработки.
  5. Настроим размещение и права доступа заново.

Проверка совместимости платформы и патчей

Не забудем проверить техническую составляющую. Релиз БП 3.0.142.56 предъявляет определенные требования к платформе 1С:Предприятие. Несмотря на то, что версия 8.3.22.2239 считается стабильной, в ней были замечены специфические баги, связанные с отображением команд печати при использовании модификатора ПечатьMXL.

Проверим наличие установленных патчей (исправлений) в базе:

  1. Перейдем в Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи).
  2. Убедимся, что загружены все актуальные патчи для версии 3.0.142. 1С оперативно выпускает исправления для ошибок БСП, возникших сразу после выхода релиза. Если в списке есть патчи, касающиеся «Дополнительных отчетов и обработок», обязательно установите их.

Подводя итог, можно сказать, что в большинстве случаев проблема решается переходом на ТипКомандыВызовСерверногоМетода и актуализацией вызова функции СведенияОВнешнейОбработке. Эти изменения делают вашу печатную форму совместимой с новыми стандартами безопасности 1С.

← На главную