IRdsDictionaryFilterCondition.Value

Синтаксис Fore

Value: Variant;

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

Value: System.Object;

Описание

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

Комментарии

Если не определено свойство Value, то корректная работа фильтра невозможна.

Если Value содержит массив значений типа Variant и свойство IRdsDictionaryFilterCondition.Operation имеет значение:

Пример Fore

Для выполнения примера в репозитории предполагается наличие репозитория НСИ с идентификатором «MDM_REPO». Данный репозиторий должен содержать табличный справочник НСИ с идентификатором «EXP_DICT».

В файловой системе должен быть создан текстовый файл «C:\Data_out.txt».

Добавьте ссылки на системные сборки «Metabase», «Rds», «Dt».

Sub UserProc;
Var
    mb: IMetabase;
    rdsKey: Integer;
    dictObj: IMetabaseObject;
    Dict: IRdsDictionary;
    sExport: IMetaRdsExportSchema;
    i: Integer;
    dictAts: IRdsAttributes;
    Attr: IRdsAttribute;
    attrMap: IRdsExportSchemaAttribute;
    dictFilter: IRdsDictionaryFilterConditions;
    Cond: IRdsDictionaryFilterCondition;
    textCons: IDtTextConsumer;
    dictInst: IRdsDictionaryInstance;
Begin
    mb := MetabaseClass.Active;
    // Получаем ключ репозитория НСИ
    rdsKey := mb.GetObjectKeyById("MDM_REPO");
    // Получаем табличный справочник НСИ
    dictObj := mb.ItemByIdNamespace("EXP_DICT", rdsKey).Edit;
    Dict := dictObj As IRdsDictionary;
    // Создаем новую схему экспорта
    sExport := Dict.ExportSchemas.Add As IMetaRdsExportSchema;
    // Определяем привязку атрибутов справочника к полям приёмника
    dictAts := Dict.Attributes;
    For i := 0 To dictAts.Count - 1 Do
        Attr := dictAts.Item(i);
        attrMap := sExport.AddMapping;
        attrMap.Attribute := Attr;
        attrMap.FieldName := Attr.Id;
    End For;
    // Указываем, что перед экспортом необходимо очистить приёмник
    sExport.ClearBeforeExport := True;
    // Добавляем фильтрацию
    dictFilter := sExport.Filter;
    Attr := dictAts.FindById("KEY");
    Cond := dictFilter.Add(Attr);
    Cond.Value := 0;
    Cond.Operation := RdsConditionOperation.GreaterOrEqual;
    Cond := dictFilter.Add(Attr);
    Cond.Value := 15;
    Cond.Operation := RdsConditionOperation.LesserOrEqual;
    // Настраиваем приемник данных: текстовый файл
    textCons := New DtTextConsumer.Create;
    textCons.File := "c:\Data_out.txt";
    textCons.WriteHeader := True;
    textCons.RowDelimiter := #13 + #10;
    textCons.DelimitedColumnDelimiter := #9;
    textCons.DelimitedTextQualifier := "'";
    sExport.Consumer := textCons;
    // Сохраняем справочник
    dictObj.Save;
    // Выполняем экспорт
    dictInst := dictObj.Open(NullAs IRdsDictionaryInstance;
    dictInst.ExportData(sExport);
End Sub UserProc;

Результат выполнения примера: из табличного справочника НСИ в файл «C:\Data_out.txt» будут экспортированы элементы, значение ключа которых находится в диапазоне [0; 15].

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    rdsKey: uinteger;
    dictObj: IMetabaseObject;
    Dict: IRdsDictionary;
    sExport: IMetaRdsExportSchema;
    i: Integer;
    dictAts: IRdsAttributes;
    Attr: IRdsAttribute;
    attrMap: IRdsExportSchemaAttribute;
    dictFilter: IRdsDictionaryFilterConditions;
    Cond: IRdsDictionaryFilterCondition;
    textCons: IDtTextConsumer;
    dictInst: IRdsDictionaryInstance;
Begin
    mb := Params.Metabase;
    // Получаем ключ репозитория НСИ
    rdsKey := mb.GetObjectKeyById("MDM_REPO");
    // Получаем табличный справочник НСИ
    dictObj := mb.ItemByIdNamespace["EXP_DICT", rdsKey].Edit();
    Dict := dictObj As IRdsDictionary;
    // Создаем новую схему экспорта
    sExport := Dict.ExportSchemas.Add() As IMetaRdsExportSchema;
    // Определяем привязку атрибутов справочника к полям приёмника
    dictAts := Dict.Attributes;
    For i := 0 To dictAts.Count - 1 Do
        Attr := dictAts.Item[i];
        attrMap := sExport.AddMapping();
        attrMap.Attribute := Attr;
        attrMap.FieldName := Attr.Id;
    End For;
    // Указываем, что перед экспортом необходимо очистить приёмник
    sExport.ClearBeforeExport := True;
    // Добавляем фильтрацию
    dictFilter := sExport.Filter;
    Attr := dictAts.FindById("KEY");
    Cond := dictFilter.Add(Attr);
    Cond.Value := 0;
    Cond.Operation := RdsConditionOperation.rcoGreaterOrEqual;
    Cond := dictFilter.Add(Attr);
    Cond.Value := 15;
    Cond.Operation := RdsConditionOperation.rcoLesserOrEqual;
    // Настраиваем приемник данных: текстовый файл
    textCons := New DtTextConsumer.Create();
    textCons.File := "c:\Data_out.txt";
    textCons.WriteHeader := True;
    textCons.DelimitedTextQualifier := "'";
    sExport.Consumer := textCons;
    // Сохраняем справочник
    dictObj.Save();
    // Выполняем экспорт
    dictInst := dictObj.Open(NullAs IRdsDictionaryInstance;
    dictInst.ExportData(sExport);
End Sub;

См. также:

IRdsDictionaryFilterCondition