Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 10:31

Идентификация объекта. Различные конфигурации.

Автор Lled, 11 авг 2014, 21:18

0 Пользователей и 1 гость просматривают эту тему.

Lled

Здравствуйте. Изучаю обмен данными между двумя различными конфигурациями. Назовем базы "Источник" и "Приемник". Обмен односторонний. Из справочника Источника выгружаются данные в XML для загрузки в Приемник.

Вопрос: как сопоставлять элементы справочников Источника и Приемника?

По "Ссылке" не получится, т.к. в Приемнике для элементов справочника Ссылку не отредактировать.

По "Наименованию" еще можно, но встает проблема с удаленными объектами (совсем удаленными). Ведь при выгрузке в XML от этих объектов остались только название справочника и ссылка, и в Приемнике их так не найти.

Еще есть извращенный вариант. В Приемнике в справочнике создать поле для ссылки из справочника Источника. Но это мне кажется совсем неправильным.

GRADUS

Изобретаешь велосипед? В типовых конфигурациях есть регистр "Соответствие объектов иб"

Lled

Вчера ночью почти изобрел. В принимающей конфигурации данные элемента читаю из XML в структуру. Потом эту структуру обрабатываю процедурой:
Процедура ОбработатьСтруктуру(Структура1, Отправитель)
ПродуктСсылка = Справочники.ПродуктыСФермы.ПолучитьСсылку(Новый УникальныйИдентификатор(Структура1["Ссылка"]));
ФлагЭлемНайден = Истина;
ПродуктЭлем = ПродуктСсылка.ПолучитьОбъект();
Если ПродуктЭлем = Неопределено Тогда
ПродуктЭлем = Справочники.ПродуктыСФермы.СоздатьЭлемент();
ПродуктЭлем.УстановитьСсылкуНового(ПродуктСсылка);
ПродуктЭлем.УстановитьНовыйКод();
ПродуктЭлем.Цена = 0;
КонецЕсли;
ПродуктЭлем.ОбменДанными.Отправитель = Отправитель;
ПродуктЭлем.ОбменДанными.Загрузка = Истина;
ПродуктЭлем.ПометкаУдаления = Структура1["ПометкаУдаления"] = "true";
ПродуктЭлем.Наименование = Структура1["Наименование"];
ПродуктЭлем.Колво = Число(Структура1["Колво"]);
Если Структура1["ОбластьФермы"] = "Овощи" Тогда
ПродуктЭлем.ОбластьФермы = Перечисления.ОбластиФермы.Огород;
Иначе
ПродуктЭлем.ОбластьФермы = Перечисления.ОбластиФермы.Сад;
КонецЕсли;
ПродуктЭлем.Записать();
КонецПроцедуры

Удаление осталось написать, но это уже будет не сложно, т.к. элемент уже можно найти. А за информацию спасибо, посмотрю.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск