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;
В результате выполнения примера будут сопоставлены атрибуты справочника и справочник будет определен календарным.
См. также: