IsCalendar: Boolean;
IsCalendar: Boolean;
Свойство IsCalendar определяет, используется ли справочник в качестве календарного.
Для определения справочника календарным необходимо наличие обязательных атрибутов:
BLOCK_TYPE;
START_DATE;
NAME;
ID;
ORDER.
Для сопоставления атрибутов следует передать в свойство IDimensionModel.AsCalendar необходимый набор атрибутов и уровней.
Для выполнения примера требуется наличие табличного справочника, содержащего атрибуты:
BLOCK_TYPE_REN;
START_DATE_REN;
NAME_REN;
ID_REN;
ORDER_REN.
Подключите системные сборки Metabase и Dimensions.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Dim: IDimensionModel;
DimAsCln: IDimAsCalendar;
sAttr: String;
pAttr: IDimAttribute;
eLevel: DimCalendarLevel;
I: Integer;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("OBJ12514").Edit;
Dim := MObj As IDimensionModel;
DimAsCln := Dim.AsCalendar;
// Сопостовляем атрибуты
For I := 0 To DimAsCln.Attrs.Count - 1 Do
sAttr := DimAsCln.Attrs.Item(I).Id;
pAttr := Dim.Attributes.FindById(sAttr + "_REN");
DimAsCln.Attrs.IdAttr(sAttr) := pAttr;
// Выводим в консоль идентификаторы атрибутов
debug.WriteLine(DimAsCln.Attrs.Item(I).Attr.Id);
End For;
// Сопостовляем уровни
For I := 0 To DimAsCln.Levels.Count - 1 Do
eLevel := DimAsCln.Levels.Item(I).Level;
DimAsCln.Levels.LevelKey(eLevel) := 100 + (eLevel As Integer);
// Выводим в консоль ключи уровней
debug.WriteLine(DimAsCln.Levels.Item(I).Key);
End For;
// Объявляем справочник календарным
Dim.IsCalendar := True;
MObj.Save;
End Sub UserProc;
В результате выполнения примера будут сопоставлены атрибуты справочника и справочник будет определен календарным.
Пример аналогичен примеру на Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dimensions;
Sub UserProc(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
Dim: IDimensionModel;
DimAsCln: IDimAsCalendar;
sAttr: String;
pAttr: IDimAttribute;
eLevel: DimCalendarLevel;
I: Integer;
Begin
MB := Params.Metabase;
MObj := MB.ItemById["OBJ12514"].Edit();
Dim := MObj As IDimensionModel;
DimAsCln := Dim.AsCalendar;
// Сопостовляем атрибуты
For I := 0 To DimAsCln.Attrs.Count - 1 Do
sAttr := DimAsCln.Attrs.Item[I].Id;
pAttr := Dim.Attributes.FindById(sAttr + "_REN");
DimAsCln.Attrs.IdAttr[sAttr] := pAttr;
End For;
// Сопостовляем уровни
For I := 0 To DimAsCln.Levels.Count - 1 Do
eLevel := DimAsCln.Levels.Item[I].Level;
DimAsCln.Levels.LevelKey[eLevel] := 100 + (eLevel As Integer);
End For;
// Объявляем справочник календарным
Dim.IsCalendar := True;
MObj.Save();
End Sub UserProc;
См. также: