Показать сообщение отдельно
Старый 12.07.2011, 03:52   #6  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Поищите по фразе "программная разноска" или "создание накладной из кода" - есть варианты и с ручным созданием PurchParmLine, вот, например, тема - Создание CustInvoiceJour, CustInvoiceSalesLink, CustInvoiceTrans from X++

Сам пишу примерно такой код (разноска отборочной - выбор нужных строк заказа по фильтру и задание для каждой требуемого кол-ва):
X++:
        purchParmTable.clear();

        purchFormLetter = new PurchFormLetter_PackingSlip_public(true);
        purchFormLetter.parmId();
        purchFormLetter.initParmPurchTable(purchTable);
        purchFormLetter.specQty(PurchUpdate::PackingSlip);
        purchFormLetter.transDate(systemdateget());
        purchFormLetter.createParmTable(purchParmTable, purchTable);

        purchParmTable.Num = packingSlip.PackingSlipId;
        purchParmTable.Transdate = packingSlip.DeliveryDate;
        purchParmTable.insert();
        purchFormLetter.parmPurchParmTable(purchParmTable);

        while purchLine //все необходимые фильтры
        {
            purchParmLine.clear();
            purchParmLine.initFromParmTable(purchParmTable);
            purchParmLine.initFromPurchLine(purchLine);

            purchQuantity = PurchQuantity::construct(DocumentStatus::PackingSlip);
            [purchParmLine.ReceiveNow, purchParmLine.RemainBefore, purchParmLine.RemainAfter] =
                purchQuantity.qtyPurch(purchLine, purchUpdate::PackingSlip, < ->, false, purchParmTable.PackingSlipIdForUpdate_W);
            [purchParmLine.InventNow , purchParmLine.RemainBeforeInvent, purchParmLine.RemainAfterInvent] =
                purchQuantity.qtyInvent(purchLine, purchUpdate::PackingSlip, < ->, false, purchParmTable.PackingSlipIdForUpdate_W);

            purchLine.PurchReceivedNow = purchParmLine.ReceiveNow;
            purchLine.setInventReceivedNow();

            purchParmLine.setQty(purchParmTable.ordering, false);
            purchParmLine.setInventReceiveNow();
            purchParmLine.setLineAmount();
            purchParmLine.insert();
        }

        purchFormLetter.multiForm(true);
        purchFormLetter.allowCreateParmTable(true);
        purchFormLetter.progressInit("Создание отборочной", 1, '');
        purchFormLetter.createParmUpdate();
        purchFormLetter.setJournalList();
        purchFormLetter.createJournal();

Последний раз редактировалось vanokh; 12.07.2011 в 04:27.