static void CreatePrivilege(Args _args)
{
UtilIdElements _UtilIdElements;
#AOT
#properties
void addPrivs( str 200 _paramMenuItemName,
str 200 _paramPrivName,
str 200 _paramAccessLevel,
str 200 _paramPropertyObjectType )
{
UtilIdElements _UtilIdElements_valid;
TreeNode _TreeNode;
TreeNode _TreeNode_endtrypoints;
TreeNode _TreeNode_endtrypointschild;
TreeNodeIterator _TreeNodeIterator;
TreeNodeIterator _TreeNodeIteratorchild;
int _Linenum;
//오브젝트가 존재 하는지 여부 검색.
select _UtilIdElements_valid
where _UtilIdElements_valid.recordType == UtilElementType::SecPrivilege
&& _UtilIdElements_valid.name == _paramMenuItemName + _paramPrivName;
//존재 하지 않는다면 생성.
if (!_UtilIdElements_valid)
{
_TreeNode = TreeNode::findNode(#SecPrivilegesPath);
_TreeNode = _TreeNode.AOTadd(_paramMenuItemName + _paramPrivName);
_TreeNodeIterator = _TreeNode.AOTiterator();
//endtry point setup
if (_TreeNodeIterator)
{
_TreeNode_endtrypoints = _TreeNodeIterator.next();
while (_TreeNode_endtrypoints)
{
_Linenum++;
//endtry point > add menu item object
//linenum == 1 -> entry point
if (_Linenum == 1)
{
//add menu item object
_TreeNode_endtrypoints.AOTadd(_paramMenuItemName);
_TreeNodeIteratorchild = _TreeNode_endtrypoints.AOTiterator();
if (_TreeNodeIteratorchild)
{
_TreeNode_endtrypointschild = _TreeNodeIteratorchild.next();
while (_TreeNode_endtrypointschild)
{
//set menu item object property
_TreeNode_endtrypointschild.AOTsetProperty(#PropertyObjectType, _paramPropertyObjectType);
_TreeNode_endtrypointschild.AOTsetProperty(#PropertyObjectname, _paramMenuItemName);
_TreeNode_endtrypointschild.AOTsetProperty(#PropertyAccessLevel, _paramAccessLevel);
_TreeNode_endtrypointschild = _TreeNodeIteratorchild.next();
}
}
}
_TreeNode_endtrypoints = _TreeNodeIterator.next();
}
}
_TreeNode.AOTcompile();
}
}
;
while
select _UtilIdElements
order by recordType
where (_UtilIdElements.recordType == UtilElementType::DisplayTool ||
_UtilIdElements.recordType == UtilElementType::ActionTool ||
_UtilIdElements.recordType == UtilElementType::OutputTool )
//&& _UtilIdElements.name like "HST_GarmentExportPreviewReport"
&& _UtilIdElements.name like "HST_" + "*"
{
if (_UtilIdElements.recordType == UtilElementType::DisplayTool) //Display
{
addPrivs(_UtilIdElements.name, "Maintain", "Delete", "MenuItemDisplay");
addPrivs(_UtilIdElements.name, "View", "Read", "MenuItemDisplay");
}
else if (_UtilIdElements.recordType == UtilElementType::ActionTool) //Action
{
addPrivs(_UtilIdElements.name, "Generate", "Delete", "MenuItemAction");
}
else if (_UtilIdElements.recordType == UtilElementType::OutputTool) //Output
{
addPrivs(_UtilIdElements.name, "Process", "Read", "MenuItemOutput");
}
}
info ("완료!!");
}
'Microsoft > Dynamics' 카테고리의 다른 글
[AX 2012] User-Role Assign using Excel X++ Code (0) | 2016.11.03 |
---|---|
[AX 2012] File Attachment X++ Code (0) | 2016.11.03 |
[AX 2012] User-Role Assign X++ Code (0) | 2016.10.26 |
[AX 2012] Using Dynamics AX 2012 Trace parser (0) | 2016.09.09 |
[AX 2012] Configure and use Microsoft Dynamics AX document management with Microsoft SharePoint document libraries (0) | 2016.08.22 |