Показать сообщение отдельно
Старый 05.05.2012, 08:58   #13  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Не знаю что у вас не работает, но у меня прекрасно работает код а-ля (DAX 2009 RU8)

X++:
    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.update(purchTable,
                           purchTable.PurchId,
                           systemDateGet(),
                           PurchUpdate::PackingSlip);
Если нужно разнести определенную отборочную накладную, используйте параметр _packedTmpFrmVirtualList - пример использования можно найти по перекрестным ссылкам.

X++:
static void CreateInvoiceByPackingSlipJour(Args _args)
{
    PurchFormLetter         purchFormLetter;
    PurchTable              purchTable                  = PurchTable::find(...);
    RefRecId                refRecIdPackingSlipJourId   = ...;

    TmpFrmVirtual           tmpFrmVirtual;
    VendPackingSlipJour     vendPackingSlipJour = VendPackingSlipJour::findRecId(refRecIdPackingSlipJourId);

    List                    listRecord  = new List(Types::Record);
    ;

    tmpFrmVirtual.clear();
    tmpFrmVirtual.CompanyId = vendPackingSlipJour.DataAreaId;
    tmpFrmVirtual.TableNum  = vendPackingSlipJour.TableId;
    tmpFrmVirtual.RecordNo  = vendPackingSlipJour.RecId;
    tmpFrmVirtual.NoYes     = NoYes::Yes;
    tmpFrmVirtual.Id        = vendPackingSlipJour.PurchId;
    tmpFrmVirtual.insert();

    listRecord.addEnd(tmpFrmVirtual);

    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.reArrangeNow(false);
    purchFormLetter.update(purchTable,
                           purchTable.PurchId,
                           systemDateGet(),
                           PurchUpdate::PackingSlip,
                           AccountOrder::None,
                           purchFormLetter.proforma(),
                           purchFormLetter.printFormLetter(),
                           purchFormLetter.usePrintManagement(),
                           purchFormLetter.creditRemaining(),
                           listRecord.pack());

    info("done");
}
Правда у меня SQL стал чертыхаться на метод PurchFormLetter_Invoice\selectFromJournal в месте
X++:
tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId &&
tmpFrmVirtual.TableNum == vendPackingSlipJour.TableId
пришлось заменить на конструкцию вида
X++:
    while select tmpFrmVirtual
        order by Id
        where tmpFrmVirtual.TableNum   == tableIdPackingSlip
        join vendPackingSlipJour
            where
            tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: alexkrut (1).