К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как открыть форму обработки в 1С: практические способы

Как открыть форму обработки в 1С: через меню, программно методами ОткрытьФорму и ПолучитьФорму, открытие внешних обработок, передача параметров, типичные ошибки.

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

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

Ниже разобраны все рабочие сценарии: открытие из меню «Файл», программный вызов с параметрами, работа с внешними обработками, а также проверка результата и типичные ошибки с пояснениями.

Как открыть обработку через интерфейс пользователя

Самый простой случай — обработка уже встроена в конфигурацию и выведена в интерфейс. Тогда она находится в подсистеме, которую определил разработчик: чаще всего это разделы «Администрирование», «Сервис» или специализированные разделы прикладного решения. Достаточно перейти в нужный раздел и щёлкнуть по команде.

Если обработка есть в конфигурации, но не выведена в интерфейс, воспользуйтесь командой «Все функции». В типовых конфигурациях она открывается через круглую кнопку меню в левом верхнем углу или сочетанием клавиш (зависит от настроек). В списке «Все функции» раскройте ветку «Обработки», найдите нужную и дважды щёлкните по ней — форма откроется.

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

Как открыть внешнюю обработку из файла

Внешняя обработка — это файл с расширением .epf, который не входит в состав конфигурации. Такие файлы распространяются отдельно: разработчиками, на порталах поддержки, внутри компании. Чтобы открыть её, не меняя конфигурацию, используется стандартное меню.

Порядок действий: откройте меню «Файл» → «Открыть» (или нажмите Ctrl+O), в диалоге выберите файл .epf и подтвердите открытие. Платформа загрузит обработку и покажет её основную форму. Если у обработки несколько форм, откроется та, что назначена основной в её настройках.

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

Как открыть форму обработки программно в управляемом приложении

В управляемом приложении используется глобальный метод ОткрытьФорму(). Минимальный вызов выглядит так:

ОткрытьФорму("Обработка.МояОбработка.Форма");

Строка имени формы строится по шаблону: Обработка.<ИмяОбработки>.Форма.<ИмяФормы>. Если имя формы не указано, откроется основная форма обработки. Имя обработки — это имя объекта метаданных в конфигураторе, а не заголовок, который видит пользователь.

Метод поддерживает передачу параметров, владельца формы и режима открытия. Например, открытие с параметром и блокировкой окна владельца:

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("Организация", ТекущаяОрганизация);

