Разработка и Конфигурация · 10 мин
Как открыть форму внешней обработки в 1С 8
Как открыть форму внешней обработки в 1С 8.3: через меню Файл, программно из кода, в управляемом и обычном приложении. Разбор ошибок и ограничений безопасности.
Внешняя обработка в 1С 8 — это файл с расширением .epf, который хранится вне конфигурации и запускается пользователем или программно по мере необходимости. Такие файлы применяют для разовых операций: групповой загрузки данных, исправления документов, тестирования алгоритмов, выгрузки отчётов. Поскольку обработка не встроена в конфигурацию, открыть её привычным способом через меню разделов нельзя — нужен отдельный механизм.
Существует три основных способа открыть форму внешней обработки: интерактивно через меню «Файл — Открыть», программно из встроенного языка и через подключение к справочнику дополнительных отчётов и обработок. Выбор зависит от того, кто запускает файл — пользователь или разработчик, — и от того, работаете ли вы в управляемом приложении (таком режиме работают большинство современных конфигураций: Бухгалтерия, Управление торговлей, ЗУП) или в обычном.
Ниже разобраны все три способа с точными действиями, примерами кода, ограничениями безопасности и типичными ошибками, из-за которых форма не открывается или платформа выдаёт сообщение «Внешняя обработка не может быть прочитана текущей версией платформы».
Открытие через меню «Файл — Открыть»
Самый простой способ, доступный пользователю без знания программирования. В главном меню программы выберите «Файл», затем пункт «Открыть» или нажмите сочетание клавиш Ctrl+O. В диалоге выбора файла укажите тип «Внешние обработки (*.epf)», найдите нужный файл на диске и подтвердите открытие.
После этого платформа загрузит обработку и отобразит её основную форму — ту, которая назначена формой по умолчанию в самом файле. Если у обработки несколько форм, откроется именно основная; остальные доступны только программно или через кнопки внутри самой обработки.
Если обработка открывается часто, каждый раз искать её на диске неудобно. В этом случае файл лучше подключить через механизм дополнительных отчётов и обработок — тогда он появится в интерфейсе как обычный пункт меню.
- 1Откройте меню «Файл» и выберите «Открыть» или нажмите Ctrl+O
- 2В диалоге укажите тип файлов «Внешние обработки (*.epf)»
- 3Выберите файл обработки и нажмите «Открыть»
- 4При появлении предупреждения безопасности подтвердите запуск, если источнику файла доверяете
- 5Проверьте, что открылась основная форма обработки
Программное открытие в управляемом приложении
В управляемом приложении (режим «Тонкий клиент» с управляемыми формами) прямой вызов ПолучитьФорму() для внешней обработки недоступен без предварительного создания объекта. Стандартная последовательность выглядит так: сначала метод ВнешниеОбработки.Создать() загружает файл, затем у созданного объекта вызывается ПолучитьФорму() с именем нужной формы.
&НаКлиенте
Процедура ОткрытьОбработку(Команда)
// Имя файла без полного пути хранится в параметре
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПодключения", ЭтотОбъект);
НачатьПодключениеВнешнейОбработки(ОписаниеОповещения, "C:\Обработки\МояОбработка.epf");
КонецПроцедуры
&НаСервере
Функция ПолучитьФормуОбработки()
Обработка = ВнешниеОбработки.Создать("C:\Обработки\МояОбработка.epf", Ложь);
Возврат Обработка.ПолучитьФорму("Форма");
КонецФункцииОбратите внимание: ВнешниеОбработки.Создать() выполняется только на сервере, а открытие формы — на клиенте. Поэтому в типовых решениях получение формы и её открытие разделяют между серверной и клиентской процедурами. Второй параметр метода Создать() определяет безопасный режим: значение Истина запрещает обработке привилегированный режим и доступ к COM-объектам.
Если форма должна открываться модально или с передачей параметров, используйте метод ОткрытьФорму() с полным именем формы вида «ВнешняяОбработка.ИмяОбработки.Форма.ИмяФормы» — но такой синтаксис работает только для обработок, подключённых к базе, а не лежащих просто файлом на диске.
Открытие в обычном приложении
В обычном приложении (толстый клиент в режиме обычных форм) механика проще: внешнюю обработку можно создать и сразу получить её форму одним фрагментом кода, без разделения на клиент и сервер.
Обработка = ВнешниеОбработки.Создать("C:\Обработки\МояОбработка.epf");
Форма = Обработка.ПолучитьФорму("Форма");
Форма.Открыть();Если имя формы не указать, ПолучитьФорму() без параметров вернёт основную форму обработки, назначенную разработчиком файла. Метод ОткрытьМодально() вместо Открыть() блокирует работу с остальными окнами до закрытия формы — это удобно для диалогов выбора, но в управляемом приложении модальные вызовы запрещены по умолчанию.
Подключение через дополнительные отчёты и обработки
Для постоянного использования внешний файл регистрируют в подсистеме «Дополнительные отчеты и обработки» (в типовых конфигурациях — раздел «Администрирование», пункт «Печатные формы, отчеты и обработки»). После регистрации обработка появляется в списке и открывается обычным двойным щелчком, без поиска файла на диске.
Чтобы обработка корректно зарегистрировалась, в модуле объекта должна быть функция СведенияОВнешнейОбработке(), возвращающая структуру с видом, версией и командами. Обработки без этой функции подсистема БСП отклонит с сообщением о несоответствии формату.
После подключения форма дополнительной обработки открывается самой подсистемой: пользователю не нужно знать ни путь к файлу, ни имя формы. Это самый безопасный вариант для рядовых пользователей, поскольку доступ к конкретным командам настраивается правами.
Сравнение вариантов
Подходит для разового запуска и тестирования. Требует доступа к файлу на диске и подтверждения безопасности при каждом открытии.
Нужен при интеграции обработки в другие механизмы: кнопки, регламентные задания, цепочки операций. Требует прав разработчика.
Оптимально для постоянной работы пользователей: обработка видна в интерфейсе, доступ регулируется правами, файл хранится в базе.
Почему форма не открывается: типичные причины
Наиболее частая ошибка — сообщение «Внешняя обработка не может быть прочитана текущей версией платформы». Оно означает, что файл сохранён под более новую версию платформы, чем установлена у вас, либо файл повреждён. Решение — открыть обработку в конфигураторе нужной версии и пересохранить, либо запросить у автора совместимую сборку.
Вторая группа проблем связана с правами. Для интерактивного открытия внешних файлов пользователю нужно право «Интерактивное открытие внешних обработок», а при включённом профиле безопасности кластера сервер может блокировать запуск файлов из недоверенных каталогов. В этом случае появляется окно «Предупреждение безопасности», и если у пользователя нет права открывать обработки без предупреждений, запуск будет отклонён.
Третья причина — несовпадение типа формы. Обработка, у которой основная форма создана как обычная, в управляемом приложении откроется с ошибкой или пустым окном. Признак: файл исправно работает в толстом клиенте, но «молчит» в тонком. Лечится пересозданием формы как управляемой.
Безопасность при запуске внешних файлов
Внешняя обработка — это исполняемый код, который выполняется с правами текущего пользователя и может читать и изменять данные базы. Файл, полученный из непроверенного источника, способен удалить документы, выгрузить данные наружу или повредить справочники. Запускайте только обработки, происхождение которых вам известно.
Перед первым запуском новой обработки в рабочей базе выполните её в тестовой копии. Если обработка изменяет данные, а не только выводит отчёт, сделайте резервную копию или выгрузку информационной базы — откатить массовые изменения штатными средствами обычно невозможно.
Проверка результата
Признак успешного открытия — появление окна формы с элементами управления обработки. Если окно появилось, но кнопки не работают, проблема уже не в открытии формы, а в коде её команд: смотрите сообщения об ошибках в окне сообщений или журнале регистрации.
Как проверить результат
Появилось окно основной формы обработки
Ошибка чтения файла или предупреждение безопасности без возможности продолжить
Форма отображается, в журнале регистрации нет ошибок
Исключение «Метод объекта не обнаружен» или «Ошибка компоновки»
Команды выполняются, данные обрабатываются
Ошибки при вызове серверных процедур — обработка не адаптирована под управляемое приложение
Частые вопросы
Чем отличается файл .epf от .erf?
.epf — это готовая внешняя обработка, которую можно сразу открыть и запустить. .erf — файл выгрузки обработки из конфигуратора в формате для переноса и хранения исходников; для запуска его нужно сначала загрузить и сохранить как .epf.
Можно ли открыть внешнюю обработку в веб-клиенте?
Да, если конфигурация работает в режиме управляемого приложения и у обработки есть управляемая форма. Файл при этом должен быть доступен серверу 1С или подключён через механизм дополнительных обработок — выбрать произвольный файл с локального диска в браузере штатно нельзя.
Почему платформа пишет «не может быть прочитана текущей версией»?
Файл сохранён платформой более новой версии, чем та, под которой вы его открываете, либо повреждён при передаче. Попросите автора пересохранить обработку под вашу версию платформы или обновите платформу.
Как открыть не основную, а другую форму обработки?
Интерактивно — никак, через «Файл — Открыть» всегда открывается основная форма. Программно укажите имя нужной формы в методе ПолучитьФорму(\"ИмяФормы\") у созданного объекта обработки.
Нужны ли административные права для открытия обработки?
Полные права не обязательны, но нужно право «Интерактивное открытие внешних обработок» и, при включённой защите от опасных действий, подтверждение запуска. Сами действия внутри обработки выполняются с правами текущего пользователя.
Как запустить обработку автоматически по расписанию?
Через регламентное задание: файл загружается методом ВнешниеОбработки.Создать() на сервере, после чего вызывается его экспортная процедура. Формы в фоновом задании открыть нельзя — интерфейс там недоступен, работает только серверная логика.
Что важно запомнить
Разовый запуск — через «Файл — Открыть» (Ctrl+O), постоянная работа — через дополнительные отчёты и обработки, интеграция в код — через ВнешниеОбработки.Создать() на сервере с ПолучитьФорму(). Проверяйте совместимость версии платформы, тип формы и права, а неизвестные файлы запускайте только в копии базы.