УФ. Программное создание "УниверсалныйОбменДаннымиXML"
Добрый день!
Просьба открыть немножко глаза, запутался. Задача в целом простая: При помощи обработки "УниверсалныйОбменДаннымиXML" по расписанию выгружать данные. БП 3.0. Пока бьюсь, сделал по кнопке.
Таким способом элементов выгружает ровно 0. Если открывать "УниверсалныйОбменДаннымиXML" интерактивно, по данным правилам все выгружается четко, как нужно.
Модуль внешней обработки:
Модуль формы:
В ПравилаОбмена выгружаю контрагентов зарегистрированных в ПланеОбмена:
Просьба открыть немножко глаза, запутался. Задача в целом простая: При помощи обработки "УниверсалныйОбменДаннымиXML" по расписанию выгружать данные. БП 3.0. Пока бьюсь, сделал по кнопке.
Таким способом элементов выгружает ровно 0. Если открывать "УниверсалныйОбменДаннымиXML" интерактивно, по данным правилам все выгружается четко, как нужно.
Модуль внешней обработки:
Процедура Выгрузить() Экспорт
Обработка = СоздатьИнициализироватьОбработкуВыгрузки();
Попытка
Обработка.ВыполнитьВыгрузку();
Исключение
Строка = "Выгрузка не выполнена ";
Сообщить(Строка);
КонецПопытки;
КонецПроцедуры
Функция СоздатьИнициализироватьОбработкуВыгрузки()
ИмяВременногоФайлаОбработкиОбмена = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные = ПолучитьМакет("УниверсальныйОбменДаннымиXML");
ДвоичныеДанные.Записать(ИмяВременногоФайлаОбработкиОбмена);
ОбработкаВыгрузки = ВнешниеОбработки.Создать(ИмяВременногоФайлаОбработкиОбмена,ложь);
ЗаполнитьНастройкиУниверсальногоОбмена(ОбработкаВыгрузки);
Возврат ОбработкаВыгрузки;
КонецФункции
Процедура ЗаполнитьНастройкиУниверсальногоОбмена(ОбработкаВыгрузки)
ДвоичныеДанные = ПолучитьМакет("ПравилаОбменаXML");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ОбработкаВыгрузки.ИмяФайлаПравилОбмена = ИмяВременногоФайла;
ОбработкаВыгрузки.ЗагрузитьПравилаОбмена(ИмяВременногоФайла);
ОбработкаВыгрузки.ИмяФайлаОбмена = "\\serv1c8\BSO-BU\Файл_выгрузки_Документы.xml";
КонецПроцедуры
ПоказатьМодуль формы:
&НаСервере
Процедура ВыполнитьВыгрузкуНаСервере()
Об = РеквизитФормыВЗначение("Объект");
Об.Выгрузить();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьВыгрузку(Команда)
ВыполнитьВыгрузкуНаСервере();
КонецПроцедуры
ПоказатьВ ПравилаОбмена выгружаю контрагентов зарегистрированных в ПланеОбмена:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)https://www.vdgb.ru/blog/avtomaticheskaya-vygruzka-zagruzka-dannyh-ispolzuya-reglamentnoe-zadanie/ для начала гуглить бы не помешало
Если ты в регламентном задании делаешь то тебе файл правил надо загружать.
Пример вот так
Пример вот так
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.ИмяФайлаОбмена = ПолучитьИмяВременногоФайла(".xml");
Обработка.РежимОбмена = ИдентификаторКоманды;
ДвоичныеДанные = ВернутьДвоичныеДанныеПравил(УзелОбмена);
Если ДвоичныеДанные = Неопределено Тогда
ЗаписьВЖурналаРегистрации("Не удалось получить правила обмена из регистра по узлу "+СокрЛП(УзелОбмена.Наименование), ИдентификаторКоманды);
Возврат Ложь;
КонецЕсли;
Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 0;//Не Удалять
Обработка.ЭтоИнтерактивныйРежим = Ложь;
Обработка.мБылиПрочитаныПравилаОбменаПриЗагрузке = Ложь;
ТД = Новый ТекстовыйДокумент;
Попытка
ТД.Прочитать(ДвоичныеДанные.ОткрытьПотокДляЧтения());
Обработка.ЗагрузитьПравилаОбмена(ТД.ПолучитьТекст(),"Строка");
Исключение
ЗаписьВЖурналаРегистрации("Ошибка загрузки правил."+Символы.ПС+ОписаниеОшибки(), ИдентификаторКоманды);
Возврат Ложь;
КонецПопытки;
Для Каждого СтрокаВПД Из Обработка.ТаблицаПравилВыгрузки.Строки Цикл
УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.Строки, УзелОбмена);
КонецЦикла;
Обработка.ИмяФайлаПравилОбмена = "НельзяОставлятьПустым";
Обработка.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления = Ложь;
НомерОтправленного = УзелОбмена.НомерОтправленного + 1;
НомерПринятого = УзелОбмена.НомерПринятого;
Обработка.ВыполнитьВыгрузку();
Показать
(2) Правила загружаются:
ДвоичныеДанные = ПолучитьМакет("ПравилаОбменаXML");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ОбработкаВыгрузки.ИмяФайлаПравилОбмена = ИмяВременногоФайла;
ОбработкаВыгрузки.ЗагрузитьПравилаОбмена(ИмяВременногоФайла);
чувствую упустил какие-то нюансы именно с выгрузкой в фоне...не могу понят только какие
ДвоичныеДанные = ПолучитьМакет("ПравилаОбменаXML");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ОбработкаВыгрузки.ИмяФайлаПравилОбмена = ИмяВременногоФайла;
ОбработкаВыгрузки.ЗагрузитьПравилаОбмена(ИмяВременногоФайла);
чувствую упустил какие-то нюансы именно с выгрузкой в фоне...не могу понят только какие
(5)
Вот так загружаешь правила
Теперь делаем загрузку
Процедура УстановитьУзелОбменаУСтрокДерева
И выполняем
Примерно так...
Вот так загружаешь правила
ДвоичныеДанные = ПолучитьМакет("ПравилаОбменаXML");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ТД = Новый ТекстовыйДокумент;
Попытка
ТД.Прочитать(ДвоичныеДанные.ОткрытьПотокДляЧтения());
Обработка.ЗагрузитьПравилаОбмена(ТД.ПолучитьТекст(),"Строка");
Исключение
ЗаписьВЖурналаРегистрации("Ошибка загрузки правил."+Символы.ПС+ОписаниеОшибки(), ИдентификаторКоманды);
КонецПопытки;
ПоказатьТеперь делаем загрузку
Для Каждого СтрокаВПД Из Обработка.ТаблицаПравилВыгрузки.Строки Цикл
УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.Строки, УзелОбмена);
КонецЦикла;
Процедура УстановитьУзелОбменаУСтрокДерева
Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена)
Для Каждого Строка Из Дерево Цикл
Если Строка.ЭтоГруппа Тогда
УстановитьУзелОбменаУСтрокДерева(Строка.Строки, УзелОбмена);
Иначе
Если Строка.СпособОтбораДанных = "ПроизвольныйАлгоритм" Тогда Продолжить; КонецЕсли;
Строка.СсылкаНаУзелОбмена = УзелОбмена;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьИ выполняем
Обработка.ВыполнитьВыгрузку()
Примерно так...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот