Имя: Пароль:
1C
1С v8
Программное использование "Универсального обмена XML" с Планом Обмена
, ,
0 Midasu
 
05.09.16
16:26
Добрый день, товарищи.
Типовая обработка "УниверсальныйОбменДаннымиXML".
Требуется её программный вызов с использованием плана обмена.

УОД_XML = Обработки.УниверсальныйОбменДаннымиXML.Создать();
УОД_XML.РежимОбмена = "Выгрузка";
УОД_XML.ИмяФайлаПравилОбмена = ИмяФайлаПравилОбмена;
УОД_XML.ИмяФайлаОбмена = ИмяФайлаОбмена;
УОД_XML.ЗагрузитьПравилаОбмена();

Пытаюсь заполнить поля с узлами плана обмена:
Для каждого Строк из УОД_XML.ТаблицаПравилВыгрузки.Строки Цикл
   Для каждого СтрокЭлем из Строк.Строки Цикл
      СтрокЭлем.СсылкаНаУзелОбмена = ПланыОбмена.План.НайтиПоКоду("План").Ссылка;
   КонецЦикла;                            
КонецЦикла;

В табло вижу, что узлы заполнены чем надо.
Но при выгрузке план обмена не оказывает влияния и выгружает всё по всем элементам.

Подскажите, товарищи, как программно передать план обмена этой обработке.
Очень нужно, верю в Вас. :3
1 FIXXXL
 
05.09.16
17:29
там много на интерактив и ПостроительОтчета завязано
ставь точки останова в форме, смотри что происходит при указании узлов
2 Александр_
Тверь
 
05.09.16
17:37
Если интересно, можешь взять как образец:
http://catalog.mista.ru/public/465898/
3 Fragster
 
гуру
05.09.16
18:50
БСП?
4 Midasu
 
06.09.16
09:45
(1) Дичь там дикая, не хочется в канализацию лезть.
Вот и спрашивал опыта.

(2) Не могу, мне нужен УОД XML.

(3) Да.

Эх, а всего-то лишь нужен человек с опытом использования УОД XML в варианте правила+план обмена... Ищу Вас.
5 Midasu
 
06.09.16
09:48
С опытом программного использования*
На клиенте в форме работает как надо.
6 Serg_1960
 
06.09.16
10:39
Не знаю у кого как, а меня в обработке ТаблицаПравилВыгрузки - дерево. И заполняются строки дерева рекурсивным обходом (функция из УниверсальныйОбменДаннымиXML):

Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена)
    
    Для Каждого Строка Из Дерево Цикл
        
        Если Строка.ЭтоГруппа Тогда
            
            УстановитьУзелОбменаУСтрокДерева(Строка.Строки, УзелОбмена);
            
        Иначе
            
            Строка.СсылкаНаУзелОбмена = УзелОбмена;
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры
7 Serg_1960
 
06.09.16
11:04
"Но при выгрузке план обмена не оказывает влияния и выгружает всё по всем элементам."- может быть у тебя в плане обмена зарегистрированы все элементы? Проверь регистрацию изменений в плане.

Перед началом выгрузки реквизиту обработки "ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки" присвой значение 2(число). Если при повторной выгрузке в файле сообщений не будет объектов, то регистрация изменений из план обмена (и сам план обмена) всё-таки работают, не игнорируются.
8 Fragster
 
гуру
06.09.16
12:59
9 Fragster
 
гуру
06.09.16
12:59
код из (0) и (6) точно не нужен
10 Midasu
 
06.09.16
16:22
(6) (7) Кстати, уже утром разобрался, забыл, что не все объекты по группам, и некоторым элементам без иерархии в итоге план обмена не присваивается. (6) - правильный код.

(9) Скудно про УОД_XML там, точнее ничего, как раз по правильному пути я шёл, только чуть косячнул. В (6) всё правильно.
11 Fragster
 
гуру
06.09.16
16:28
(10) выполнить все, что там "скудное" есть, и всё будет работать, включая обмен по вебсервисам по расписанию или электронной почте
12 Fragster
 
гуру
06.09.16
16:29
без кода из (6)
14 Fragster
 
гуру
06.09.16
16:29
и (0)
15 Midasu
 
07.09.16
09:28
(11) Нельзя мне по веб-сервисам, нужен локальный обмен через xml.
16 Serg_1960
 
07.09.16
10:02
Имхо: сканируешь регистрацию изменений по плану обмена; добавляешь в таблицу обработки объекты; делаешь выгрузку; очищаешь регистрацию (можно при загрузке данных). Таким образом универсальный обмен даже не догадывается о плане обмена.
17 Fragster
 
гуру
07.09.16
11:02
(15) локальный, конечно же, тоже работает. и через com, и через файлы.
18 vi0
 
07.09.16
11:09
(0) а разве не обработку ОбменДаннымиXML нужно использовать?
19 Midasu
 
09.09.16
08:54
(17) Ок, тогда спасибо, будет время - освою, пока УОД_XML спас.

(18) Может кому-то нужно, у меня УОД_XML неплохо справился с задачей.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший