ItemById(Id: Integer): IPrxDocumentExpression;
ItemById(Id: Integer): Prognoz.Platform.Interop.Report.PrxDocumentExpression;
Id. Идентификатор вычисляемого поля.
Метод ItemById возвращает параметры вычисляемого поля по его идентификатору.
Идентификатор вычисляемого поля можно получить в свойстве IPrxDocumentExpression.Id. Идентификаторы генерируются автоматически при создании вычисляемых полей. Метод ItemById актуален для использования, если уже имеется какой-либо набор идентификаторов и не требуется перебирать всю коллекцию с помощью свойств Item-Count.
Для выполнения примера предполагается наличие в репозитории регламентного отчета с идентификатором «Report». В отчёте создан текстовый лист с наименованием «Документ», на этом листе используются различные вычисляемые поля.
Sub UserProc;
Var
MB: IMetabase;
Report: IPrxReport;
Doc: IPrxDocument;
Expressions: IPrxDocumentExpressions;
Expression: IPrxDocumentExpression;
i: Integer;
IdArray: IArrayList;
Begin
MB := MetabaseClass.Active;
Report := MB.ItemById("Report").Bind As IPrxReport;
Doc := Report.Sheets.FindByName("Документ") As IPrxDocument;
Expressions := Doc.DocumentExpressions;
//...
//Отбор идентификаторов вычисляемых полей по какому-либо признаку
//...
IdArray := New ArrayList.Create;
For i := 0 To Expressions.Count - 1 Do
Expression := Expressions.Item(i);
If <Условие
отбора вычисляемого поля> Then
//Сохранение идентификатора в динамический массив
IdArray.Add(Expression.Id);
End If;
End For;
//...
//Получение и работа с отобранными вычисляемыми полями
по их идентификаторам
//...
For i := 0 To IdArray.Count - 1 Do
Expression := Expressions.ItemById(IdArray.Item(i));
//...
End For;
End Sub UserProc;
Указанный пример в общем виде показывает как можно получить коллекцию вычисляемых полей, отобрать из них необходимые по какому-либо признаку и в дальнейшем работать с ними.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.ForeCollections;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Report: IPrxReport;
Doc: IPrxDocument;
Expressions: IPrxDocumentExpressions;
Expression: IPrxDocumentExpression;
i: Integer;
IdArray: IArrayList = New ArrayListClass();
Begin
MB := Params.Metabase;
Report := MB.ItemById["Report"].Bind() As IPrxReport;
Doc := Report.Sheets.FindByName("Документ") As IPrxDocument;
Expressions := Doc.DocumentExpressions;
//...
//Отбор идентификаторов вычисляемых полей по какому-либо признаку
//...
For i := 0 To Expressions.Count - 1 Do
Expression := Expressions.Item[i];
If <Условие
отбора вычисляемого поля> Then
//Сохранение идентификатора в динамический массив
IdArray.Add(Expression.Id);
End If;
End For;
//...
//Работа с отобранными вычисляемыми полями
//...
For i := 0 To IdArray.Count - 1 Do
Expression := Expressions.ItemById(IdArray.Item[i] As Integer);
//...
End For;
End Sub;
См. также: