То есть, Вам нужно программно вызвать механизм совместной обработки? Придется вручную формировать параметрические таблицы, ориентируясь на то место, которое подсказал Андре.
В приведенном ниже коде как раз производится что-то подобное. Единственное, этот код сразу разносит без открытия диалога, переделать с диалогом, думаю несложно.
Ну и несколько параметров лишние, они чисто наши, можно не обращать внимание:
X++:
// ААК: МФД40_08_01_0008_003 24.04.2009 [Заявки на отгрузку] -->
public static CustInvoiceJour multiSalesPost_OVK(
container _conSales, // Контейнер с SalesId нужных заказов
container _conLines, // Контейнер с RecId строк заказов
TransDate _invoiceDate = systemDateGet(), // Дата накладной
TransDate _documentDate = systemDateGet(), // Дата документа
SalesUpdate _specQty = SalesUpdate::DeliverNow, // SpecQty
AccountOrder _sumBy = AccountOrder::None, // Суммарная обработка
PostInvoiceAdvData_OVK _postAdvData = null,
BOLData_OVK _bolData = null // Данные для ТТН
)
// ААК: МФД40_08_01_0008_003 24.04.2009 [Заявки на отгрузку] <--
{
SalesTable salesTable;
SalesLine salesLine;
SalesParmTable salesParmTable;
salesParmUpdate salesParmUpdate;
SalesFormLetter_Invoice salesFormLetter;
SalesParmLine parmLine;
SalesId salesId;
Counter iSales, iLines;
RecId recId;
;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
ttsBegin;
salesFormLetter.createParmUpdate(false, conNull());
salesParmUpdate = salesParmUpdate::find(salesFormLetter.parmId(), true);
salesParmUpdate.SumBy = _sumBy;
if (_postAdvData)
{
salesParmUpdate.storno = _postAdvData.storno();
salesParmUpdate.CreditRemaining = _postAdvData.creditRemaining();
}
if (_bolData)
{
salesParmUpdate.BOLCarrierName = _bolData.carrierName();
salesParmUpdate.BOLFreightChargeTerms = _bolData.freightChargeTerms();
salesParmUpdate.BOLFreightCounted = _bolData.freightCounted();
salesParmUpdate.BOLTrailerLoaded = _bolData.trailerLoaded();
salesParmUpdate.BOLFreightedBy = _bolData.freightedBy();
}
salesParmUpdate.update();
salesFormLetter.salesParmUpdate(salesParmUpdate);
salesFormLetter.initParameters(salesFormLetter.salesParmUpdate(), PrintOut::Current, _postAdvData ? _postAdvData.printInvoice() : NoYes::No);
salesFormLetter.transDate(_invoiceDate);
salesFormLetter.multiForm(true);
salesFormLetter.specQty(_specQty);
if (_postAdvData)
{
salesFormLetter.parmStornoStatus (_postAdvData.stornoStatus());
salesFormLetter.printFormLetter (_postAdvData.printInvoice());
salesFormLetter.printInMST_OVK (_postAdvData.printInMST());
salesFormLetter.printBillOfLading_OVK (_postAdvData.printBOL());
salesFormLetter.parmReservReturn (_postAdvData.remainReserv());
salesFormLetter.parmRefDocumentStorno (_postAdvData.correctedInvoiceRecId());
salesFormLetter.parmFixedDueDate_OVK (_postAdvData.fixedDueDate());
salesFormLetter.parmPayment_OVK (_postAdvData.payment());
salesFormLetter.parmShipBatchId_OVK (_postAdvData.shipBatchId());
salesFormLetter.parmReservTransId_OVK (_postAdvData.reservTransId());
if (_postAdvData.corrected())
{
salesFormLetter.parmCorrect (_postAdvData.corrected());
salesFormLetter.parmCorrectedInvoiceId (_postAdvData.correctedInvoiceId());
salesFormLetter.parmCorrectedInvoiceDate (_postAdvData.correctedInvoiceDate());
}
if (_postAdvData.printStamp())
{
salesFormLetter.parmPrintStamp_OVK(UnknownNoYes::Yes);
}
else
{
salesFormLetter.parmPrintStamp_OVK(UnknownNoYes::No);
}
}
for (iSales = 1; iSales <= conLen(_conSales); iSales ++)
{
salesId = conpeek(_conSales, iSales);
salesTable = SalesTable::find(salesId);
salesParmTable.clear();
salesFormLetter.createParmTable(salesParmTable, salesTable);
salesParmTable.TableRefId = FormLetter::getTableRef();
salesParmTable.DocumentDate = _documentDate;
salesParmTable.TransDate = _invoiceDate;
salesParmTable.SalesId = salesTable.SalesId;
salesParmTable.Invoice4PaymId_OVK = CustInvoice4PaymSalesLink_RU::oneInvoice4PaymId_OVK(salesTable.SalesId);
if (_postAdvData)
{
if (_postAdvData.corrected())
{
salesParmTable.Correct_RU = _postAdvData.corrected();
salesParmTable.CorrectedInvoiceId_RU = _postAdvData.correctedInvoiceId();
salesParmTable.CorrectedInvoiceDate_RU = _postAdvData.correctedInvoiceDate();
}
salesParmTable.RefForStorno_OVK = _postAdvData.correctedInvoiceRecId();
salesParmTable.AverageExchRate_OVK = _postAdvData.fixedExchRate();
salesParmTable.ShipBatchId_OVK = _postAdvData.shipBatchId();
if (_postAdvData.fixedDueDate())
{
salesParmTable.FixedDueDate = _postAdvData.fixedDueDate();
}
}
if (_bolData)
{
salesParmTable.BOLDeliveryDate_RU = _bolData.deliveryDate();
salesParmTable.BOLVehicleModel_RU = _bolData.vehicleModel();
salesParmTable.BOLVehiclePlateNum_RU = _bolData.vehiclePlateNum();
salesParmTable.BOLWaybillNum_RU = _bolData.waybillNum();
salesParmTable.BOLDriverName_RU = _bolData.driverName();
salesParmTable.BOLDrivingLicenseNum_RU = _bolData.drivingLicenseNum();
salesParmTable.BOLLicenseCardType_RU = _bolData.licenseCardType();
salesParmTable.BOLLicenseCardRegNum_RU = _bolData.licenseCardRegNum();
salesParmTable.BOLLicenseCardSeries_RU = _bolData.licenseCardSeries();
salesParmTable.BOLLicenseCardNum_RU = _bolData.licenseCardNum();
salesParmTable.BOLTransportationType_RU = _bolData.transportationType();
salesParmTable.BOLCarrierType_RU = _bolData.carrierType();
salesParmTable.BOLCarrierCode_RU = _bolData.carrierCode();
}
salesParmTable.insert();
if (_bolData)
{
if (_bolData.addressTransTableId() && _bolData.addressTransRecId())
{
AddressTrans_RU::copy(salesParmTable.TableId, salesParmTable.RecId, _bolData.addressTransTableId(), _bolData.addressTransRecId(), AddressType::Lading_W);
AddressTrans_RU::copy(salesParmTable.TableId, salesParmTable.RecId, _bolData.addressTransTableId(), _bolData.addressTransRecId(), AddressType::Unlading_W);
}
}
for (iLines = 1; iLines <= conlen(_conLines); iLines ++)
{
recId = conpeek(_conLines, iLines);
salesLine = SalesLine::findRecId(recId);
if (salesLine.SalesId == salesId)
{
salesFormLetter.createParmLine(salesLine, salesParmTable.TableRefId);
}
}
}
salesFormLetter.run();
ttscommit;
return salesFormLetter.journal();
}