Как исправить ошибку Метод объекта не обнаружен (СведенияОВнешнейОбработке) в 1С:УНФ 1.6?

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

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

Причина 1. Функция расположена в модуле формы вместо модуля объекта

Служебная функция СведенияОВнешнейОбработке с ключевым словом Экспорт должна находиться строго в модуле объекта внешней обработки (или печатной формы).

Если разместить этот код в модуле формы, платформа 1С при попытке регистрации файла в справочнике «Дополнительные отчеты и обработки» обращается к объекту обработки и не находит в нем экспортируемый метод.

Проверим правильность размещения кода:

  1. Откроем внешнюю обработку (файл .epf) в конфигураторе.
  2. В окне конфигуратора внешней обработки найдем корневой элемент.
  3. Нажмем на кнопку Действия в нижней части окна и выберем пункт Модуль объекта (или кликнем правой кнопкой мыши по корню и выберем «Открыть модуль объекта»).
  4. Перенесем функцию СведенияОВнешнейОбработке и экспортируемую процедуру Печать из модуля формы в модуль объекта.

Причина 2. Ошибки и пропущенные значения во вспомогательных функция

Проанализируем структуру функции регистрации. Часто разработчики выносят создание таблицы команд или массива назначения в отдельные функции. Если в такой вспомогательной функции забыть оператор Возврат, платформа получит значение Неопределено, из-за чего структура параметров регистрации сформируется некорректно.

Рассмотрим пример вспомогательной функции таблицы команд, в которой допущена такая ошибка:


Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    
    // Если забыть написать Возврат Команды;, функция вернет Неопределено
    Возврат Команды; 
КонецФункции

Причина 3. Смешивание символов кириллицы и латиницы

Распространенная скрытая причина ошибки — присутствие латинских букв в имени функции. Например, если буква «e» в слове СведенияОВнешнейОбработке была введена в английской раскладке, то визуально наименование выглядит правильным, но платформа 1С воспринимает его как совершенно другой метод и выдает ошибку о том, что метод объекта не обнаружен.

Выясним, как это исправить:

  1. Полностью удалим название функции СведенияОВнешнейОбработке.
  2. Перепишем его вручную в русской раскладке клавиатуры.
  3. Проверим наличие ключевого слова Экспорт после объявления функции.

Рекомендуемый подход: использование стандартных методов БСП

Чтобы не создавать структуры и таблицы значений вручную, рекомендуется применять стандартные вызовы Библиотеки Стандартных Подсистем (БСП), на базе которой построена конфигурация 1С:УНФ 1.6.

Рассмотрим готовый пример корректного модуля объекта внешней печатной формы:


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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктВыполненныхРаботВнешний");
    
    Если ПечатнаяФорма <> Неопределено Тогда
        ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);
        ПечатнаяФорма.СинонимМакета = "Акт выполненных работ";
    КонецЕсли;
    
КонецПроцедуры

Важные нюансы при формировании печатных форм

Разберем дополнительные моменты, которые необходимо учитывать при разработке внешних печатных форм:

  1. Точное совпадение идентификатора: Идентификатор команды, зарегистрированный в СведенияОВнешнейОбработке (например, "АктВыполненныхРаботВнешний"), должен строго совпадать с идентификатором, передаваемым в функцию УправлениеПечатью.СведенияОПечатнойФорме в процедуре Печать. Если идентификаторы различаются, макет печатной формы не откроется.
  2. Настройки безопасного режима: При флаге БезопасныйРежим = Истина система блокирует прямое чтение файлов с диска, работу с COM-объектами и внешними компонентами. Если печатная форма использует данные операции, необходимо настраивать разрешения или подключать обработку в обычном режиме.
  3. Независимость кода: Избегайте прямых вызовов процедур из типовых обработок конфигурации (например, Обработки.ПечатьАктаОбОказанииУслуг). При обновлении релиза УНФ типовые процедуры могут меняться, из-за чего внешняя печатная форма перестанет работать. Логику запросов и заполнения печатной формы лучше размещать прямо в модуле объекта внешней формы.
← На главную