Обмен между базами при помощи плана обмена #566519


#0 by Ranger_83
Здравствуйте коллеги. Появилась нетривиальная задача,помогите сообразить. Настроил обмен между 2-мя базами УПП используя план обмена УППУПП.Обмен в целом проходит нормально,но закралась маленькая ошибка.В правилах была опция продолжить искать по полям поиска,если по уиду не найден.Речь идет о справочнике сотрудники,а поле поиска наименование. Так вот в базе-приемнике одноименные сотрудники свернулись в одного.Соответственно кадровые документы теперь не проводятся... Правила то я поправил,но повторная выгрузка уже не дает ожидаемого эффекта,поскольку сопоставление объектов произошло при первой загрузке.База-приемник создала соответствие в регистре сведений и отослала его в базу-источник.Теперь объекты из базы-источника выгружаются с одним и тем же ключом писка {КлючПоискаВИБПриемнике},хотя <Свойство Имя="{УникальныйИдентификатор}"> разные. Я попробовал снести соответствия в обоих базах по сотрудникам и выгрузить еще раз.Создаются сотрудники как положено без сворачивания,НО вместе с уже существующими объектами.В итоге в базе-источнике к примеру 2 сотрудника,а в базе приемнике 3 :) Вот такая петрушка...
#1 by Кокос
сделай выгрузку по коду. а по уиду убери чтобы не искало
#2 by Ranger_83
Это хороший вариант,НО у меня на самом деле несколько баз-источников,а база-приемник одна.Коды могут быть не уникальными... Есть еще одна идея,но я не уверен. Что если обработку ОбменДаннымиXML на время подредактировать. Чтобы объекты искались всегда по свойству {УникальныйИдентификатор} marquiss@qip.ru (09:10:30 26/08/2011) без учета {КлючПоискаВИБПриемнике}. Не уверен,что обработка объектам в базе-приемнике присваивает УникальныйИдентификатор такой же как в источнике
#3 by NcSteel
Уиды тем более могут быть не уникальны. Префикс кода тебя спасет
#4 by Ranger_83
Ты уверен,что Уиды в создаваемых объектах не устанавливаются равными уиду объекта базы-источника?
#5 by NcSteel
Все от рук зависит
#6 by Кокос
уиды для того и созданы что они в разных местах по разному создаются. если конечно базу копируешь то да они копируются но если занов создаешь то всегда уникальны. cls_id в COM объектах также задается.
#7 by Ranger_83
Обработка-то типовая... вот смотри функцию из обработки: Функция УстановитьСсылкуНового(Объект, Менеджер, СвойстваПоиска)
#8 by Кокос
и что? объекд уид всегда при создании уникален. там в поле есть даже помоему уидпроца, место где он создан, время когда создан. и т.д. это я когда на с++ прогил изучал
#9 by Ranger_83
+Вот есть обработка универсальный обмен в формате XML.Там механизм сопоставления объектов не используется.А используется поиск по уиду.Вот я и хочу на время использовать этот механизм
#10 by NcSteel
Чушь.
#11 by NcSteel
В данном случае УИД будет равен УИДу из источника
#12 by NcSteel
Посмотри типовые переносы УТ - БП и т.д. тап поиск не по УИДу .
#13 by Кокос
ну значит мы просто о разных вещах говорим :) я не про данный случай я вообще про уид
#14 by NcSteel
В разных базах Уиды могут совпадать и это не редкость.
#15 by Ranger_83
Что типовые?Правила?
#16 by NcSteel
да .
#17 by NcSteel
Там даже можно выбрать сопоставления :
#18 by Кокос
только при копировании одной базы в другую. старые уиды совпадают. а новые никогда :)
#19 by Ranger_83
Ну хорошо.как считаешь прокатит поиск по уиду?
#20 by Кокос
хе хе. в типовых как раз стоят на правилах лупы :) и когда открываешь правило там стоит галочка "Искать по внутреннему идентификатору". первый поиск всегда по полям поиска идет а потом хрен что сделаешь если не переписать. чушь несешь короче нсстил :)
#21 by Ranger_83
По коду я уже вряд ли смогу искать.Данные уже перенесены и как бы гарантии нет никакой. Вcе-таки я склоняюсь к поиску по уиду
#22 by Кокос
тебе по любому надо какое-то сопоставление сделать будет по какомуто правило. в этом самый гимор :)
#23 by Ranger_83
Скажи,почему нельзя сделать сопоставление по {УникальныйИдентификатор}?
#24 by Кокос
уид в новой базе у объекта другой. там даже должно быть чтото вроде регистра где уид объекта источника сопоставляется с элементом в базе приемника.
#25 by Кокос
ты чего? не видишь в своем тексте? "Новый УникальныйИДентификатор(...))" НОВЫЙ!
#26 by Ranger_83
А в скобочках видишь что подставляется?
#27 by Кокос
блин. для него создается НОВЫЙ уид а не вытаскивается из него старый.
#28 by Ranger_83
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) ПолучитьСсылку (GetRef) Синтаксис: ПолучитьСсылку(<УникальныйИдентификатор>) Параметры: Тип: УникальныйИдентификатор. Уникальный идентификатор, из которого будет формироваться ссылка. Возвращаемое значение: Тип: СправочникСсылка. Описание: Формирует ссылку из значения типа УникальныйИдентификатор. Данный уникальный идентификатор может быть в дальнейшем получен из ссылки методом УникальныйИдентификатор. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если параметр не указан, то будет сформирована новая уникальная ссылка.
#29 by Ranger_83
Ссылка новая,а идентификатор из базы-источника
#30 by Ranger_83
вот смотри из этой же типовой обработки:
#31 by Кокос
ну может быть. попробуй короче :) сделай две копии базы и вперед :)
#32 by Ranger_83
Поменял сове мнение?:)а то споришь
#33 by Jaffar
ИМХО - и ссылка новая, и УИД новый. Когда ты первый раз делал загрузку в эту базу - она посоздавала объекты с новыми УИДами, теперь тебе нужно сопоставить их с УИДами соответствующих сотрудников в базах-источниках.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С