DataDomain: DbDataDomain;
DataDomain: Prognoz.Platform.Interop.Dal.DbDataDomain;
Свойство DataDomain возвращает тип данных для хранения в атрибуте многобайтовой информации.
Если свойство DataDomain имеет значение DbDataDomain.Memo, а свойство IDimAttribute.DataType - значение DbDataType.String, то атрибут имеет тип «Длинный текст».
При работе с атрибутом «Длинный текст» учитывайте следующие ограничения:
если используется СУБД Oracle или Teradata, то нельзя выполнять поиск по значению данного атрибута;
атрибуты данного типа поддерживаются только для табличных справочников НСИ и составных табличных справочников НСИ;
данные атрибуты не могут входить в уникальные и неуникальные индексы;
выборка и сохранение данных атрибутов могут проходить медленнее по сравнению с обычными текстовыми атрибутами.
Для табличных справочников НСИ и составных табличных справочников НСИ DataDomain может принимать значения DbDataDomain.Memo или DbDataDomain.None.
Для выполнения примера в репозитории предполагается наличие табличного справочника НСИ с идентификатором «TMDMDICT_MEMOTMDMDICT_MEMO».
Для выполнения примера добавьте ссылки на системные сборки: Dal, Dimensions, Metabase.
Sub UserProc;
Var
mb: IMetabase;
dimension: IDimensionModel;
attribute: IDimAttribute;
attributes: IDimAttributes;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем табличный справочник НСИ
dimension := mb.ItemById("TMDMDICT_MEMO").Bind As IDimensionModel;
// Получаем атрибуты справочника
attributes := dimension.Attributes;
// Перебираем полученные атрибуты
For i := 0 To attributes.Count - 1 Do
attribute := attributes.Item(i);
// Если атрибут имеет тип «Длинный текст», то выводим информацию о нем
If (attribute.DataDomain = DbDataDomain.Memo) And
(attribute.DataType = DbDataType.String) Then
Debug.WriteLine("Наименование: " + attribute.Name);
Debug.WriteLine("Идентификатор: " + attribute.Id);
Debug.WriteLine("Ключ: " + attribute.Key.ToString);
End If;
End For;
End Sub UserProc;
В результате выполнения примера в окно консоли будет выведена информация об атрибутах типа «Длинный текст», если они присутствуют в справочнике НСИ.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Dimensions;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
dimension: IDimensionModel;
attribute: IDimAttribute;
attributes: IDimAttributes;
i: Integer;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем табличный справочник НСИ
dimension := mb.ItemById["TMDMDICT_MEMO"].Bind() As IDimensionModel;
// Получаем атрибуты справочника
attributes := dimension.Attributes;
// Перебираем полученные атрибуты
For i := 0 To attributes.Count - 1 Do
attribute := attributes.Item[i];
// Если атрибут имеет тип «Длинный текст», то выводим информацию о нем
If (attribute.DataDomain = DbDataDomain.dddMemo) And
(attribute.DataType = DbDataType.ddtString) Then
System.Diagnostics.Debug.WriteLine("Наименование: " + attribute.Name);
System.Diagnostics.Debug.WriteLine("Идентификатор: " + attribute.Id);
System.Diagnostics.Debug.WriteLine("Ключ: " + attribute.Key.ToString());
End If;
End For;
End Sub;
См. также: