Показать сообщение отдельно
Старый 24.05.2010, 15:52   #8  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
То есть, Вам нужно программно вызвать механизм совместной обработки? Придется вручную формировать параметрические таблицы, ориентируясь на то место, которое подсказал Андре.
В приведенном ниже коде как раз производится что-то подобное. Единственное, этот код сразу разносит без открытия диалога, переделать с диалогом, думаю несложно.
Ну и несколько параметров лишние, они чисто наши, можно не обращать внимание:
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();
}
За это сообщение автора поблагодарили: hated8 (1).