Dictionaries: IRdsDictionarySet;
Свойство Dictionaries возвращает коллекцию справочников, данные которых необходимо синхронизировать.
Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «NSI_1». Добавьте ссылки на системные сборки «Metabase», «Rds».
Function CreateList(Parent: Integer; DictSet: IRdsDictionarySet; MB: IMetabase): IRdsDictionarySet;
Var
MObj: IMetabaseObjectDescriptor;
MObjChilds: IMetabaseObjectDescriptors;
MObjChildDesct: IMetabaseObjectDescriptor;
MObjChild: IMetabaseObject;
Dict: IRdsDictionary;
i: Integer;
Begin
MObj := MB.Item(Parent);
MObjChilds := MObj.Children;
For i := 0 To MObjChilds.Count - 1 Do
MObjChildDesct := MObjChilds.Item(i);
// Если справочник либо составной справочник НСИ
MObjChild := MObjChildDesct.Bind;
If MObjChild Is IRdsDictionary Then
Dict := MObjChild As IRdsDictionary;
If Dict.Distributed Then
DictSet.Add(Dict);
End If;
// Если папка в репозитории НСИ
Elseif MObjChild Is IFolder Then
CreateList(MObjChild.Key, DictSet, MB);
End If;
End For;
Return DictSet;
End Function CreateList;
Sub UserPr;
Var
MB: IMetabase;
MObj: IMetabaseObject;
NSI: IRdsDatabase;
NSIInst: IRdsDatabaseInstance;
Replic: IRdsReplicator;
DictSet: IRdsDictionarySet;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("NSI_1").Bind;
NSI := MObj As IRdsDatabase;
NSIInst := NSI.Open(Null);
Replic := NSIInst.CreateReplicator;
DictSet := Replic.Dictionaries;
DictSet := CreateList(MObj.Key, DictSet, MB);
Replic.SaveToFile("C:\Sinc.rpl");
End Sub UserPr;
После выполнения процедуры UserPr будет осуществлен рекурсивный просмотр всех справочников, содержащихся в репозитории НСИ. Справочники, в которых содержится уникальный идентификатор элементов, будут добавлены в список синхронизации. Данные всех справочников, попавших в список, будут сохранены в файл «C:\Sinc.rpl».
См. также: