Показать сообщение отдельно
Старый 13.11.2015, 11:58   #8  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Написал такой джоб:
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 слою работает пару часов потом выдает ошибку "недостаточно памяти".
Есть еще варианты?