Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 окт 2021, 11:01

Универсальный обмен данными XML как регламентное задание

Автор AIFrame, 21 июн 2017, 07:08

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

AIFrame

Есть база УТ 10.3 и база Розница 2.2
Есть рабочие правила обмена, по которым в режиме выгрузки\загрузки из файла все происходит.
Розница->УТ - без структуры отборов, только периоды, т.е. тупо все.
УТ->Розница - есть структура отборов, только опр. организации и элементы справочников и регистров.
Интересует best-practice решения для использования обработки "Универсальный обмен данными XML" как регламентного задания.
Если писать обработку для вызова обработки "Универсальный обмен данными XML" и задавать параметры - не понятно, как задавать структуру отбора для загруженных правил.

AIFrame

В общем, делать буду автовыгрузкой по планировщику. Обработку написал, но на отборах по регистру возникли проблемы
// Штрихкоды
// ЕдиницаИзмерения.ЕдиницаПоКлассификатору = шт.
Если Наименование = "Штрихкоды" Тогда
ТекущееПВД = СтрокаУровня2;

Построитель = Новый ПостроительОтчета;
Если ТекущееПВД.ИмяОбъектаДляЗапросаРегистра <> Неопределено Тогда
Построитель.Текст =
"ВЫБРАТЬ Разрешенные _.* ИЗ " + ТекущееПВД.ИмяОбъектаДляЗапросаРегистра + " КАК _
|
|
|{ГДЕ _.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.* КАК " + СтрЗаменить(ТекущееПВД.ИмяОбъектаДляЗапросаРегистра, ".", "_") + "}";
КонецЕсли;
Отбор = Построитель.Отбор;

Если Отбор.Найти("РегистрСведений_Штрихкоды") = Неопределено Тогда
Отбор.Добавить("РегистрСведений_Штрихкоды");
КонецЕсли;

Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.КлассификаторЕдиницИзмерения"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , );

Отбор["РегистрСведений_Штрихкоды"].Использование = Истина;
Отбор["РегистрСведений_Штрихкоды"].Значение = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("штука");
Отбор["РегистрСведений_Штрихкоды"].ВидСравнения = ВидСравнения.Равно;

ДоступностьПостроителя = Истина;

Если Построитель.Отбор.Количество() > 0 Тогда
ТекущееПВД.НастройкиПостроителя = Построитель.ПолучитьНастройки();
ТекущееПВД.ИспользоватьОтбор    = ИСТИНА;
КонецЕсли;
КонецЕсли;

В результате добавления этого отбора выгрузка кончается ошибкой
ЦитироватьОшибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(10271)}: Ошибка при получении значения атрибута контекста (Результат): {(1, 1)}: Ожидается выражение "ВЫБРАТЬ"
По справочникам и документам отбор проходит без проблем. В регистрах оно как-то по другому, не пойму, что ему надо.

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск