Сделал метод, с помощью которого можно создавать одну накладную по нескольким строкам из разных заказов.
PHP код:
static void createOneInvoiceFromMultiSales(
container _conSales, //Перечень заказов (SalesId заказов)
container _conLines, //Перечень строк заказов (RecId строк заказов)
TransDate _invoiceDate, //Дата накладной
TransDate _documentDate, //Дата документа
SalesUpdate _specQty,
AccountOrder _sumBy
)
{
int iSales, iLines;
SalesFormLetter letter=SalesFormLetter::construct(DocumentStatus::Invoice);
SalesParmLine parmLine;
SalesLine salesLine;
SalesParmTable SalesParmTable;
salesParmUpdate salesParmUpdate;
SalesId salesId;
SalesTable salesTable;
RecId recId;
;
ttsBegin;
letter.transDate(systemDateGet());
letter.multiForm(true);
letter.specQty(_specQty);
letter.printFormLetter (true);
letter.createParmUpdate();
select forupdate firstonly salesParmUpdate where
salesParmUpdate.RecId == letter.salesParmUpdate().RecId;
salesParmUpdate.SumBy = _sumBy;
salesParmUpdate.update();
letter.salesParmUpdate(salesParmUpdate);
letter.initParameters(letter.salesParmUpdate(),
PrintOut::Current); // Printout
for (iSales = 1; iSales <= conlen(_conSales); iSales ++)
{
salesId = conpeek(_conSales, iSales);
salesTable = salesTable::find(salesId);
SalesParmTable.clear();
letter.createParmTable(SalesParmTable, salesTable);
SalesParmTable.DocumentDate = _documentDate;
SalesParmTable.Transdate = _invoiceDate;
SalesParmTable.insert();
}
for (iLines = 1; iLines <= conlen(_conLines); iLines ++)
{
recId = conpeek(_conLines, iLines);
select firstonly salesLine where salesLine.RecId == recId;
letter.createParmLine(salesLine);
}
letter.run();
ttscommit;
}
Вот так можно вызвать этот метод:
PHP код:
static void Job13(Args _args)
{
Container conSales, conLines;
salesLine salesLine;
;
conSales = conins(conSales, 1, "000151482");
conSales = conins(conSales, 2, "000151483");
select firstonly salesLine where salesLine.SalesId == "000151482" && salesLine.ItemId == "114014010";
conLines = conins(conLines, 1, salesLine.RecId);
select firstonly salesLine where salesLine.SalesId == "000151483" && salesLine.ItemId == "11401401004";
conLines = conins(conLines, 2, salesLine.RecId);
MyClass::createOneInvoiceFromMultiSales(
conSales,
conLines,
01\08\2007,
02\08\2007,
SalesUpdate::All,
AccountOrder::Account);
}