Показать сообщение отдельно
Старый 05.02.2015, 14:34   #1  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Скрипт который создает проект и перемещает в него все изменения со слоя за дату
Добрый день!
Может кому то будет интересно или полезно:
Данный скрипт собирает изменения на выбранном слое на выбранную дату и создает на основании этого проект в private.
X++:
static void createproject(Args _args)
{
    SysProjectFilterRunBase sysProjectFilter;
    Utilelements            utilElements;
    Identifiername          projName;
    TransDate               transDate;
    Counter                 c;
    UtilEntryLevel          utilLevel;
    TimeOfDay               timeOfDay;
    str                     projNamePrefix;
    UtcDateTime             dateTime;
    ;

    
    projNamePrefix = "USR";
 
    utilLevel   = UtilEntryLevel::usr;
    timeOfDay   = str2time("00:00:01");
     dateTime    = DateTimeUtil::newDateTime(mkDate(29,01, 2015), timeOfDay);
     transDate   = today();
    projName    = strFmt("%1_%2", projNamePrefix ? projNamePrefix : enum2str(utilLevel), date2str(transDate, 321, 2,0,2,0,2));

    setPrefix(strFmt("Create project %1", projName));

    sysProjectFilter = new sysProjectFilterRunBase();
    sysProjectFilter.parmProjectNode(sysTreeNode::createProject(projName));
    sysProjectFilter.grouping(sysProjectGrouping::AOT);

    while select name, utilLevel, RecordType, ParentId
        from    utilElements
        where   utilElements.utilLevel == utilLevel &&
               (utilElements.createdDateTime >= dateTime ||
                utilElements.modifiedDateTime >= dateTime)
    {
        try
        {
            utilelements.reread();

            if (sysProjectFilter.doUtilElements(utilelements))
            {
                c++;
            }
        }
        catch (exception::Error)
        {
            throw error('Error at adding elements to the project');
        }
    }

    sysProjectFilter.write();

    if (c)
    {
        strFmt("Project %1 was created", projName);
    }
    else
    {
        info("No elements found.");
    }
}