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