Имя: Пароль:
1C
1С v8
Обмен XML: при обмене задваиваются предопределенные элементы... как побороть?
0 dave2000
 
09.11.16
16:21
Есть обмен между мобильным приложением и центральной базой, используется стандартный механизм обмена через ЧтениеXML()/ЗаписьXML(). Структура данных справочников в обеих базах одинакова, как и должно быть. В одном из справочников есть предопределенные элементы, они тоже для идентичности добавлены в обе базы. Но теперь, когда данные справочника одной базы зарегистрировать в плане обмена, предопределенные элементы не накладываются друг на друга, а задваиваются (появляются такие же копии с кружочком в иконке). Что я неправильно делаю? Как побороть?
1 Мойдодыр
 
09.11.16
16:22
не переноси предопределенные или назначь им одинаковый гуид
2 kossmatiy
 
09.11.16
16:23
(0) поиск по гуид отключи
3 dave2000
 
09.11.16
16:24
Думал в одной из баз предопределенные элементы удалить, чтобы они автоматом перенеслись из другой базы, но тогда везде перестаёт работать код, где используется прямое обращение к предопределенным элементам (в конфигураторе то они не заданы).
4 dave2000
 
09.11.16
16:27
(2) Можно подробнее, как? Я не использую обработку "универсальный обмен данными", где есть эта галочка, я использую стандартные механизмы ЗаписьXML, а потом ЧтениеXML и затем запись объекта.
5 Мойдодыр
 
09.11.16
16:28
удали, потом сразу зарегестрируй и переноси
6 Fragster
 
гуру
09.11.16
16:28
(4) плохо :)
7 Fragster
 
гуру
09.11.16
16:29
можно посмотреть, как сделано в "Выгрузка и загрузка данных XML.epf" с ИТС
8 Мойдодыр
 
09.11.16
16:31
(7) Задвоит предеопределенные легко данная обработка
9 EugeniaK
 
09.11.16
16:33
(8) Нет. Там специальная обработка предопределенных. Она их не задваивает.
10 EugeniaK
 
09.11.16
16:34
(4) В тех, что задвоились, оставь вариант с одним и тем же гуидом в обеих базах. Второй элемент удали с заменой на новый.
11 kossmatiy
 
09.11.16
16:35
После переноса (задвоения) отвяжи признак предопределенности у ненужных эл-тов и не используй их более. Ну и ссылки с ними все замени на новые.
12 kossmatiy
 
09.11.16
16:37
(9) Раньше кстати задваивала легко. Может что то изменилось теперь или я какую то галку прогледел?
13 kossmatiy
 
09.11.16
16:39
(11) Конфа кстати не озвучена. В типовых сейчас есть обработка "Поиск и замена дублей". Прекрасно справляется с заменой в таких случаях.
14 dave2000
 
09.11.16
16:48
(7) (9) (12)

В модуле обработки есть процедурки
- ВыгрузитьТаблицуПредопределенных(ЗаписьXML)
- ЗагрузитьТаблицуПредопределенных(ЧтениеXML)

используются в процедурах ВыполнитьВыгрузку() и ВыполнитьЗагрузку(). Сейчас поковыряю, может это оно.

(13) Обе конфы самописные.
15 dave2000
 
09.11.16
17:19
Нашел правильное решение! Внизу статьи: http://its.1c.ua/db/metod8dev#content:5367:hdoc

В базе-получателе для справочника нужно установить свойство "Обновление предопределенных данных" = "Не обновлять автоматически" (вместо "Авто"), тогда элементы справочника не будут создаваться сразу. А уже при загрузке данных из источника предопределенные элементы создадутся с ГУИДами базы источника и в дальнейшем будут нормально накладываться.

А метод (14) тоже правильный, но он скорее подходит для независимых баз, где не хотелось бы изменять метаданные.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн