Имя: Пароль:
1C
1С v8
Перекрестные (взаимные, циклические) ссылки и Универсальный обмен данными XML
0 jbco
 
13.01.12
02:07
Кажется не в первый раз возникает проблема с обменом реализуемым через Универсальный обмен данными XML (Конвертацию Данных). Не помню как решал раньше. По логике обработка должна разбираться с этим сама, но чего-то идет не так...

В базах часто встречаются объекты ссылающиеся друг на друга. Самые очевидные пары: Номенклатура -- ХарактеристикаНоменклатуры, Номенклатура -- ЕдиницаИзмерения, Контрагент -- ДоговорКонтрагентов, Контрагент -- БанковскийСчет.

При выгрузке подобных объектов в одних случаях в свойстве указывается ссылка со всеми полями поиска, а в других только нпп выгружаемого объекта. Причины я не уловил. В тех случаях, когда выгружается только нпп загрузка игнорирует узел и реквизит остается незаполненным. Из 4 приведенных выше пар, у меня 2 переносятся отлично, а 2 остаются с незаполненными реквизитами.

Должна ли обработка сама разрешать подобные ситуации или требуется что-то дописывать в правилах?
1 jbco
 
13.01.12
02:09
+0 Что-то я спросоня Характеристики приплел -- они не в счет.
2 hhhh
 
13.01.12
03:01
(1) Обмен с УИДами работает. Загружает номенклатуру: в поле единица измерения просто пишет УИД (ссылку из базы) на эту единицу, хотя физически единицы там нет. А когда загружается Единица, ей присваивается ссылка, как раз с этим ГУИДом, и в номенклатуре чудесным образом появляется как раз та единица, которая нужна.

То есть обмену абсолютно по барабану, циклические или нециклические там ссылки у тебя.
3 jbco
 
13.01.12
09:34
(2) Именно на это я и расчитывал.
Но у меня в Контрагентах не указывается ОсновнойДоговор. Договор переносится, поиск по УникальномуИдентификатору.
(никакой разницы в настройках с банковскими счетами нет, но там все в порядке)
4 vmv
 
13.01.12
09:38
в лес и по дрова

*наблюдает*
5 Rie
 
13.01.12
09:39
(0) Насколько я помню, ведётся список выгружаемых объектов, так что система сама отслеживает подобные циклы.
Включение в этот список можно запретить в правиле (есть соответствующий флажок).
6 jbco
 
13.01.12
10:09
Одно из средств системы мСчетчикВыгруженныхОбъектов у меня явно не работает. Во время выгрузки все время меньше нуля и постепенно уменьшается.

У объекта Контрагент свойство ОсновнойДоговорКонтрагента выгружается так:

<Свойство Имя="ОсновнойДоговорКонтрагента" Тип="СправочникСсылка.ДоговорыКонтрагентов">
 <Нпп>1</Нпп>
</Свойство>

При загрузке узел Нпп игнорируется.
7 jbco
 
13.01.12
10:16
+6 Опять описка: ТекущийУровеньВложенностиВыгрузитьПоПравилу, а не мСчетчикВыгруженныхОбъектов
8 GenV
 
13.01.12
10:27
(6) С чего решил что игнорируется?
9 jbco
 
13.01.12
10:29
(8)
       ИначеЕсли ИмяУзла = "Нпп" Тогда
           
           одПропустить(ФайлОбмена);
10 jbco
 
13.01.12
10:36
+6 У того же Контрагента свойство ОсновнойБанковскийСчет выгружено по другому:
<Свойство Имя="ОсновнойБанковскийСчет" Тип="СправочникСсылка.БанковскиеСчета">
 <Ссылка Нпп="10">
   <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
     <Значение>dfsdfgsdgfsdgfsdgfdgfd</Значение>
и т.д.
11 GenV
 
13.01.12
10:38
(9) Для свойств помеченных к поиску у тебя должны выгружаться их значения, а не только ссылки. Это для обычных свойств достаточно ссылок - они потом заполнятся.
12 jbco
 
13.01.12
10:51
(11)Не совсем понял. Как я могу это регулировать?

В приведенном примере для Контрагента поля поиска: УникальныйИдентификатор, Код, ЭтоГруппа
ДоговорКонтрагента: УникальныйИдентификатор, Код, ЭтоГруппа, Владелец
БанковскийСчет: УникальныйИдентификатор, Код, Владелец

В настройках ПКО для всех этих объектов единственная установленная галка -- СинхронизироватьПоИдентификаторам
13 GenV
 
13.01.12
10:58
(12) Регулировать это тебе не требуется - все делает КД сама.
Когда загружаются данные, то первым загрузится твой договор (по свойствам поиска). Потом будет загружен контрагент по свойствам поиска (у тебя будет происходит поиск только по идентификатору, но значения остальных свойств поиска предварительно загрузятся все равно, т.к. были помечены). Потом для найденного/созданного контрагента будут загружены остальные свойства, в т.ч. и основной договор по нпп=1 (и остальные свойства договора).

ЗЫ Раз ты поставил поиск только по идентификаторам, то поля поиска мог бы и не ставить.
14 kn
 
13.01.12
11:07
по-моему там играет роль Порядок выполнения ПКС см например тему
v8: КД. Фича или описано где?
15 jbco
 
13.01.12
11:32
(13)Должна делать, но не делает
16 jbco
 
13.01.12
11:40
(14)Правил очень много, разных.
Попробую (9) из v8: Конвертация ЕдиницИзмерения
17 kn
 
13.01.12
11:42
да нет же можно проще ничего не написав просто переставив порядок -  читай (14)
18 kn
 
13.01.12
11:45
хотя если правил много то можно и (16)
19 GenV
 
13.01.12
11:48
(15) Версия обработки "Универсальный обмен данными XML" какая (из каких версий конф источника и приемника) - потом попробую проверить, если конфы доступны будут.
20 jbco
 
13.01.12
12:05
(19)пробовал 2.1.2 и 2.1.5; две УППшки; правила показать не могу (строгости СБ), но по приведенным объектам это правила, автоматически созданные КД
21 jbco
 
13.01.12
12:08
(17), (18) Я конечно попробую сначала поменять порядок ПКС. Только боюсь, что для всех документов учесть все возможные парные ссылки будет довольно проблематично... (а бывают наверно и более длинные циклы ссылок)
22 GenV
 
13.01.12
12:28
(20) Правила не нужны - буду проверят на тестовых, раньше проблем не было. Обработки брал из шаблона КД 2.1.5 или из УПП (версии УПП)? Если из УПП - попробый использовать из КД последней, может исправили.
23 jbco
 
13.01.12
12:36
(22)В последней КД обработка "Универсальный обмен данными XML" версии 2.1.5;
УПП, редакция 1.3. Версия, скажем так, своя :)
24 kn
 
13.01.12
12:40
(21)на самом деле из опыта в УТ загвоздки возникали только с договорами(посмортеть порядок в Контрагентах) и ед изм(посмотреть порядок в Номенклатуре).
25 GenV
 
13.01.12
12:43
24+ проверить как вариант обработчики записи контрагента. Там тоже может быть сброс/изменение реквизитов. Хоть там и идет проверка ОбменДанными.Загрузка = Истина.
26 jbco
 
13.01.12
13:02
(17)Поменял порядок ПКС для ПКО одного из документов. Выгрузил только этот документ -- все выгрузилось хорошо.

Выгрузил отдельно справочник Контрагенты -- все хорошо.

Выгрузил отдельно справочник Договоры -- опять Контрагенты теряют ссылку на ОсновнойДоговор. Т.о. все равно надо делать что-то типа (9) из v8: Конвертация ЕдиницИзмерения


(24)Когда проблемы возникнут будет уже поздно :(

(25)Думаю, что дело не в этом
27 GenV
 
13.01.12
14:35
(26) Ты прав. Баг. Когда выгружаешь только договор, то сначала выгружается владелец-контрагент. При этом выгружаемый договор уже помечается в списке выгруженных (нпп) и в качестве основного договора выгрузится его нпп. А так как контрагент выгрузился ранее договора - свойство будет пустым. Вечерком покопаюсь как обойти. Как вариант: в ПередВыгрузкой ПВД справочника договоры добавить ВыгрузитьПоПравилу(Объект.Владелец) (или проверить по условию основного договора).
Основная теорема систематики: Новые системы плодят новые проблемы.