УФ (УТ 11.4, БП 3.0). Использование обработки "Универсальный обмен данными в формате XML" во внешней обработке.

1. pentanom 30 16.07.19 14:39 Сейчас в теме
Пользователям неудобно напрямую использовать обработку "Универсальный обмен данными в формате XML" - путаются с выбором файла правил, заполнение параметров и т.д. Хочется создать внешнюю обработку с минимально необходимым вводом данных (например, период, файл выгрузки и т.д.). Остальные параметры должны подгружаться автоматически.
Есть ли у кого-нибудь пример такой обработки ?
Найденные решения
9. tusv 212 16.07.19 19:05 Сейчас в теме
(8)Так укажите. Например присвойте 1.
Рабочий код
&НаСервере
Функция  ВыгрузитьНаСервере()
	Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обработка.ФлагРежимОтладки = Истина;
	Обработка.ИмяФайлаПравилОбмена = 1;
	Обработка.ЗагрузитьПравилаОбмена(РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПравилаОбмена").ПолучитьТекст(),"Строка");
	Обработка.ИмяФайлаОбмена = ПолучитьИмяВременногоФайла("xml");
	Обработка.ДатаНачала = Период.ДатаНачала;
	Обработка.ДатаОкончания = Период.ДатаОкончания;
	Обработка.ВыполнитьВыгрузку();
	Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Обработка.ИмяФайлаОбмена));
КонецФункции

&НаКлиенте
Процедура Выгрузить(Команда)
	Адрес = ВыгрузитьНаСервере();
	ПолучитьИзВременногоХранилища(Адрес).Записать(ИмяФайлаОбмена);
КонецПроцедуры
Показать
Светлый ум; +1 Ответить
19. tusv 212 18.07.19 14:37 Сейчас в теме
(18)Установить третий параметр Интерактивно, который по умолчанию Истина.
ПолучитьФайл(Результат,ФайлВыгрузки,Ложь);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. tusv 212 16.07.19 15:10 Сейчас в теме
(1)Что там писать то?
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.ЗагрузитьПравилаОбмена(<Имя файла правил>);
Обработка.ИмяФайлаОбмена = <Имя Файла обмена>;
Обработка.ДатаНачала = <Дата начала>;
Обработка.ДатаОкончания = <Дата окончания>;
Обработка.ВыполнитьВыгрузку();
4. pentanom 30 16.07.19 15:34 Сейчас в теме
(3)Попробую.
Но хотелось бы без выбора файла правил - его бы вставить в обработку.
5. tusv 212 16.07.19 16:11 Сейчас в теме
(4)Не вопрос. Вставляете в макет, правила как Текстовый документ.
Ну и рисуете
Обработка.ЗагрузитьПравилаОбмена(ПолучитьМакет(<Имя макета>.ПолучитьТекст(), "Строка");
6. pentanom 30 16.07.19 16:56 Сейчас в теме
(5)
Обработка.ЗагрузитьПравилаОбмена(ПолучитьМакет(.ПолучитьТекст(), "Строка");

Написал так:
	ОбработкаОбмена.ЗагрузитьПравилаОбмена(ПолучитьМакет("Макет").ПолучитьТекст(), "Строка");
, но что-то на ПолучитьМакет ругается :(
Что здесь не так ?
7. tusv 212 16.07.19 17:10 Сейчас в теме
(6)Если Управляемые формы то
РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет")
8. pentanom 30 16.07.19 17:56 Сейчас в теме
(7) А теперь сообщение:
Не указано имя файла с правилами обмена (Имя файла правил)
9. tusv 212 16.07.19 19:05 Сейчас в теме
(8)Так укажите. Например присвойте 1.
Рабочий код
&НаСервере
Функция  ВыгрузитьНаСервере()
	Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обработка.ФлагРежимОтладки = Истина;
	Обработка.ИмяФайлаПравилОбмена = 1;
	Обработка.ЗагрузитьПравилаОбмена(РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПравилаОбмена").ПолучитьТекст(),"Строка");
	Обработка.ИмяФайлаОбмена = ПолучитьИмяВременногоФайла("xml");
	Обработка.ДатаНачала = Период.ДатаНачала;
	Обработка.ДатаОкончания = Период.ДатаОкончания;
	Обработка.ВыполнитьВыгрузку();
	Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Обработка.ИмяФайлаОбмена));
КонецФункции

&НаКлиенте
Процедура Выгрузить(Команда)
	Адрес = ВыгрузитьНаСервере();
	ПолучитьИзВременногоХранилища(Адрес).Записать(ИмяФайлаОбмена);
КонецПроцедуры
Показать
Светлый ум; +1 Ответить
10. pentanom 30 17.07.19 13:17 Сейчас в теме
(9)Не получается :(
Ошибок нет, но количество выгруженного ноль. Вероятно, не все параметры передаются в обработку.
Буду разбираться, но пока не знаю как.
11. tusv 212 17.07.19 15:34 Сейчас в теме
(10)Смторите Таблицу настройки параметров.
Пример программной установки
Обработка.ТаблицаНастройкиПараметров.Найти("Организация","Имя").Значение = Организация;
12. pentanom 30 17.07.19 16:48 Сейчас в теме
(11)А так нельзя ?
Обработка.Параметры.Организация = Организация;
13. tusv 212 17.07.19 16:51 Сейчас в теме
(12)Все равно смотрит на таблицу ТаблицаНастройкиПараметров
14. pentanom 30 17.07.19 17:10 Сейчас в теме
(13)В отладчике смотрю на структуру Обработка.Параметры - все заполняется, а в таблице значений Обработка.ТаблицаНастройкиПараметров значения пустые. Хотя типы везде правильные.
15. tusv 212 17.07.19 17:17 Сейчас в теме
(14)Ну раз заполнены, то напишите
Для Каждого ТекСтр из Обработка.ТаблицаНастройкиПараметров Цикл
	ТекСтр.Значение = Обработка.Параметры[ТекСтр.Имя];
КонецЦикла;
16. pentanom 30 17.07.19 22:27 Сейчас в теме
(15)Теперь обработка говорит, что выгрузка есть, но файл не записывается.
17. tusv 212 18.07.19 09:26 Сейчас в теме
(16)Обработка то на Сервере, а файл на клиенте. На сервере пишите во временный файл и передаете его на клиент. Смотрите (9)
18. pentanom 30 18.07.19 12:44 Сейчас в теме
(17)Я написал:
&НаКлиенте
Процедура ВыгрузитьФайлXML(Команда)
	
	Результат=ВыгрузитьФайлXMLНаСервере();
	ПолучитьФайл(Результат,ФайлВыгрузки);

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

Но сохраняется с вопросом, а хочется без него.
19. tusv 212 18.07.19 14:37 Сейчас в теме
(18)Установить третий параметр Интерактивно, который по умолчанию Истина.
ПолучитьФайл(Результат,ФайлВыгрузки,Ложь);
20. pentanom 30 18.07.19 18:16 Сейчас в теме
(19)Большое спасибо ! Все работает.
2. pentanom 30 16.07.19 14:40 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот