Validate: ICubeValidationAssertions;
Метод Validate осуществляет проверку метаданных куба, находящегося на стадии редактирования.
Результатом выполнения метода будет список возможных нарушений метаданных куба.
Для выполнения примера предполагается наличие в репозитории вычисляемого куба с идентификатором «CALC_CUBE».
Добавьте ссылки на системные сборки: Cubes, Metabase.
Sub UserProc;
Var
Mb: IMetabase;
CalcCube: ICalculatedCube;
Cube: ICubeModel;
Validations: ICubeValidationAssertions;
Validation: ICubeValidationAssertion;
i, c: Integer;
Begin
Mb := MetabaseClass.Active;
CalcCube := Mb.ItemById("CALC_CUBE").Edit As ICalculatedCube;
//...
//Внесение изменений в структуру куба
//...
//Проверка куба
Cube := CalcCube As ICubeModel;
Validations := Cube.Validate;
If Validations.IsEmpty = True Then
Debug.WriteLine("При проверке настроек куба нарушений не найдено.");
Else
c := Validations.Count;
Debug.WriteLine("Количество выявленных нарушений = " + c.ToString);
For i := 0 To c - 1 Do
Validation := Validations.Item(i);
Debug.WriteLine("Код причины: " + Validation.Code.ToString);
Debug.WriteLine("Уровень важности: " + Validation.Severity.ToString);
Debug.WriteLine(Validation.Text);
Debug.WriteLine("---------------------------");
End For;
End If;
If Validations.IsEmpty Or (Validations.MaxSeverity = CubeValidationAssertionSeverity.Info) Then
(CalcCube As IMetabaseObject).Save;
End If;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
CalcCube: ICalculatedCube;
Cube: ICubeModel;
Validations: ICubeValidationAssertions;
Validation: ICubeValidationAssertion;
i, c: Integer;
Begin
Mb := Params.Metabase;
CalcCube := Mb.ItemById["CALC_CUBE"].Edit() As ICalculatedCube;
//...
//Внесение изменений в структуру куба
//...
//Проверка куба
Cube := CalcCube As ICubeModel;
Validations := Cube.Validate();
If Validations.IsEmpty = True Then
System.Diagnostics.Debug.WriteLine("При проверке настроек куба нарушений не найдено.");
Else
c := Validations.Count;
System.Diagnostics.Debug.WriteLine("Количество выявленных нарушений = " + c.ToString());
For i := 0 To c - 1 Do
Validation := Validations.Item[i];
System.Diagnostics.Debug.WriteLine("Код причины: " + Validation.Code.ToString());
System.Diagnostics.Debug.WriteLine("Уровень важности: " + Validation.Severity.ToString());
System.Diagnostics.Debug.WriteLine(Validation.Text);
System.Diagnostics.Debug.WriteLine("---------------------------");
End For;
End If;
If Validations.IsEmpty Or (Validations.MaxSeverity = CubeValidationAssertionSeverity.cvasInfo) Then
(CalcCube As IMetabaseObject).Save();
End If;
End Sub;
В указанном примере после открытия куба на редактирование в его структуре могут быть внесены какие-либо изменения. После этого осуществляется проверка на корректность сформированных метаданных куба. Если имеются какие-либо нарушения, то информация о них будет выведена в консоль среды разработки. Если нарушения отсутствуют или имеют информационный характер, то внесённые изменения будут сохранены в кубе.
См. также: