Почему не открывается управляемая форма внешнего отчета в 1С и как это исправить?

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

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

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

Выясняем причину: фундаментальное ограничение платформы

Главная причина, по которой управляемая форма внешнего отчета или внешней обработки не открывается в режиме обычного приложения, кроется в жестких внутренних правилах работы самой платформы «1С:Предприятие»:

  1. В режиме обычного приложения для внешних файлов (отчетов и обработок) платформа позволяет открывать только обычные формы.
  2. В режиме управляемого приложения для внешних объектов допускается открытие только управляемых форм.

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

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

Решение 1. Встраивание отчета в конфигурацию

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

Выполним следующие шаги для реализации этого метода:

  1. Откройте информационную базу в режиме Конфигуратор.
  2. Если конфигурация находится на поддержке, включите возможность изменения (или воспользуйтесь механизмом расширений, если версия вашей платформы это позволяет).
  3. В дереве метаданных найдите ветку Отчеты, нажмите правую кнопку мыши и выберите пункт Добавить.
  4. Перенесите схему компоновки данных, модули и формы из вашего внешнего отчета во вновь созданный объект конфигурации.
  5. Убедитесь, что в свойствах созданного отчета в качестве основной формы выбрана именно ваша управляемая форма.
  6. Обновите конфигурацию базы данных.

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

Решение 2. Создание двух форм (гибридный внешний отчет)

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

Рассмотрим алгоритм настройки гибридного отчета:

  1. Внешний отчет должен содержать две формы: одну обычную форму и одну управляемую форму.
  2. Назначьте обычную форму в качестве основной формы отчета.
  3. Управляемую форму оставьте в качестве дополнительной.

При таком подходе платформа будет вести себя следующим образом:

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


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

Решение 3. Изменение режима запуска сеанса 1С

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

Выполнить это можно следующими способами:

  1. В настройках запуска конкретной информационной базы в списке баз нажмите кнопку Изменить, перейдите на вкладку Дополнительно и в поле параметров запуска пропишите ключ: /RunModeManagedApplication.
  2. В конфигураторе в свойствах самой конфигурации (самый верхний элемент дерева метаданных) найдите свойство Основной режим запуска и установите значение Управляемое приложение.

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

Решение 4. Интеграция через справочник «Дополнительные отчеты и обработки»

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

Проанализируем этот сценарий:

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

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

← На главную