Для того чтобы передать какой-либо объект в удаленную систему средствами DICS администратору необходимо настроить правила преобразования объекта и метаданные.
Метаданные – это структурированное описание данных, которые нужно передавать в удаленную систему. Метаданные представляют собой набор атрибутов. Каждый атрибут характеризуется именем и типом. Метаданные идентифицируются по уникальному идентификатору и версии.
При создании новой версии метаданных поле «Владелец» автоматически заполняется именем текущей системы, многие администраторы не обращают внимания на этот момент и через какое-то время обращаются в службу поддержки с вопросом «Почему изменения записи справочника не передаются в удаленную систему? Ошибок ведь никаких не возникает!».
Кто же такой этот владелец метаданных и как он влияет на передачу объектов между системами?
Владелец метаданных - это система объединения, в которой данные справочника, передаваемые с помощью метаданных, имеют приоритет над данными справочников других систем, передаваемых с помощью тех же метаданных. Если запись справочника была создана в системе-владельце или была один раз принята в эту систему, то во всех других системах будут приниматься данные из системы-владельца. Принять изменения из других систем нельзя. Другими словами если создать запись справочника в системе 1, которая является владельцем метаданных, отправить в систему 2, внести какие либо изменения и отправить обратно, в системе 1 эти изменения приняты не будут.
Ниже приведу таблицу зависимости внесения изменений в систему от владельца метаданных для разных объектов.
Моя система является владельцем |
Документ прислан из системы-владельца |
Импортировать карточку с изменением своих локальных данных |
---|---|---|
— |
— |
— |
— |
+ |
+ |
+ |
— |
— |
+ |
+ |
— |
Моя система является владельцем |
Запись прислана из системы-владельца |
В моей системе такая запись есть |
Импортировать запись с изменением своих локальных данных |
---|---|---|---|
— |
— |
— |
+ |
— |
— |
+ |
— |
— |
+ |
— |
+ |
— |
+ |
+ |
+ |
+ |
— |
— |
+ |
+ |
— |
+ |
— |
+ |
+ |
— |
+ |
+ |
+ |
+ |
— |
Владельца метаданных можно не заполнять, казалось бы, это решит проблему с передачей объектов, ведь владельца у них уже нет, значит, и передаваться они будут между системами без каких-либо ограничений. Однако это не так, если владельца метаданных не указывать, то системой-владельцем объекта будет являться та система, из которой он впервые был отправлен в другую систему.
Если владельца метаданных не указывать, информация о том, кто является владельцем объекта при импорте берется из:
Изучив представленные выше таблицы можно сделать вывод, что для того чтобы объекты беспрепятственно передавались между всеми системами объединения нам необходимо:
Реализовать подобный функционал довольно просто, для этого необходимо в правилах экспорта объекта в каждой системе прописать переопределения владельца, в событиях «До применения правила» назначать текущую систему владельцем:
GUID = Copy(ObjectGlobalID;2;Length(ObjectGlobalID)-2)
SQL(Format("UPDATE SCGlobalIDCorrespondence set isOwner = 1 where GlobalID = '%S'"; GUID))
В событиях «После применения правила» указать, что система владельцем не является:
GUID = Copy(ObjectGlobalID;2;Length(ObjectGlobalID)-2)
SQL(Format("UPDATE SCGlobalIDCorrespondence set isOwner = 0 where GlobalID = '%S'"; GUID))
После внесения изменений в события объекты всех систем будут передаваться независимо от того, где объект был создан.
Авторизуйтесь, чтобы написать комментарий