Не знаю что у вас не работает, но у меня прекрасно работает код а-ля (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