Написал такой джоб:
X++:
static void ChangeRegionCodes(Args _args)
{
UtilElements e;
TreeNode treeNode;
Dialog dialog;
DialogField _level;
DialogField _from;
DialogField _to;
UtilEntryLevel utilLevel;
str _fromVal;
str _toVal;
str value;
int i;
;
dialog = new Dialog("Change locale");
_level = dialog.AddField(enumStr(UtilEntryLevel));
_from = dialog.AddField(extendedTypeStr(Region));
_to = dialog.AddField(extendedTypeStr(Region));
if(dialog.run())
{
utilLevel = _level.value();
_fromVal = _from.value();
_toVal = _to.value();
}
while select e where e.utilLevel == utilLevel && !(e.recordType == 37) //SharedProjects
{
treeNode = xUtilElements::getNodeInTree(xUtilElements::parentElement(e));
try
{
if(treeNode.AOTtypeStr() != "WMU"
&& treeNode.AOTtypeStr() != "PRN"
&& treeNode.AOTtypeStr() != "JOB")
value = treeNode.AOTgetProperty("CountryRegionCodes");
if(value && strContains(value, _fromVal) && !strContains(value, _toVal))
{
treeNode.AOTsetProperty("CountryRegionCodes", value + strFmt(",",_toVal));
treeNode.AOTsave();
i++;
}
If(treeNode.TreeNodeType().isConsumingMemory())
treeNode.treeNodeRelease();
}
catch
{
info(treeNode.AOTtypeStr());
}
}
info(strFmt("Count of objects changed: %1", i));
}
При проходе по sys слою работает пару часов потом выдает ошибку "недостаточно памяти".
Есть еще варианты?