Как подключить внешнюю обработку в 1С:УНФ и устранить ошибку «СведенияОВнешнейОбработке»

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

При работе с современными конфигурациями 1С, такими как Управление нашей фирмой (УНФ), пользователи часто сталкиваются с проблемой подключения внешних обработок, скачанных с диска ИТС или сторонних ресурсов. Основная сложность заключается в том, что старые универсальные обработки были написаны для «обычного приложения», в то время как УНФ работает на управляемых формах и использует механизмы Библиотеки стандартных подсистем (БСП). Разберем подробно, почему возникает ошибка «Метод объекта не обнаружен (СведенияОВнешнейОбработке)» и как правильно интегрировать обработку в систему.

Выясним причину ошибки

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

Важный нюанс: эта функция должна располагаться исключительно в Модуле объекта обработки, а не в модуле формы. Если функция прописана в форме, подсистема регистрации ее просто не увидит, что и приведет к ошибке «Метод объекта не обнаружен».

Решение 1: Добавление функции регистрации (для программистов)

Рассмотрим по шагам, как модифицировать обработку, чтобы она стала совместимой с УНФ. Для этого нам понадобится открыть обработку в конфигураторе и перейти в модуль объекта.

Проанализируем пример кода, который необходимо вставить в Модуль объекта:


Функция СведенияОВнешнейОбработке() Экспорт
    РегистрационныеДанные = Новый Структура;
    РегистрационныеДанные.Вставить("Наименование", "Загрузка данных из таблицы");
    РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
    РегистрационныеДанные.Вставить("Версия", "1.0");
    
    // Определяем вид обработки: ДополнительнаяОбработка, ЗаполнениеОбъекта, ПечатнаяФорма
    РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
    РегистрационныеДанные.Вставить("Информация", "Данная обработка позволяет загружать данные в документы УНФ.");
    
    // Создаем таблицу команд
    тзКоманд = Новый ТаблицаЗначений;
    тзКоманд.Колонки.Добавить("Идентификатор");
    тзКоманд.Колонки.Добавить("Представление");
    тзКоманд.Колонки.Добавить("Модификатор");
    тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
    тзКоманд.Колонки.Добавить("Использование");
    
    строкаКоманды = тзКоманд.Добавить();
    строкаКоманды.Идентификатор = "ОткрытьФормуОбработки";
    строкаКоманды.Представление = "Запустить загрузку данных";
    строкаКоманды.ПоказыватьОповещение = Ложь;
    строкаКоманды.Использование = "ОткрытиеФормы"; // Указываем, что команда просто открывает форму
    
    РегистрационныеДанные.Вставить("Команды", тзКоманд);
    
    Возврат РегистрационныеДанные;
КонецФункции

В данном примере мы используем параметр Использование = "ОткрытиеФормы". Это самый простой вариант, который позволяет зарегистрировать обработку в справочнике и запускать ее стандартную форму. Если же вы разрабатываете заполнение объекта (например, заполнение табличной части документа), структура будет немного сложнее.

Решение 2: Подключение обработки для заполнения документов

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


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
    
    ОбъектыНазначения = Новый Массив;
    ОбъектыНазначения.Добавить("Документ.РасходнаяНакладная");
    ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначения);
    
    ПараметрыРегистрации.Вставить("Наименование", "Специальное заполнение накладной");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Версия", "1.1");
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "Заполнить по алгоритму", "Алгоритм1", "ВызовКлиентскогоМетода");
    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

Обратите внимание на параметр ВызовКлиентскогоМетода. При таком использовании в модуле формы обработки обязательно должна присутствовать процедура &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт. Именно она будет точкой входа при нажатии кнопки в интерфейсе 1С. В качестве основы для разработки можно использовать готовый шаблон обработки внешнего заполнения на БСП.

Решение 3: Использование режима «Толстый клиент» (без изменения кода)

Если вам нужно разово воспользоваться старой обработкой с диска ИТС (например, «Поиск и замена значений» или «Групповая обработка справочников»), и вы не хотите заниматься программированием, существует альтернативный путь. Рассмотрим его подробнее:

  1. Запустите 1С:Предприятие в режиме Толстый клиент — обычное приложение. Это можно сделать через настройки в стартовом окне (кнопка «Изменить» -> далее -> в поле «Режим запуска» выбрать «Толстый клиент», а в дополнительных параметрах запуска прописать /RunModeOrdinaryApplication).
  2. В открывшемся окне (которое будет выглядеть как старая версия 1С 8.1/8.2) выберите в верхнем меню Файл -> Открыть.
  3. Выберите вашу обработку .epf. В этом режиме она запустится без проверок БСП и требований наличия функции СведенияОВнешнейОбработке.

Важно помнить: этот метод подходит только для универсальных инструментов, которые не привязаны к специфике управляемых форм УНФ. После выполнения необходимых действий не забудьте вернуть настройки запуска в исходное состояние.

Технические тонкости и отладка

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

Также стоит обратить внимание на Безопасный режим. Если ваша обработка должна сохранять файлы на диск, работать с почтой или внешними COM-объектами (например, загружать данные напрямую из Excel), установите РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);. В противном случае платформа заблокирует эти операции из соображений безопасности.

Таким образом, для успешного подключения внешней обработки в УНФ необходимо либо адаптировать ее под стандарты БСП, добавив регистрационную функцию в модуль объекта, либо использовать обходной путь через режим обычного приложения для разовых административных задач. Для проверки и тестирования уже добавленных в справочник модулей подойдёт набор расширений для отладки внешних обработок в УНФ.

← На главную