Имя: Пароль:
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) тоже правильный, но он скорее подходит для независимых баз, где не хотелось бы изменять метаданные.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс