NonUniqueKeys: IRdsNonUniqueKeys;
NonUniqueKeys: Prognoz.Platform.Interop.Rds.IRdsNonUniqueKeys;
Свойство NonUniqueKeys возвращает коллекцию неуникальных ключей справочника НСИ.
Для получения коллекции уникальных ключей справочника НСИ используйте свойство IRdsDictionary.UniqueKeys.
Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «NSI_1», содержащего справочник НСИ с идентификатором «DICT_1».
Добавьте ссылки на системные сборки «Metabase», «Rds», «Dal».
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Dict: IRdsDictionary;
Attrs: IRdsAttributes;
Attr: IRdsAttribute;
Keys: IRdsNonUniqueKeys;
Key: IRdsNonUniqueKey;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemByIdNamespace("DICT_1", MB.ItemById("NSI_1").Key).Edit;
Dict := MObj As IRdsDictionary;
// Создаем новый атрибут
Attrs := Dict.Attributes;
Keys := Dict.NonUniqueKeys;
Attr := Attrs.Add;
Attr.DataType := DbDataType.String;
Attr.Id := "GosNomer";
Attr.Name := "Государственный номер";
// Создаем неуникальный ключ
Key := Keys.Add;
Key.Id := "Index_1";
Key.Name := "Индекс 1";
Key.Contains(Attr) := True;
// Сохраняем изменения
(Key.Dictionary As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера в справочнике НСИ будет создан пользовательский атрибут. По данному атрибуту создан неуникальный ключ справочника НСИ.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Rds;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
Dict: IRdsDictionary;
Attrs: IRdsAttributes;
Attr: IRdsAttribute;
Keys: IRdsNonUniqueKeys;
Key: IRdsNonUniqueKey;
Begin
MB := Params.Metabase;
MObj := MB.ItemByIdNamespace["Dict_1", MB.ItemById["NSI_1"].Key].Edit();
Dict := MObj As IRdsDictionary;
// Создаем новый атрибут
Attrs := Dict.Attributes;
Keys := Dict.NonUniqueKeys;
Attr := Attrs.Add();
Attr.DataType := DbDataType.ddtString;
Attr.Id := "GosNomer";
Attr.Name := "Государственный номер";
// Создаем неуникальный ключ
Key := Keys.Add();
Key.Id := "Index_1";
Key.Name := "Индекс 1";
Key.Contains[Attr] := True;
// Сохраняем изменения
(Key.Dictionary As IMetabaseObject).Save();
End Sub
См. также: