При разработке отчетов и обработок в среде «1С:Предприятие» разработчики часто сталкиваются с ситуацией, когда созданная управляемая форма внешнего отчета (файла с расширением .erf) отказывается открываться в режиме обычного приложения. При попытке запустить файл через меню Файл — Открыть пользователь видит стандартное предупреждение безопасности платформы, однако после подтверждения интерактивно ничего не происходит — форма просто не выводится на экран.
Давайте подробно разберем, почему возникает эта проблема, проанализируем архитектурное ограничение платформы «1С:Предприятие» и рассмотрим четыре надежных способа обойти данную техническую преграду.
Главная причина, по которой управляемая форма внешнего отчета или внешней обработки не открывается в режиме обычного приложения, кроется в жестких внутренних правилах работы самой платформы «1С:Предприятие»:
Многие разработчики ошибочно полагают, что свойство конфигурации Использовать управляемые формы в обычном приложении должно решать эту проблему. Однако это не так. Данная настройка распространяется исключительно на те объекты метаданных, которые встроены непосредственно в саму конфигурацию (в дерево метаданных). На внешние файлы, открываемые динамически с диска, эта опция никак не влияет. Платформа просто игнорирует основную управляемую форму внешнего отчета, если сеанс запущен в режиме обычного приложения.
Ниже подробно рассмотрим практические варианты обхода этого ограничения, которые позволят вам успешно запустить отчет.
Это самый очевидный и простой способ заставить форму работать. Если отчет станет частью конфигурации, платформа начнет применять к нему свойство Использовать управляемые формы в обычном приложении.
Выполним следующие шаги для реализации этого метода:
Отчеты, нажмите правую кнопку мыши и выберите пункт Добавить.Важное примечание: Если вы не хотите снимать основную конфигурацию с поддержки, используйте Расширения конфигурации. Достаточно добавить новое расширение, создать в нем отчет с управляемой формой, и он будет отлично функционировать даже при работе пользователей в обычном приложении.
Если по условиям задачи отчет обязательно должен распространяться в виде внешнего файла (.erf), нам потребуется разработать универсальную структуру внутри самого отчета. Для этого мы создадим две формы.
Рассмотрим алгоритм настройки гибридного отчета:
При таком подходе платформа будет вести себя следующим образом:
Для продвинутых сценариев вы можете использовать программное перенаправление. Например, в модуле обычной формы при ее открытии можно проверять текущий режим работы и программно вызывать управляемую форму. Посмотрим на пример кода, который можно разместить в обработчике обычной формы:
Процедура ПриОткрытии()
// Проверяем, можем ли мы программно запустить управляемый интерфейс
Попытка
// Код для открытия управляемой формы в контексте текущего сеанса
ПараметрыФормы = Новый Структура;
ОткрытьФорму("ВнешнийОтчет.ИмяВашегоОтчета.Форма.ИмяУправляемойФормы", ПараметрыФормы);
// Закрываем текущую обычную форму, чтобы она не мешала
Отказ = Истина;
Исключение
// Если запуск невозможен, продолжаем работать в обычной форме
КонецПопытки;
КонецПроцедуры
Если ваша конфигурация является комплексной или постепенно переводится на управляемые формы, имеет смысл изменить режим работы самих пользователей. Вы можете принудительно запускать толстый клиент в режиме управляемого приложения.
Выполнить это можно следующими способами:
/RunModeManagedApplication.Управляемое приложение.После перевода сеанса в режим управляемого приложения любые внешние отчеты и обработки с управляемыми формами будут открываться напрямую без каких-либо предупреждений об архитектурных несоответствиях.
Если ваша информационная база разработана на базе БСП (Библиотеки стандартных подсистем), лучшим решением будет отказаться от прямого открытия файлов через Файл — Открыть.
Проанализируем этот сценарий:
Использование этого метода является наиболее безопасным и современным стандартом для разработки и поддержки расширений в корпоративных информационных системах на платформе «1С:Предприятие».