Показать сообщение отдельно
Старый 19.12.2011, 12:39   #7  
wolfstein is offline
wolfstein
Axapta Retail User
Axapta Retail User
 
51 / 91 (4) ++++
Регистрация: 05.07.2006
Цитата:
Сообщение от someOne Посмотреть сообщение
Иногда (может быть в результате сбоя при разноске накладной по закупке) там "зависают" накладные. Как эту функцию отключить - не понял.
Чтобы накладные не "зависали", вставил перед разноской накладной по закупке такое:
X++:
    delete_from VendInvoiceInfoTable
    where VendInvoiceInfoTable.PurchId == _purchId;
Это, конечно, радикально. Но лучшего решения не нашел.
Проблема с зависанием накладных таким образом была решена.
Я сделал след. образом. В методе PurchFormLetter_Invoice.endUpdate(), есть место где удаляются PurchParm для накладных, у которых произошли ошибки в процессе разноски (purchParmTable.ParmJobStatus == ParmJobStatus::ContainErrors). Добавил туда же удаление семейства соответствующих VendInvoiceInfo*.
X++:
...
        // Delete the PurchParm data for any invoices that were on hold or that failed to post
        // These invoices were saved as pending invoices and should not remain in PurchParmTable

        //+ kav OK001940 19.12.2011 OK
        /*delete_from purchParmTable
            where purchParmTable.ParmId         == purchParmUpdate.ParmId
               &&(purchParmTable.Hold          == NoYes::Yes
               || purchParmTable.ParmJobStatus  == ParmJobStatus::ContainErrors);*/

        while select forupdate purchParmTable
            where purchParmTable.ParmId         == purchParmUpdate.ParmId
               &&(purchParmTable.Hold          == NoYes::Yes
               || purchParmTable.ParmJobStatus  == ParmJobStatus::ContainErrors)
        {
            VendInvoiceInfoTable::deleteTableRefId(purchParmTable.TableRefId);
            purchParmTable.delete();
        }
        //- kav OK001940 19.12.2011 OK
...
За это сообщение автора поблагодарили: Logger (3), Bega (5), S.Kuskov (5), someOne (3), Axal (1).