Инструменты пользователя

Инструменты сайта


axapta:пакетнаяобработка

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

axapta:пакетнаяобработка [2018/04/13 22:43] (текущий)
Строка 1: Строка 1:
 +Раздел: [[Программирование | ]] > [[СредаИсполнения]]
 +-----
 +Пакетная обработка используется для того, чтобы выполнять некоторые задания периодически.
  
 +Чтобы создать собственное задание нужно написать класс, который расширяет Класс/RunBaseBatch
 +  *[[http://msdn.microsoft.com/mbs/default.aspx?pull=/library/en-us/dnaxap/html/axp_perprocessingp1.asp]] -- This article describes how to set up periodic (job-based) processing within Microsoft Business Solutions—Axapta.
 +  *[[AxForum:7572]]
 +  *[[http://groups.google.com/group/microsoft.public.axapta/browse_frm/thread/149d08d62fd14d30/a61e66f19f02819c?lnk=st]]
 +
 +=== Как программно добавить пакетное задание в очередь ===
 +
 +взято из \Classes\SysEmailBatch\sendToBatch
 +<code xpp>
 +public batch sendToBatch(BatchGroupId    _groupId)
 +{
 +    BinData binData;
 +;
 +    if (attachmentfileName)
 +    {
 +        binData = new BinData();
 +        binData.loadFile(attachmentfileName);
 +        attachmentdata = binData.getData();
 +    }
 +
 +    batchInfo =  batchInfo::construct(this);
 +    batchInfo.parmBatchExecute(true);
 +    batchInfo.parmGroupId(_groupId);
 +    batchInfo.parmDataareaId(curext());
 +    batchInfo.doBatch();
 +
 +    return batchInfo.parmBatch();
 +}
 +</code>
 +
 +=== Как запустить пакетную граппу при старте ===
 +
 +Вазято из [[http://dynamicsandmore.spaces.msn.com/blog/cns!763444E3F18A4CB0!305.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink]]
 +
 +Right now it is not possible to start a specific batch group with a startup command. You certainly can start the batch processing, but within the standard applications it is not possible to start one or more specific batch groups. The problem is caused by a missing parameter within the "SysStartupCmdBatchRun" class.
 + 
 +Now we add a new method to this class:
 +<code xpp>
 +container CMHParmInCont()
 +{
 +    container   conParm;
 +    int         i, j;
 +    str         parmString;
 +    ;
 +    conparm = conNull();
 +    for (i = 1; i <= strlen(parm); i = j + 1)
 +    {
 +        j = strscan(parm, ',', i, strlen(parm));
 +        if (j > 0)
 +        {
 +            parmString = substr(parm, i, j-i);
 +        }
 +        else
 +        {
 +            parmString = substr(parm, i, strlen(parm) -i +1);
 +            j = i + strlen(parmString);
 +        }
 +        conParm += parmString;
 +    }
 +    return  conParm;
 +}
 +</code> 
 +This method extracts the given batchgroupids from the startup command.
 + 
 +The second and last step is to modify the existing infoRun() method in a way that it starts the different batch jobs:
 +<code XPP>
 +void infoRun()
 +{
 +    batchRun        batchRun = new batchRun();
 +    BatchGroupId    groupId;
 +    container       conParm;
 +    int             i;
 +    ;
 +    batchRun.parmUseForm(true);
 +    if (parm)
 +    {
 +        parm    = strrem(parm, ' ');
 +        conParm = this.KBSParmInCont();
 +        for (i = 1; i <= conlen(conParm); i++)
 +        {
 +            groupId = conpeek(conParm,i);
 +            batchRun.parmGroupId(groupId);
 +            if (batchRun.validate())
 +            {
 +                batchRun.run();
 +            }
 +        }
 +    }
 +    else
 +    {
 +        batchRun.run();
 +    }
 +}
 +</code> 
axapta/пакетнаяобработка.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)