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

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


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 (внешнее изменение)