DateSlice: IMsFormulaTransformSlice;
Свойство DateSlice определяет срез данных, используемый при расчётах с данным термом.
Свойство актуально, если тип терма - срез данных, то есть свойство IMsFormulaTermInfo.Type имеет значение MsFormulaTermType.SliceDate.
Данное свойство необходимо для поддержки в выражениях дополнительных атрибутов базы данных временных рядов при работе с контейнером моделирования, принадлежащим базе.
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором OBJ_RUBRICATOR. В данной базе предполагается наличие фильтра валидации с идентификатором VALIDATION. Фильтр использует для расчетов пользовательский метод.
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
Mb: IMetabase;
RubDescr: IMetabaseObjectDescriptor;
Validation: IValidationFilter;
CustomData: IValidationCustom;
Trans: IMsFormulaTransform;
Formula: IMsFormula;
Determ: IMsDeterministicTransform;
TermList: IMsFormulaTermList;
OperCount, i: Integer;
TInfo: IMsFormulaTermInfo;
Slice: IMsFormulaTransformSlice;
ParamDimensions: IMsParametrizedDimensions;
DimCount, j: Integer;
ParamDim: IMsParametrizedDimension;
Begin
Mb := MetabaseClass.Active;
RubDescr := Mb.ItemById("OBJ_RUBRICATOR");
Validation := Mb.ItemByIdNamespace("VALIDATION",RubDescr.Key).Bind As IValidationFilter;
CustomData := Validation.Details As IValidationCustom;
Trans := CustomData.Transform;
Formula := Trans.FormulaItem(0);
Debug.WriteLine("Формуларасчета фильтра валидации: " + Formula.CreateStringGenerator.Execute);
Determ := Formula.Method As IMsDeterministicTransform;
TermList := Determ.Operands;
OperCount := TermList.Count;
For i := 0 To OperCount - 1 Do
TInfo := TermList.Item(i).TermInfo;
Debug.WriteLine("Терм '" + TInfo.TermText + "'");
If TInfo.Type = MsFormulaTermType.SliceDate Then
Slice := TInfo.DateSlice;
ParamDimensions := Slice.ParametrizedDimensions;
DimCount := ParamDimensions.Count;
Debug.WriteLine(" Измерения терма:");
For j := 0 To DimCount - 1 Do
ParamDim := ParamDimensions.Item(j);
Debug.WriteLine(" - " + ParamDim.Name);
End For;
End If;
End For;
End Sub UserProc;
В результате выполнения примера в окно консоли будут выведены термы, которые входят в формулу расчёта фильтра валидации и являются срезами данных. Также будут выведены наименования измерений данных термов.
См. также: