IRdsDictionaryBatch.Filter

Синтаксис Fore

Filter: IRdsDictionaryFilterConditions;

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

Filter: Prognoz.Platform.Interop.Rds.IRdsDictionaryFilterConditions;

Описание

Свойство доступно только для чтения.

Свойство Filter возвращает коллекцию фильтров, по которым отбираются элементы для пакета.

Комментарии

По умолчанию фильтрация элементов не производится. Каждый фильтр в коллекции реализован интерфейсом IRdsDictionaryFilterCondition.

Пример Fore

Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «RDS_REPO», содержащим неверсионный справочник НСИ с идентификатором «DICT». Справочник содержит атрибут логического типа с идентификатором «ACTUAL».

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

Sub UserProc;
Var
    mb: IMetabase;
    RdrRepoDescr: IMetabaseObjectDescriptor;
    RdsDictObj: IMetabaseObject;
    DictInst: IRdsDictionaryInstance;
    DictBatch: IRdsDictionaryBatch;
    DelBatch: IRdsDictionaryBatchDelete;
    BatchFilters: IRdsDictionaryFilterConditions;
    Filter: IRdsDictionaryFilterCondition;
    Dict: IRdsDictionary;
    Attr: IRdsAttribute;
    Doc: FreeThreadedDOMDocument60;
    Element: IXmlDomElement;
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;
    BatchFilters := DelBatch.Filter;
    If BatchFilters.Count > 0 Then
        BatchFilters.Clear;
    End If;
    Dict := DelBatch.Dictionary.Dictionary;
    Attr := Dict.Attributes.FindById("ACTUAL");
    Filter := BatchFilters.Add(Attr);
    Debug.WriteLine(Filter.Attribute.Name);
    Filter.Value := False;
    Doc := New FreeThreadedDOMDocument60.Create;
    Element := Doc.createElement("BatchFilter");
    BatchFilters.SaveTo(Element);
    Doc.appendChild(Element);
    Doc.save("C:\BatchFilter.xml");
    DelBatch.Execute;
    RdsDictObj.Save;
End Sub UserProc;

После выполнения примера будет создан пакет, предназначенный для удаления элементов. Для пакета будет создан фильтр по значению атрибута «ACTUAL». Наименование атрибута будет выведено в окно консоли. Фильтр будет сохранен в 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;
    Dict: IRdsDictionary;
    Attr: IRdsAttribute;
    Doc: FreeThreadedDOMDocument60;
    Element: IXmlDomElement;
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;
    BatchFilters := DelBatch.Filter;
    If BatchFilters.Count > 0 Then
        BatchFilters.Clear();
    End If;
    Dict := DelBatch.Dictionary.Dictionary;
    Attr := Dict.Attributes.FindById("ACTUAL");
    Filter := BatchFilters.Add(Attr);
    System.Diagnostics.Debug.WriteLine(Filter.Attribute.Name);
    Filter.Value := False;
    Doc := New FreeThreadedDOMDocument60.Create();
    Element := Doc.createElement("BatchFilter");
    BatchFilters.SaveTo(Element);
    Doc.appendChild(Element);
    Doc.save("C:\BatchFilter.xml");
    DelBatch.Execute();
    RdsDictObj.Save();
End Sub;

См. также:

IRdsDictionaryBatch