Мне нужно запостить инвойс из кода, предварительно заполнив PurchFormLetter по определенному алгоритму. Это получилось, но мне еще нужно, чтобы один ваучер был для нескольких Purchase order'ов, которые попали в инвойс, и чтобы суммирование шло по InvoiceAccount'у.
При создании экземпляра PurchFormLetter я пишу такое:
X++:
formLetter = new PurchFormLetter_SpecialInvoice();
formLetter.transDate(systemdateget());
formLetter.specQty(PurchUpdate::All);
// manually obtaining ParmId, because it is disabled in PurchFormLetter
numSeq = NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(ParmId))));
parmId = numSeq.num();
formLetter.parmId(parmId);
formLetter.sumBy(AccountOrder::Account);
formLetter.createParmUpdate();
ttsbegin;
select forupdate firstonly purchParmUpdate where
purchParmUpdate.RecId == formLetter.purchParmUpdate().RecId;
purchParmUpdate.SumBy = AccountOrder::Account;
purchParmUpdate.update();
ttscommit;
…а в конце, когда все данные подготовлены, пишу такое:
X++:
formLetter.reArrangeNow(true);
formLetter.reArrange();
formLetter.run();
…и рассчитываю, что инвойс запостится с одним ваучером, но этого не происходит.
ПризнаЮ, что механизм SummaryUpdate мне не очень знаком, поэтому, возможно, я забиваю гвозди микроскопом. Подскажите, пожалуйста, что может быть не так, что упущено?