IRdsDictionaryFilterConditions.LoadFrom

Синтаксис Fore

LoadFrom(Element: Variant);

Синтаксис Fore.NET

LoadFrom(Element: object);

Параметры

Element. Объект, из которого будут загружены параметры фильтра.

Описание

Метод LoadFrom загружает из XML параметры коллекции фильтров.

Комментарии

Для сохранения параметров коллекции фильтров используйте IRdsDictionaryFilterConditions.SaveTo.

Пример Fore

Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «RDS_REPO», содержащим неверсионный справочник НСИ с идентификатором «DICT». В файловой системе должен содержаться файл «C:\BatchFilter.xml» с параметрами коллекции фильтров в формате XML.

Также необходимо добавить ссылки на системные сборки «Metabase», «Rds» и «Xml».

Sub UserProc;
Var
    mb: IMetabase;
    RdrRepoDescr: IMetabaseObjectDescriptor;
    RdsDictObj: IMetabaseObject;
    DictInst: IRdsDictionaryInstance;
    DictBatch: IRdsDictionaryBatch;
    DelBatch: IRdsDictionaryBatchDelete;
    BatchFilters: IRdsDictionaryFilterConditions;
    Filter: IRdsDictionaryFilterCondition;
    Doc: FreeThreadedDOMDocument60;
Begin
    mb := MetabaseClass.Active;
    RdrRepoDescr := mb.ItemById("RDS_REP");
    RdsDictObj := mb.ItemByIdNamespace("DICT", RdrRepoDescr.Key).Edit;
    DictInst := RdsDictObj.Open(NullAs IRdsDictionaryInstance;
    DictBatch := DictInst.CreateBatch(RdsDictionaryBatchType.Delete);
    DelBatch := DictBatch As IRdsDictionaryBatchDelete;
    Doc := New FreeThreadedDOMDocument60.Create;
    Doc.load("C:\BatchFilter.xml");
    BatchFilters := DelBatch.Filter;
    BatchFilters.LoadFrom(Doc.documentElement);
    If BatchFilters.Count > 0 Then
        Filter := BatchFilters.Item(0);
        Debug.WriteLine("Удаляем фильтр: ");
        Debug.WriteLine("    атрибут: " + Filter.Attribute.Name);
        Debug.WriteLine("    значение: " + Filter.Value);
        BatchFilters.Remove(0);
    End If;
    DelBatch.Execute;
    RdsDictObj.Save;
End Sub UserProc;

После выполнения примера будет создан пакет для удаления элементов, параметры которого будут загружены из XML-документа «C:\BatchFilter.xml». Первый фильтр в коллекции будет удален. Затем пакет будет выполнен.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.MsXml2;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    RdrRepoDescr: IMetabaseObjectDescriptor;
    RdsDictObj: IMetabaseObject;
    DictInst: IRdsDictionaryInstance;
    DictBatch: IRdsDictionaryBatch;
    DelBatch: IRdsDictionaryBatchDelete;
    BatchFilters: IRdsDictionaryFilterConditions;
    Filter: IRdsDictionaryFilterCondition;
    Doc: FreeThreadedDOMDocument60;
Begin
    mb := Params.Metabase;
    RdrRepoDescr := mb.ItemById["RDS_REP"];
    RdsDictObj := mb.ItemByIdNamespace["DICT", RdrRepoDescr.Key].Edit();
    DictInst := RdsDictObj.Open(NullAs IRdsDictionaryInstance;
    DictBatch := DictInst.CreateBatch(RdsDictionaryBatchType.rdbtDelete);
    DelBatch := DictBatch As IRdsDictionaryBatchDelete;
    Doc := New FreeThreadedDOMDocument60.Create();
    Doc.load("C:\BatchFilter.xml");
    BatchFilters := DelBatch.Filter;
    BatchFilters.LoadFrom(Doc.documentElement);
    If BatchFilters.Count > 0 Then
        Filter := BatchFilters.Item[0];
        System.Diagnostics.Debug.WriteLine("Удаляем фильтр: ");
        System.Diagnostics.Debug.WriteLine("    атрибут: " + Filter.Attribute.Name);
        System.Diagnostics.Debug.WriteLine("    значение: " + Filter.Value);
        BatchFilters.Remove(0);
    End If;
    DelBatch.Execute();
    RdsDictObj.Save();
End Sub;

См. также:

IRdsDictionaryFilterConditions