Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 14:25

Обратиться к экспортной процедуре внешней обработки

Автор Sandi, 20 апр 2015, 15:33

0 Пользователей и 2 гостей просматривают эту тему.

Sandi

Добрый день!

помогите,пожалуйста, новичку разобраться:

есть:
1. внешняя обработка, у нее в модуле объекта есть экспортная процедура. Обработка зарегистрирована в справочнике "Внешние процедуры и обработки"
2. Объект (например, элемент справочника "Сотрудники"), при открытии формы которого должна запускаться процедура из внешней обработки.

при попытке вызвать эту самую экспортную процедуру получаю сообщение об ошибке "Метод объекта не обнаружен"



Ниже приведен код :

Обработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("МояВнешняяОбработка").ПолучитьОбъект();   
Обработка.МояЭкспортнаяПроцедура();





В модуле обработки:

Процедура МояЭкспортнаяПроцедура   ЭКСПОРТ

КонецПроцедуры




Дмитрий@

Вы получили объект справочника "ДополнительныеОтчетыИОбработки", а не объект внешней обработки, а поскольку в объекте справочника такой обработки нет, то выдается ошибка.

LexaK

:)
ВнешняяОбработка= Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("МояВнешняяОбработка");   
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяОбработка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
ВнешняяОбработка.МояЭкспортнаяПроцедура();
если помогло нажмите: Спасибо!

Sandi

Дмитрий@,LexaK,спасибо!


LexaK, Ваш первоначальный вариант  у меня не сработал, но после замены местами 2-х строчек все получилось  :zebzdr::

ВнешняяОбработка= Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Моя обработка");   
ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();
ИмяФайла = ПолучитьИмяВременногоФайла("epf");

ДвоичныеДанные.Записать(ИмяФайла);
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
ВнешняяОбработка.МояЭкспортнаяПроцедура();

сначала надо получить двоичные данные, а потом имя файла.
поправьте меня если ошибусь  -  мы сначала получаем двоичные данные и создаем временный файл, и после этого  у нас появляется возможность  получить имя файла (т.к. до этого не было файла => не было имени).
я правильно понимаю?

Dethmontt

Цитата: Sandi от 21 апр 2015, 00:03я правильно понимаю?

НЕТ!
Эти две строчки никак не связвны и будут работать в любой последовательности

Хоть так:
ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить(); //Получение в переменную двоичных данных
ИмяФайла = ПолучитьИмяВременногоФайла("epf"); //Получение полного пути до временного файла (temp) с расширением epf (только ПУТЬ - СТРОКА)


Хоть так:
ИмяФайла = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();


Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Sandi

Dethmontt, спасибо за объяснение.

только понять не могу, почему заработало только после замены местами строчек.


Ну, в любом случае, проблема решена.
всем откликнувшимся еще раз СПАСИБО ЗА ПОМОЩЬ!

Dethmontt

Цитата: Sandi от 21 апр 2015, 08:23только понять не могу, почему заработало только после замены местами строчек.

Заработало не из за смены строчек местами, а из за этого
Цитата: LexaK от 20 апр 2015, 16:16ИмяФайла = ПолучитьИмяВременногоФайла();

ИмяФайла = ПолучитьИмяВременногоФайла("epf");
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск