This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Create Dynamic Role for ITShop from Script

Hi all,

I'm trying to create a dynamic role fro the visbility of an ITShop from script triggered when a certain event is called but the script return me the following error:

"Dynamic roles: Write permission denied for value "Dynamic role"

 

This is my script:

 

' create or find dynamic group
Dim dynamicGroup As ISingleDbObject
Dim uid_dynamicGroup As String = Connection.GetSingleProperty("dynamicGroup","uid_dynamicGroup","ObjectKeyBaseTree='<Key><T>ITShopOrg</T><P>"+uid_customers+"</P></Key>'")
dynamicGroup = Connection.CreateSingle("dynamicGroup")
If (uid_dynamicGroup.Equals("")) Then

'msgbox ("uid_customers " + uid_customers)
dynamicGroup.PutValue("ObjectKeyBaseTree","<Key><T>ITShopOrg</T><P>"+uid_customers+"</P></Key>")
dynamicGroup.PutValue("uid_dialogschedule",connection.GetSingleProperty("dialogschedule","uid_dialogschedule","name = 'Dynamic roles check'"))
dynamicGroup.PutValue("uid_dialogtableobjectclass",connection.GetSingleProperty("dialogtable","uid_dialogtable","tablename = 'Person'"))
dynamicGroup.PutValue("whereclause","isnull(IsInActive, 0) = 0") 'only active employes
'dynamicGroup.PutValue("whereclause","1=2")
dynamicGroup.Save
dynamicGroup.Load
uid_dynamicGroup = dynamicGroup.getValue("uid_dynamicGroup")
...
dynamicGroup.PutValue("uid_dynamicGroup",uid_dynamicGroup)
dynamicGroup.Load

dynamicGroup.PutValue("whereclause","isnull(IsInActive, 0) = 0") 'only active employes
dynamicGroup.Save
dynamicGroup.Load

There is any way to accomplish that?

This script running on 7.0 didn't return any error now on 7.1 yes.

 

Thanks Michele

Parents
  • Glad you got it working.

    But I doubt that not setting the DisplayName was the cause of your issues. Just the workaround.

    The property DisplayName is and was a mandatory property in 7.1 and 7.0 and as you have already figured out, will be set by a template which is triggered when you set the columns UID_DialogTableObjectClass and ObjectKeyBaseTree which are mandatory as well.

    The only reasons i can imagine for your code to break when not setting the DisplayName is a customized value template for the column DynamicGroup.DisplayName or, as I have said before, setting the UID_DynamicGroup (PK) of an loaded dynamic group which is not allowed and would lead to the error you have seen.

    As suggestion for your sample code, i would use the method .FillPrimaryKey() for newly created iSingleDBObjects that allows you to access the primary key of the newly created object using GetValue without the need for saving it.

    Hth

    Markus

Reply
  • Glad you got it working.

    But I doubt that not setting the DisplayName was the cause of your issues. Just the workaround.

    The property DisplayName is and was a mandatory property in 7.1 and 7.0 and as you have already figured out, will be set by a template which is triggered when you set the columns UID_DialogTableObjectClass and ObjectKeyBaseTree which are mandatory as well.

    The only reasons i can imagine for your code to break when not setting the DisplayName is a customized value template for the column DynamicGroup.DisplayName or, as I have said before, setting the UID_DynamicGroup (PK) of an loaded dynamic group which is not allowed and would lead to the error you have seen.

    As suggestion for your sample code, i would use the method .FillPrimaryKey() for newly created iSingleDBObjects that allows you to access the primary key of the newly created object using GetValue without the need for saving it.

    Hth

    Markus

Children
No Data