|
Обмен данными. Идентифицировать объект. | ☑ | ||
---|---|---|---|---|
0
Lled
11.08.14
✎
21:13
|
Здравствуйте. Изучаю обмен данными между двумя различными конфигурациями. Назовем базы "Источник" и "Приемник". Обмен односторонний. Из справочника Источника выгружаются данные в XML для загрузки в Приемник.
Вопрос: как сопоставлять элементы справочников Источника и Приемника? По "Ссылке" не получится, т.к. в Приемнике для элементов справочника Ссылку не отредактировать. По "Наименованию" еще можно, но встает проблема с удаленными объектами (совсем удаленными). Ведь при выгрузке в XML от этих объектов остались только название справочника и ссылка, и в Приемнике их так не найти. Еще есть извращенный вариант. В Приемнике в справочнике создать поле для ссылки из справочника Источника. Но это мне кажется совсем неправильным. |
|||
1
welwel
11.08.14
✎
21:44
|
(0) а чем синхронизация по УИН не устраивает?
|
|||
2
sda553
11.08.14
✎
21:47
|
(1) Это и есть "по ссылке". Только фразу "в приемнике для элементов справочника Ссылку не отредактировать" я пока что не понял
|
|||
3
sda553
11.08.14
✎
21:51
|
(0) А, я кажется понял эту фразу
Ссылка редактируется в приемнике следующим способом: Берется элемент в котором надо поменять ссылку (уин) Копируется в новый элемент с нужной ссылкой (дубль) Производится поиск и замена элемента справочника в БД (обработка стандартная) со старой ссылки на новую. Старая ссылка удаляется |
|||
4
Lled
11.08.14
✎
22:44
|
(3)
1) ... 2) Копируется в новый элемент с нужной ссылкой (дубль) 3) Производится поиск и замена элемента справочника в БД (обработка стандартная) со старой ссылки на новую. 4) Старая ссылка удаляется А можно поподробнее? Желательно пример кода. "Копируется в новый элемент с нужной ссылкой (дубль)" НовыйЭлем = Справочники.МойСправочник.СоздатьЭлемент(); НовыйЭлем.Ссылка = ТребуемаяСсылка; (Вот здесь платформа жестко ругнется) |
|||
5
Lled
11.08.14
✎
22:45
|
Стоп! Кажется, нашел то что искал: УстановитьСсылкуНового(). Сейчас испытаю...
|
|||
6
Lled
12.08.14
✎
00:01
|
Все, тема закрыта. Всем спасибо.
|
|||
7
Lled
12.08.14
✎
07:58
|
В Приемнике данные элемента читаю из XML в структуру. Потом эту структуру обрабатываю процедурой:
Процедура ОбработатьСтруктуру(Структура1, Отправитель) ПродуктСсылка = Справочники.ПродуктыСФермы.ПолучитьСсылку(Новый УникальныйИдентификатор(Структура1["Ссылка"])); ФлагЭлемНайден = Истина; ПродуктЭлем = ПродуктСсылка.ПолучитьОбъект(); Если ПродуктЭлем = Неопределено Тогда ПродуктЭлем = Справочники.ПродуктыСФермы.СоздатьЭлемент(); ПродуктЭлем.УстановитьСсылкуНового(ПродуктСсылка); ПродуктЭлем.УстановитьНовыйКод(); КонецЕсли; ПродуктЭлем.ОбменДанными.Отправитель = Отправитель; ПродуктЭлем.ОбменДанными.Загрузка = Истина; ПродуктЭлем.ПометкаУдаления = Структура1["ПометкаУдаления"] = "true"; ПродуктЭлем.Наименование = Структура1["Наименование"]; ПродуктЭлем.Колво = Число(Структура1["Колво"]); ПродуктЭлем.Цена = 0; Если Структура1["ОбластьФермы"] = "Овощи" Тогда ПродуктЭлем.ОбластьФермы = Перечисления.ОбластиФермы.Огород; Иначе ПродуктЭлем.ОбластьФермы = Перечисления.ОбластиФермы.Сад; КонецЕсли; ПродуктЭлем.Записать(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |