На языке Fore и Fore.NET приведены примеры создания неуникального индекса в таблице табличного справочника НСИ. Данный индекс позволят быстрее выполнять запросы.
Для выполнения примеров предполагается наличие табличного справочника НСИ с идентификатором «MDM_DICT_INDEX». Данный справочник должен содержать неуникальный ключ с идентификатором «NUI0». В состав ключа входят только простые атрибуты, содержащие одно значение.
Результат выполнения примеров: в дочерней таблице справочника «MDM_DICT_INDEX» будет создан неуникальный индекс на основе неуникального ключа «NUI0».
Примечание. Если неуникальный ключ в табличном справочнике НСИ содержит заимствованные атрибуты или атрибуты с множественными значениями, то создание неуникального индекса на его основе невозможно.
Добавьте ссылки на системные сборки: 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;
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;
См. также: