При подключении внешней печатной формы или дополнительной обработки в конфигурацию 1С:Управление нашей фирмой (УНФ 1.6) разработчики часто сталкиваются со сообщением об ошибке: «Невозможно подключить дополнительную обработку из файла. Возможно, она не подходит для этой версии программы. Метод объекта не обнаружен (СведенияОВнешнейОбработке)». Проанализируем причины возникновения этой проблемы и разберем по шагам способы ее решения.
Служебная функция СведенияОВнешнейОбработке с ключевым словом Экспорт должна находиться строго в модуле объекта внешней обработки (или печатной формы).
Если разместить этот код в модуле формы, платформа 1С при попытке регистрации файла в справочнике «Дополнительные отчеты и обработки» обращается к объекту обработки и не находит в нем экспортируемый метод.
Проверим правильность размещения кода:
.epf) в конфигураторе.СведенияОВнешнейОбработке и экспортируемую процедуру Печать из модуля формы в модуль объекта.Проанализируем структуру функции регистрации. Часто разработчики выносят создание таблицы команд или массива назначения в отдельные функции. Если в такой вспомогательной функции забыть оператор Возврат, платформа получит значение Неопределено, из-за чего структура параметров регистрации сформируется некорректно.
Рассмотрим пример вспомогательной функции таблицы команд, в которой допущена такая ошибка:
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
// Если забыть написать Возврат Команды;, функция вернет Неопределено
Возврат Команды;
КонецФункции
Распространенная скрытая причина ошибки — присутствие латинских букв в имени функции. Например, если буква «e» в слове СведенияОВнешнейОбработке была введена в английской раскладке, то визуально наименование выглядит правильным, но платформа 1С воспринимает его как совершенно другой метод и выдает ошибку о том, что метод объекта не обнаружен.
Выясним, как это исправить:
СведенияОВнешнейОбработке.Экспорт после объявления функции.Чтобы не создавать структуры и таблицы значений вручную, рекомендуется применять стандартные вызовы Библиотеки Стандартных Подсистем (БСП), на базе которой построена конфигурация 1С:УНФ 1.6.
Рассмотрим готовый пример корректного модуля объекта внешней печатной формы:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Наименование = "Акт выполненных работ (внешний)";
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
// Указываем объекты метаданных, к которым подключается печатная форма
ПараметрыРегистрации.Назначение.Добавить("Документ.АктВыполненныхРабот");
// Регистрация команды печати
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Акт выполненных работ (внешняя печатная форма)";
НоваяКоманда.Идентификатор = "АктВыполненныхРаботВнешний";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.Модификатор = "ПечатьMXL";
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "АктВыполненныхРаботВнешний");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = "Акт выполненных работ";
КонецЕсли;
КонецПроцедуры
Разберем дополнительные моменты, которые необходимо учитывать при разработке внешних печатных форм:
СведенияОВнешнейОбработке (например, "АктВыполненныхРаботВнешний"), должен строго совпадать с идентификатором, передаваемым в функцию УправлениеПечатью.СведенияОПечатнойФорме в процедуре Печать. Если идентификаторы различаются, макет печатной формы не откроется.БезопасныйРежим = Истина система блокирует прямое чтение файлов с диска, работу с COM-объектами и внешними компонентами. Если печатная форма использует данные операции, необходимо настраивать разрешения или подключать обработку в обычном режиме.Обработки.ПечатьАктаОбОказанииУслуг). При обновлении релиза УНФ типовые процедуры могут меняться, из-за чего внешняя печатная форма перестанет работать. Логику запросов и заполнения печатной формы лучше размещать прямо в модуле объекта внешней формы.