Forum Discussion
Davy
3 years agoContributor
view the POV of the datacell executing BusinessRule.DashboardStringFunction XFBR business rule?
How do I view the POV of the datacell executing BusinessRule.DashboardStringFunction XFBR business rule?
I think I can run this statement:
Dim viewMember As ViewMember = ViewMember.GetItem(api.Pov.View.MemberPk.MemberId)
BRapi.ErrorLog.LogMessage(si, "view = " & viewMember.tostring)
Is there a faster way to view all 10 dimesions in POV of the datacell ?
These do not work:
Dim POV As POV = ViewMember.GetItem(api.Pov.MemberPk.MemberId)
BRapi.ErrorLog.LogMessage(si, "view = " & POV.tostring)
It is an UD8 member formula and it has to be used together with a text view member like annotation:
The member formula might look like this:
' Test if the cell is a text-based dataCell. If api.View.IsAnnotationType() Then 'Has the cell a cell text or an attachement? If Not api.Data.HasDataAttachments("O#Forms:V#Periodic:Ud8#None") Then 'Retrieves the cells to test Dim amount As DataCell = api.Data.GetDataCell("O#Top:V#Periodic:UD8#None") Dim budget As DataCell = api.Data.GetDataCell("O#Top:V#Periodic:UD8#None:S#BudgetV2") 'Calculate the variance percent Dim variance As Decimal = (amount.CellAmount - budget.CellAmount ) / budget.CellAmount 'Is there a negative variance? If variance < 0 Then Return "<== Explantion Required" Else Return Nothing End If Else Return Nothing End If End If Return Nothing
10 Replies
- ChristianW
OneStream Employee
There are plenty of great use cases for xfbr, including for conditional formatting, but you need to understand how it works. 5 years ago, we hadn't conditional formatting, but for some years now, it is a function of cubeviews.
There might be a much simpler solution for your problem.
I work for Onestream.
- ChristianW
OneStream Employee
Yes, there is a faster way: api.Pov.GetDataCellPk.GetMemberScript(si)
This only works for financial business rules and member formula.
- ChristianW
OneStream Employee
The XFBR function in a cubeview, will be resolved before the system retrieves the datacells, so there is no way for the rule to get the POV of a cell (because it doesn't exist yet).
The problem are dynamic queries like A#IS.descendants, when the xfbr is executed, the query isn't resolved yet.
There are several ways to work around this limitation, can you help us to understand, what you try to achieve?
- DavyContributor
Wow!! I have no idea what the differences are between XFBR vs using formula and financial business rules. Obviously, you are some big shot developer at 1S. Or are you a consultant? If yes, which company do you work for?
I was studying some XFBR code written over 5 years ago, that I inherited. I suspected there was some issue with XFBR not being able to read the cell's POV. I think what you wrote is true- which means that case, 1S consultants' use of XFBR to do conditional formatting is flawed.
I guess my first question is - why would anyone use XFBR, except to process something before retrieving datacells!! - DavyContributor
I am asked to color a cell yellow if a user added annotation into that cell. This cell stores annotations of users who enter an explanation for why there is a variance on the row of that cell.
You just told me that I have to use a formula or a finance rule as I need the cell POV before I can retrieve the contents of the cell to see if it has text.Koemets wrote this:
Annotations are attachments by nature, so they can't be treated as regular data cell in your code. So you need to attach them to the respective datacells> KoemetsSomeone recommended the following lines of code. Do you have a better suggestion?
Dim yourText As String = api.Data.GetDataCellEx("A#variance:U8#CommentAvB").DataCellAnnotation
api.Data.SetDataAttachmentText("A#variance:U8#CommentAvB",yourText,False) ‘I don’t even know what this line does
If yourText.Equals(String.Empty) Then
' color cell pink to show that user entered text into this cell
Return "Pink"
- ChristianW
OneStream Employee
Why are you not just showing the annotation in a column next to the data?
You solution with a pink cell is probably possible, but I need to know the dimensions in the rows and the columns. Today is a little late in Europe to start such a project, but I will try to build something this week.
Related Content
- 3 years ago
- 7 months ago
- 3 years ago
- 9 months ago