Создание неуникального индекса в таблице табличного справочника НСИ

На языке Fore и Fore.NET приведены примеры создания неуникального индекса в таблице табличного справочника НСИ. Данный индекс позволят быстрее выполнять запросы.

Для выполнения примеров предполагается наличие табличного справочника НСИ с идентификатором «MDM_DICT_INDEX». Данный справочник должен содержать неуникальный ключ с идентификатором «NUI0». В состав ключа входят только простые атрибуты, содержащие одно значение.

Результат выполнения примеров: в дочерней таблице справочника «MDM_DICT_INDEX» будет создан неуникальный индекс на основе неуникального ключа «NUI0».

Примечание. Если неуникальный ключ в табличном справочнике НСИ содержит заимствованные атрибуты или атрибуты с множественными значениями, то создание неуникального индекса на его основе невозможно.

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    Dict: IRdsDictionary;
    Keys: IRdsNonUniqueKeys;
    Key: IRdsNonUniqueKey;
Begin
    // Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    // Получаем табличный справочник НСИ
    Dict := MB.ItemById("MDM_DICT_INDEX").Edit As IRdsDictionary;
    // Получаем коллекцию неуникальных ключей табличного справочника НСИ
    Keys := Dict.NonUniqueKeys;
    // Находим ключ с идентификатором NUI0
    Key := Keys.FindById("NUI0");
    // Создаем на основе данного ключа неуникальный индекс в дочерней таблице справочника
    (Key As IMetaIndex).Enabled := True;
    // Сохраняем изменения
    (Key.Dictionary As IMetabaseObject).Save;
End Sub UserProc;

Пример Fore.NET

Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Dict: IRdsDictionary;
    Keys: IRdsNonUniqueKeys;
    Key: IRdsNonUniqueKey;
Begin
    // Получаем текущий репозиторий
    MB := Params.Metabase;
    // Получаем табличный справочник НСИ
    Dict := MB.ItemById["MDM_DICT_INDEX"].Edit() As IRdsDictionary;
    // Получаем коллекцию неуникальных ключей табличного справочника НСИ
    Keys := Dict.NonUniqueKeys;
    // Находим ключ с идентификатором NUI0
    Key := Keys.FindById("NUI0");
    // Создаем на основе данного ключа неуникальный индекс в дочерней таблице справочника
    (Key As IMetaIndex).Enabled := True;
    // Сохраняем изменения
    (Key.Dictionary As IMetabaseObject).Save();
End Sub;

См. также:

Примеры