Help please! (CS10.5 using the CS16 CSide plugin as 10.5 seemed very buggy)
I've tried three different approaches and no success. I've been able to update category values from CBCategoryUpdate method so I know it's doable but the same approach in create doesn't seem to work.
Here's what I've tried:
1) DAPI.SetNodeUserAttr & DAPI.UpdateNode(node) - Throws an error
String attributeIdentifierString = 'CategoryName[1].AttributeName[1]';
echo("Testing DAPI.SetNodeUserAttr with identifier: '"+attributeIdentifierString+"'");
Integer errorID = DAPI.SetNodeUserAttr(node, attributeIdentifierString, newValueToSet, DAPI.ATTR_SET_CAT);
if ( errorID == DAPI.OK )
echo("SetNodeUserAttr OK. Updating Node");
DAPI.UpdateNode(node)
echo("Node Update complete.");
else
echo("SetNodeUserAttr Failed.");
end
2) LLAPI.AttrData.New - Error: Can only call Scripts or External API functions.
//Trying pVersionNum -1 or +1 doesn't help
Dynamic newAttr = $LLIAPI.AttrData.New(dapiCtx, node.pID, node.pVersionNum+1)
newAttr.fData = attrData.fData;
newAttr.fDefinitions = attrData.fDefinitions;
newAttr.fData.(myCategory.key).Values[1].(myCategoryAttribute.attID).Values[1] = newValueToSet;
newAttr.fNewCreation = true;
echo("newAttr Updated");
Object llnode = $LLIAPI.LLNodeSubsystem.GetItem( node.pSubType )
echo("llnode Retrieved");
//Error happens here. Complains about caches versions.
Dynamic status = llnode.NodeCategoriesUpdate(node, newAttr);
3) ValueChanges - No error, no changes
RecArray valueChangesRecArray = createInfo.ValueChanges;
List newValueChangeList = List.Create('CategoryName[1].AttributeName[1]', myCategory.attributeValue[1], newValueToSet, myCategory.key[1], myCategoryAttribute.attID);
Integer addedPos2 = RecArray.AddRecord(valueChangesRecArray, newValueChangeList);
createInfo.ValueChanges = valueChangesRecArray;
Anyone got some sample code that works in 10.5+ that I can reuse?
Thanks!