2012-01-17 2 views
1

Код довольно прямолинейный. В форме «Сведения о продавце», если вы перейдете «Функции»> «Обновление 1099», пользователь хочет сделать это широко открытым для всех поставщиков, а не вручную. Я изменил базовый класс VendTax1099Update для расширения RunBaseBatch, а затем добавил кучу парм-методов. Я получаю эту ошибку, но задача существует? Я делаю это неправильно?Программирование многопоточной партии в X ++. Почему-то не работает?

«Зависимость не может быть создана, потому что задача обновления обновления налоговой информации 1099 отсутствует».

Я сделал это «addDependency», потому что были замки DB, когда я пытался запустить его широко открытым. Не уверен, есть ли способ исправить это.

void run() 
{ 
    BatchHeader   batchHeader; 
    VendTax1099Update vendTax1099Update; 
    VendTax1099Update vendTax1099UpdateOld; 
    VendTable   vendTable; 
    boolean    first = true; 
    ; 

    /* 
    if (this.isInBatch()) 
    { 
    */ 
     // Make sure there is a batch header 
     if (!batchHeader) 
      batchHeader = BatchHeader::construct(this.parmCurrentBatch().BatchJobId); 

     while select vendTable 
      where vendTable.Tax1099Reports  == true  && 
        vendTable.Tax1099Box   != '' 
     { 
      if (Tax1099Fields::exist(vendTable.Tax1099Box)) 
      { 
       vendTax1099Update = new VendTax1099Update(); 
       vendTax1099Update.parmFromDate(fromDate); 
       vendTax1099Update.parmToDate(toDate); 
       vendTax1099Update.parmRecalcAmounts(recalcAmounts); 
       vendTax1099Update.parmSetAll1099(setAll1099); 
       vendTax1099Update.parmBoxFor1099(vendTable.Tax1099Box); 
       vendTax1099Update.parmVendorNum(vendTable.AccountNum); 

       if (first) 
       { 
        batchHeader.addRuntimeTask(vendTax1099Update, this.parmCurrentBatch().RecId); 
        first = false; 
       } 
       else 
       { 
        if (vendTax1099UpdateOld) 
         batchHeader.addDependency(vendTax1099Update, vendTax1099UpdateOld, BatchDependencyStatus::FinishedOrError); 
       } 

       vendTax1099UpdateOld = vendTax1099Update; 
      } 
      else 
       error (strfmt("Unable to process %1 because %2 was not found in Tax1099Fields", vendTable.AccountNum, vendTable.Tax1099Box)); 
     } 
    /* 
    } 
    */ 

    if (batchHeader) 
     batchHeader.save(); 
} 

ответ

2

Я ломал мой мозг в течение нескольких часов на это и, конечно же минут после публикации я полагаю, вопрос после понимая, что я могу уйти в метод batchHeader.addDependency().

Оказывается, вам нужно добавить задачу, а затем установить зависимость. Я думал, что установка зависимости также добавляет задачу тем же самым махом. Скорректированный бит кода таков:

  vendTax1099Update.parmBoxFor1099(vendTable.Tax1099Box); 
      vendTax1099Update.parmVendorNum(vendTable.AccountNum); 

      batchHeader.addRuntimeTask(vendTax1099Update, this.parmCurrentBatch().RecId); 

      if (vendTax1099UpdateOld) 
       batchHeader.addDependency(vendTax1099Update, vendTax1099UpdateOld, BatchDependencyStatus::FinishedOrError); 

      vendTax1099UpdateOld = vendTax1099Update; 
     } 
     else 

 Смежные вопросы

  • Нет связанных вопросов^_^