Clear data on Origin Forms

Rob
New Contributor

Does anyone have a piece of code to clear data on the origin Forms member for just a few accounts? The api.data.clearcalculateddata is not possible (data is not calculated) and api.data.setdatacell doesn't work. Thanks. 

2 ACCEPTED SOLUTIONS

ChristianW
Valued Contributor

You can combine calculate with clearcalculateddate like this:

Dim script as string = pov

api.data.calculate($"{script} = 0 * {script}")

api.data.clearcalculateddata(script)

The first row will make it calculated, the second row will delete it, because now it is calculated.

View solution in original post

Rob
New Contributor

Thanks Christian, tested this and works as expected. 

View solution in original post

8 REPLIES 8

ChristianW
Valued Contributor

You can combine calculate with clearcalculateddate like this:

Dim script as string = pov

api.data.calculate($"{script} = 0 * {script}")

api.data.clearcalculateddata(script)

The first row will make it calculated, the second row will delete it, because now it is calculated.

poswald
New Contributor II

I've tried this, but I'm not following how to do this.  I have several accounts where I only want to clear the Forms data.  

 

I need the forms data cleared for all the accounts where Text 8 Startswith VarPercentofSales

This was the code I tried:

 

Dim script As String = "A#All:F#EndBal_Input:V#Periodic:O#Forms:U1#Local_Input:U2#None:U3#None:U4#None:U5#None:U6#None:U7#None:U8#None.Where(Text8 Startswith VarPercentofSales)"

api.data.calculate($"{script} = 0 * {script}")

api.data.ClearCalculatedData("TRUE","TRUE","TRUE","TRUE","A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms",,,,,,,,,)

 

ChristianW
Valued Contributor

The script and the syntax is not correct, try this:

Dim script As String = "A#All"

api.data.calculate($"{script} = 0 * {script}","A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")
api.data.ClearCalculatedData(True,True,True,True,"A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")

 

poswald
New Contributor II

This worked.  You showed me something different when working with variables.  Usually I see variables used like this:

api.data.calculate (script & "= 0* "& script, "A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")

Instead the script appears like this:

api.data.calculate ($"{script} = 0* {script}", "A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")

Does the $ sign have to be used with the "{ }" brackets?

Where do you find these different formats that can be used?  Does it have to do with how VB.net script is setup?

For reference: this is called "string interpolation", and is a relatively recent feature of VB.Net - no extra setup required in recent OneStream versions (I'd say 6+, but might work on earlier ones too).

The below code will also work.

Dim Parent As Member = api.Members.GetMember(DimType.Account.Id,"IS")

Dim ActMembers As List (Of Member) = api.members.GetBaseMembers( _
							api.Pov.AccountDim.DimPk, Parent.MemberId, Nothing)
							
If Not ActMembers Is Nothing Then
	For Each ActMember As Member In ActMembers
		If ((Not api.Entity.HasChildren()) ) Then
			api.Data.ClearCalculatedData("A#" & ActMember.Name,True,True,True,True)
		End If
	Next
End If

Rob
New Contributor

Thanks Christian, tested this and works as expected. 

EricOsmanski
Valued Contributor

Can also use the below where amount is 0.0 and isNoData is True.

api.Data.SetDataCell(memberScript, amount, isNoData, isDurableCalculatedData)