Publishing users' view is still far from a quick and simple process in TM1.
First, the admin cannot see other users' views.
Second, users cannot publish their own views themselves.
So publishing views always require a direct intervention from the admin, well not anymore :)
1. create a process with the following code
in Advanced->Parameters Tab
in the Advanced->Prolog Tab
if((ViewExists(Cube,View) =0) % ((ViewExists(Cube,View) =1) & (Overwrite @= 'Y'))); #get UserName If(SubsetExists('}Clients','WhoAmI') = 0); SubsetDestroy('}Clients','WhoAmI'); Endif; StringMDX = '{TM1FILTERBYPATTERN( {TM1SUBSETALL( [}Clients] )}, USERNAME )}'; SubsetCreatebyMDX('WhoAmI',StringMDX); User=SubsetGetElementName('}Clients','WhoAmI',1); SubsetDestroy('}Clients','WhoAmI'); #copy view to public space TM1Path='E:\TM1Data\TM1Server\'; Query = 'cmd /c mkdir '| TM1Path|Cube |'}vues'; ExecuteCommand(Query,0); Query = 'cmd /c copy "'| TM1Path|User| '\'| Cube |'}vues\'| View |'.vue" "'| TM1Path|Cube |'}vues\'| View |'.vue"'; ExecuteCommand(Query,0); #unload cube first to reload vues CubeUnload(Cube); Else; ItemReject(View|' view in '|Cube| ' Cube already exists'); Endif;
2. change the TM1Path and save
3. in Server Explorer, Process->Security Assignment, set that process as Read for all groups that should be allowed to publish
Now your users can publish their views on their own by executing this process, they just need to enter the name of the cube and the view to publish.
Alternatively, the code in the above Prolog Tab can be simplified and replaced with these 5 lines:
if((ViewExists(Cube,View) =0) % ((ViewExists(Cube,View) =1) & (Overwrite @= 'Y'))); PublishView(Cube,View,1,1); Else; ItemReject(View|' view in '|Cube| ' Cube already exists'); Endif;
Add new comment