ОткрытьФорму("Обработка.МояОбработка.Форма",

ПараметрыФормы,

ЭтаФорма,

Новый УникальныйИдентификатор,

,

,

,

РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Переданные параметры доступны в модуле открываемой формы через свойство Параметры в обработчике ПриСозданииНаСервере. Это стандартный способ передать в обработку отборы, ссылки на документы или режимы работы.

1c
ОткрытьФорму("Обработка.МояОбработка.Форма", ПараметрыФормы, ЭтаФорма);

Как открыть форму внешней обработки программно

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

ИмяОбработки = ВнешниеОбработки.Подключить("C:\Обработки\МояОбработка.epf");

ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");

Метод Подключить() возвращает временное имя, под которым обработка зарегистрирована в сеансе. Именно это имя подставляется в строку открытия формы. При работе в файловой базе указывается путь к файлу; в клиент-серверном варианте обычно применяют хранение двоичных данных обработки в базе и подключение через временное хранилище.

Учитывайте ограничение: в безопасном режиме и при определённых настройках профиля безопасности подключение внешних обработок может быть запрещено. В этом случае вызов Подключить() завершится ошибкой, которую стоит обрабатывать через попытку-исключение.

Порядок действий
  1. 1
    Подключите файл через ВнешниеОбработки.Подключить() и сохраните возвращённое имя
  2. 2
    Сформируйте строку вида ВнешняяОбработка.<Имя>.Форма
  3. 3
    Вызовите ОткрытьФорму() с этой строкой
  4. 4
    Проверьте, что форма открылась и параметры переданы корректно

Открытие формы в обычном приложении и модальном режиме

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

Форма = Обработки.МояОбработка.ПолучитьФорму();

Форма.Открыть();

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

Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияОбработки", ЭтотОбъект);

ОткрытьФорму("Обработка.МояОбработка.Форма", , ЭтаФорма, , , , Оповещение,

РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

Процедура ПослеЗакрытияОбработки получит результат закрытия формы. Это асинхронный аналог модального открытия — единственный корректный подход в управляемом интерфейсе.

Сравнение вариантов

ОткрытьФорму()

Стандарт для управляемого приложения. Поддерживает параметры, оповещения, режимы открытия. Работает в тонком и веб-клиенте.

ПолучитьФорму() + Открыть()

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

Файл → Открыть

Для ручного запуска внешних .epf без изменения кода. Не подходит для автоматизации.

Как проверить, что форма открылась правильно

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

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

Контрольные точки

Как проверить результат

Возвращаемое значение ОткрытьФорму()
Норма

Ссылка на объект формы

Тревожный признак

Неопределено — форма не открылась

Параметры в ПриСозданииНаСервере
Норма

Все ключи структуры доступны через Параметры.Свойство()

Тревожный признак

Ключи отсутствуют — ошибка в именах при передаче

Открытие внешней обработки
Норма

Подключить() вернул имя, форма открылась

Тревожный признак

Ошибка безопасности или файл не найден

Типичные ошибки и ограничения

Ошибка «Объект метаданных не найден» при вызове ОткрытьФорму() почти всегда означает опечатку в строке имени: проверьте точное имя обработки в конфигураторе и не перепутайте Обработка с Обработки — в строке имени формы используется единственное число.

Вторая распространённая ситуация — попытка открыть форму на сервере. Метод ОткрытьФорму() доступен только на клиенте: вызов из серверной процедуры или фонового задания приведёт к ошибке. Интерактивные действия всегда выполняются в клиентском контексте.

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

Типичные ошибки
01
Использование ПолучитьФорму() в управляемом приложении — метод недоступен в тонком клиенте, код падает с ошибкой
02
Вызов ОткрытьФорму() в серверной процедуре — интерактивные методы работают только на клиенте
03
Опечатка в имени обработки или слово «Обработки» во множественном числе в строке имени формы
04
Открытие внешней .epf из непроверенного источника в рабочей базе — риск порчи данных
05
Отсутствие обработки результата ОткрытьФорму() — сбой остаётся незамеченным
Итог

Что важно запомнить

В управляемом приложении форму обработки открывают через ОткрытьФорму() на клиенте, внешние .epf — через Файл → Открыть или подключение кодом. Параметры передаются структурой, результат открытия проверяется по возвращаемому значению, модальный режим заменяется описанием оповещения.

Частые вопросы

Чем ОткрытьФорму() отличается от ПолучитьФорму()?

ОткрытьФорму() — метод управляемого приложения: он сразу открывает форму и возвращает ссылку на неё. ПолучитьФорму() сначала создаёт объект формы, который потом открывается отдельным методом, и работает только в обычном приложении. В тонком и веб-клиенте ПолучитьФорму() недоступен.

Как открыть форму обработки и дождаться её закрытия?

Передайте в ОткрытьФорму() описание оповещения — объект, указывающий на процедуру, которая выполнится после закрытия формы. Результат, возвращённый формой при закрытии, будет доступен в параметрах этой процедуры. Прямое модальное ожидание в управляемом приложении не применяется.

Почему внешняя обработка не открывается через Файл → Открыть?

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

Как передать в открываемую обработку ссылку на документ?

Сформируйте структуру с нужным ключом, например Новый Структура("Документ", СсылкаНаДокумент), и передайте её вторым параметром в ОткрытьФорму(). В модуле формы обработки прочитайте значение через Параметры.Документ в обработчике ПриСозданииНаСервере.

Можно ли открыть форму обработки из фонового задания?

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

Что делать, если обработки нет в списке «Все функции»?

Убедитесь, что обработка существует в конфигурации и у вашего пользователя есть на неё права. Если обработка внешняя, она не появится в списке — её открывают через Файл → Открыть или добавляют в справочник дополнительных отчётов и обработок, после чего она становится доступна в разделах интерфейса.