Почему внешняя печатная форма не работает в комплекте документов 1С:ERP после обновления?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← К списку

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

Причины возникновения проблем с внешними печатными формами после обновления

Прежде чем перейти к решениям, нам необходимо проанализировать основные причины, по которым ВПФ могут перестать работать:

  1. Изменения в БСП (Библиотеке стандартных подсистем): Разработчики 1С постоянно дорабатывают и оптимизируют БСП, которая является фундаментом для многих типовых механизмов, включая печать. Изменения в модулях, таких как ОбработкаТабличнойЧасти, или в механизме пакетной печати, могут привести к несовместимости со старыми ВПФ. Например, в одной из версий (2.5.22.67) были включены обновления БСП до версии 3.1.11.189, что могло существенно повлиять на логику работы.
  2. Изменения в механизме пакетной печати и работе с МенеджеромПечати: В новых версиях 1С:ERP разработчики могли изменить логику обращения к МенеджеруПечати. Для внешних печатных форм, которые по своей природе не являются частью типовой конфигурации, это может вызывать затруднения, так как система пытается найти "менеджера" для формы, которая не имеет его в стандартном понимании.
  3. Пересечение ИмяМакета: Каждая печатная форма, будь то внешняя или встроенная, имеет уникальное имя макета. Если ИмяМакета вашей ВПФ совпадает со штатным именем макета, это может привести к конфликтам и некорректной работе.
  4. Проблемы кэширования: Иногда система 1С кэширует старые данные и модули, что мешает корректному обновлению и работе новых механизмов.
  5. Некорректная передача параметров: Ошибки могут возникать из-за неправильной передачи параметров, например, СсылкаНаОбъект, в модуль внешней печатной формы.

Шаги по диагностике и решению проблемы

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

1. Обновление справочников метаданных и тестирование информационной базы

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

  1. Запуск обновления информационной базы:

    Мы можем попробовать запустить 1С с ключом командной строки /c ЗапуститьОбновлениеИнформационнойБазы. Для этого:

    • Закройте все сеансы 1С.
    • Откройте окно "Выполнить" (Win+R) или командную строку.
    • Введите путь к исполняемому файлу 1С (обычно C:\Program Files\1cv8\8.X.X.XXXX\bin\1cv8.exe) и добавьте параметры запуска в следующем формате:
      
      "C:\Program Files\1cv8\8.X.X.XXXX\bin\1cv8.exe" ENTERPRISE /F "ПутьКВашейБазе" /C ЗапуститьОбновлениеИнформационнойБазы
      

      Где 8.X.X.XXXX - это версия платформы, а "ПутьКВашейБазе" - это полный путь к каталогу вашей информационной базы.

    • Запустите 1С, дождитесь завершения процесса обновления.
  2. Тестирование и исправление информационной базы:

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

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

2. Обновление конфигурации до актуальной версии

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

3. Проверка ИмяМакета во внешних печатных формах

Как мы уже выяснили, конфликт имен макетов может быть причиной ошибки. Давайте удостоверимся, что ИмяМакета вашей ВПФ уникально и не пересекается со штатными макетами.

В коде вашей внешней печатной формы, в процедуре, отвечающей за добавление команды печати, вы увидите что-то похожее на:


ДобавитьКоманду(ТаблицаКоманд, "Название печатной формы", "ИмяМакета", "ВызовСерверногоМетода", Истина, "ПечатьMXL");

Мы должны убедиться, что значение параметра "ИмяМакета" является уникальным. Если есть подозрение, что оно совпадает со штатным, измените его, добавив префикс или суффикс (например, "ИмяМакета_Внешняя").

4. Анализ работы механизма пакетной печати и МенеджераПечати

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

Мы рекомендуем использовать отладчик, чтобы точно определить, в каком месте кода происходит ошибка при попытке обращения к МенеджеруПечати. Это поможет нам понять, какой именно объект или метод система не может найти для вашей ВПФ. Возможно, потребуется адаптация кода ВПФ под новые стандарты работы с печатью, если это не будет исправлено в будущих релизах 1С.

5. Работа с кэшем 1С

Если после всех манипуляций проблема сохраняется, возможно, дело в кэше. Мы можем очистить кэш 1С двумя способами:

  1. Через список баз:
    • Запустите 1С и в окне выбора баз выберите проблемную базу.
    • Нажмите кнопку "Изменить".
    • На следующем шаге нажмите "Далее".
    • На последнем шаге измените путь к каталогу кэша (например, добавьте к нему "_old") или просто удалите базу из списка и добавьте ее заново.
  2. Вручную:
    • Закройте все сеансы 1С.
    • Перейдите в каталог %APPDATA%\1C\1CE\ и %LOCALAPPDATA%\1C\1CE\.
    • Найдите подкаталоги, имена которых похожи на GUID (глобальный уникальный идентификатор), и удалите их. Это удалит кэш для всех баз.

6. Ошибка "Печатная форма недоступна" и параметр СсылкаНаОбъект

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

Мы рекомендуем проверить и при необходимости изменить в модуле объекта вашей ВПФ передачу параметра СсылкаНаОбъект на МассивОбъектов. Например, если у вас было что-то вроде:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    // ...
    ПараметрыРегистрации.Вставить("СсылкаНаОбъект", Истина);
    // ...
    Возврат ПараметрыРегистрации;
КонецФункции

Мы можем попробовать заменить это на:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    // ...
    // Если форма работает с несколькими объектами или в режиме пакетной печати
    ПараметрыРегистрации.Вставить("МассивОбъектов", Истина); 
    // ...
    Возврат ПараметрыРегистрации;
КонецФункции

И соответственно, адаптировать код формирования печатной формы для работы с массивом объектов.

Что делать, если ничего не помогло?

Если вы прошли все вышеописанные шаги, но проблема с внешней печатной формой в комплекте документов 1С:ERP не решена, то мы переходим к следующим действиям:

  1. Обращение в поддержку 1С:

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

  2. Временное решение: Использование встроенных форм или адаптация:

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

  3. Модификация конфигурации через расширения:

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

Общие рекомендации по работе с внешними печатными формами в 1С:ERP

Для минимизации проблем в будущем, мы рекомендуем придерживаться следующих принципов при работе с ВПФ в 1С:ERP:

Мы рассмотрели целый комплекс причин и решений, связанных с некорректной работой внешних печатных форм в комплектах документов 1С:ERP после обновления. Надеемся, что эти рекомендации помогут вам успешно диагностировать и решить возникшие проблемы, а также предотвратить их появление в будущем.

← К списку