Hi,
I am unable to get a nested contact/company interest set to selected using CRMScript, a interest without a heading works correctly.
How should this be done?
Sample script to test:
#setLanguageLevel 4;
Integer contactId = 6827;
NSContactAgent contactAgent;
NSContactEntity contactEntity = contactAgent.GetContactEntity(contactId);
NSSelectableMDOListItem[] contactInterests = contactEntity.GetInterests();
Integer interestToSelectId = 6;
// enable
for (Integer i = 0; i < contactInterests.length(); i++)
{
NSSelectableMDOListItem interest = contactInterests[i];
if (interest.GetId() == interestToSelectId)
{
interest.SetSelected(true);
printLine("found main " + interest.GetName() + " => " + interest.GetId().toString());
}
NSSelectableMDOListItem[] childItems = interest.GetChildItems();
for (Integer y = 0; y < childItems.length(); y++)
{
NSSelectableMDOListItem subInterest = childItems[y];
if (subInterest.GetId() == interestToSelectId)
{
subInterest.SetSelected(true);
printLine("found an enabled sub " + subInterest.GetName() + " => " + subInterest.GetId().toString());
}
}
}
// check what is enabled
for (Integer i = 0; i < contactInterests.length(); i++)
{
NSSelectableMDOListItem interest = contactInterests[i];
if (interest.GetSelected() == true)
{
printLine(interest.GetName() + " => " + interest.GetId().toString() + " ENABLED");
}
NSSelectableMDOListItem[] childItems = interest.GetChildItems();
for (Integer y = 0; y < childItems.length(); y++)
{
NSSelectableMDOListItem subInterest = childItems[y];
if (subInterest.GetSelected() == true)
{
printLine(subInterest.GetName() + " => " + subInterest.GetId().toString() + " ENABLED");
}
}
}
contactEntity.SetInterests(contactInterests);
contactEntity = contactAgent.SaveContactEntity(contactEntity);
Can be enabled/selected:
Can't be enabled/selected:
Tested on SOD SuperOffice CRM Online 10.3 Build main_10.3.5_2024.04.10-01
Alle Svar (2)
Hi David,
I believe you are missing the step where you actually set the childItems back to the interest.
You should be able to set the childInterests with this script/code, look at line 33 and 37:
#setLanguageLevel 4;
Integer contactId = 6;
NSContactAgent contactAgent;
NSContactEntity contactEntity = contactAgent.GetContactEntity(contactId);
NSSelectableMDOListItem[] contactInterests = contactEntity.GetInterests();
Integer interestToSelectId = 5;
// enable
for (Integer i = 0; i < contactInterests.length(); i++)
{
NSSelectableMDOListItem interest = contactInterests[i];
if (interest.GetId() == interestToSelectId)
{
interest.SetSelected(true);
printLine("found main " + interest.GetName() + " => " + interest.GetId().toString());
}
NSSelectableMDOListItem[] childItems = interest.GetChildItems();
for (Integer y = 0; y < childItems.length(); y++)
{
NSSelectableMDOListItem subInterest = childItems[y];
if (subInterest.GetId() == interestToSelectId)
{
subInterest.SetSelected(true);
printLine("found an enabled sub " + subInterest.GetName() + " => " + subInterest.GetId().toString());
//HERE
childItems[y] = subInterest;
}
}
//HERE
interest.SetChildItems(childItems);
}
// check what is enabled
for (Integer i = 0; i < contactInterests.length(); i++)
{
NSSelectableMDOListItem interest = contactInterests[i];
if (interest.GetSelected() == true)
{
printLine(interest.GetName() + " => " + interest.GetId().toString() + " ENABLED");
}
NSSelectableMDOListItem[] childItems = interest.GetChildItems();
for (Integer y = 0; y < childItems.length(); y++)
{
NSSelectableMDOListItem subInterest = childItems[y];
if (subInterest.GetSelected() == true)
{
printLine(subInterest.GetName() + " => " + subInterest.GetId().toString() + " ENABLED");
}
}
}
contactEntity.SetInterests(contactInterests);
contactEntity = contactAgent.SaveContactEntity(contactEntity);
Hope this helps!
//E