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