NidhiMangtani
3 years agoContributor III
Query on annotation data copy
Hi All,
I am aware of various options available for copying scenario data in OneStream. These options (data management or custom calculate) usually copy only periodic data across scenarios. Any ide...
- 3 years ago
Hi,
If you create a Finance Business Rule and under CustomCalculate you run this syntax, api.Data.SetDataAttachmentText(). That should copy your annotation, but you challenge will then be to make it more dynamic. Probably use sql to create a data table for data attachments.
Peter
- 2 months ago
Here is an example I used to copy VarianceExplantions from one scenario to another. I am only copying the text values not files. I also run it from a DM Step using Custom Calculate.
#Region "Seed Prior Fcst VarianceExplanations to current Fcst"Else If args.CustomCalculateArgs.FunctionName.XFEqualsIgnoreCase("Seed_VarExp_to_Curr_LE") Then'Query DataAttachment table for VarianceExplanation values for the sourceScenario'Write those values to a datatable (in-memory)'Loop through the rows in the datatable and use api.Data.SetDataAttachmentText to assign the values to the WFScenarioDim sourceScenario As String = args.CustomCalculateArgs.NameValuePairs("sourceScenario")Dim povEntity As String = api.Pov.Entity.Name'AttachmentType = View|200 = Annotation|220 = Assumptions|221 = AuditComment|222 = Footnote|223 = VarianceExplanationDim sql As New Text.StringBuilder()sql.AppendLine("SELECT *")sql.AppendLine("FROM DataAttachment ")sql.AppendLine("WITH (NOLOCK) ")sql.AppendLine("WHERE Time = '"& povYear & "M12" & "' ")sql.AppendLine("AND ")sql.AppendLine("Scenario = '" & sourceScenario & "' ")sql.AppendLine("AND ")sql.AppendLine("Cube = 'XXXX' ")sql.AppendLine("AND ")sql.AppendLine("Entity = '" & povEntity & "' ")sql.AppendLine("AND ")sql.AppendLine("Cons = 'USD' ")sql.AppendLine("AND ")sql.AppendLine("AttachmentType = '223' ") 'View DimensionUsing dbConnApp As DBConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)Using dt As DataTable = BRAPi.Database.ExecuteSql(dbConnApp, sql.ToString,False)If dt.Rows.Count > 0 ThenFor Each dr As DataRow In dt.Rowsapi.Data.SetDataAttachmentText("A#" & dr.Item("Account") & ":V#VarianceExplanation:F#EndBalLoad:O#BeforeAdj:I#None:U1#" & dr.Item("UD1") & ":U2#No_BU:U3#No_Loc:U4#None:U5#None:U6#None:U7#Plan:U8#None", dr.Item("Text"), True)NextEnd IfEnd UsingEnd Using#End Region