03.05.2012, 19:01 | #1 |
Участник
|
Программная разноска накладной для заказа на покупку на основе отборочной накладной.
Использую метод PurchFormLetter.update(). Отборочная накладная разносится без проблем, а вот обычная в упор не видит ранее созданную отборочную при выборе PurchUpdate::PackingSlip. Есть предположение, что в update() нужно передать packedTmpFrmVirtualList. Кто-нибудь сталкивался с подобным? Буду благодарен за помощь.
|
|
03.05.2012, 19:14 | #2 |
Программатор
|
|
|
03.05.2012, 19:18 | #3 |
Программатор
|
X++: static void autoCreateInvoice(PurchTable _purchTable, PurchUpdate _purchUpdate, InvoiceDate _invoiceDate = systemDateGet(), boolean _storno = false, InvoiceId _invoiceId = "") { PurchFormLetter_Invoice purchFormLetter; PurchParmUpdate purchParmUpdate; ; purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice); purchFormLetter.createParmUpdate(); purchParmUpdate = purchFormLetter.purchParmUpdate(); purchParmUpdate.selectForUpdate(true); purchParmUpdate.Storno = _storno; purchParmUpdate.doUpdate(); purchFormLetter.purchParmUpdate(purchParmUpdate); purchFormLetter.parmCallerTable(_purchTable); purchFormLetter.initParmPurchTable(_purchTable); purchFormLetter.specQty(_purchUpdate); purchFormLetter.transDate(_invoiceDate); if (_invoiceId) purchFormLetter.parmParmTableNum(_invoiceId); purchFormLetter.initLinesQuery(); purchFormLetter.run(); } Последний раз редактировалось Sada; 03.05.2012 в 19:22. |
|
03.05.2012, 19:25 | #4 |
Участник
|
|
|
03.05.2012, 19:32 | #5 |
Участник
|
Цитата:
Сообщение от Sada
X++: static void autoCreateInvoice(PurchTable _purchTable, PurchUpdate _purchUpdate, InvoiceDate _invoiceDate = systemDateGet(), boolean _storno = false, InvoiceId _invoiceId = "") { PurchFormLetter_Invoice purchFormLetter; PurchParmUpdate purchParmUpdate; ; purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice); purchFormLetter.createParmUpdate(); purchParmUpdate = purchFormLetter.purchParmUpdate(); purchParmUpdate.selectForUpdate(true); purchParmUpdate.Storno = _storno; purchParmUpdate.doUpdate(); purchFormLetter.purchParmUpdate(purchParmUpdate); purchFormLetter.parmCallerTable(_purchTable); purchFormLetter.initParmPurchTable(_purchTable); purchFormLetter.specQty(_purchUpdate); purchFormLetter.transDate(_invoiceDate); if (_invoiceId) purchFormLetter.parmParmTableNum(_invoiceId); purchFormLetter.initLinesQuery(); purchFormLetter.run(); } |
|
03.05.2012, 19:33 | #6 |
Программатор
|
2009, на что то ругается?
|
|
03.05.2012, 19:39 | #7 |
Участник
|
|
|
03.05.2012, 19:42 | #8 |
Участник
|
На всякий случай уточню, при PurchUpdate::All накладные успешно создаются.
|
|
03.05.2012, 19:54 | #9 |
Программатор
|
ну это работающий код)))что значит не видит отборочную накладную? хотя, если вы говорите что не работает, то не работающий)))))
Последний раз редактировалось Sada; 03.05.2012 в 20:00. |
|
04.05.2012, 01:16 | #10 |
Banned
|
Можно попытаться пойти по пути наименьшего сопротивления и в одно польское поле в PurchParmTable прописать напрямую номер накладной. Кроме того, рекомендуется RU8, в котором исправлена ошибка русского GLS при выборе отборочной накладной.
|
|
04.05.2012, 16:34 | #11 |
Участник
|
Путь наименьшего сопротивления не подходит, так как не создается запись в PurchParmTable.
|
|
04.05.2012, 17:28 | #12 |
Участник
|
Так же удалось выяснить, что если руками проставить в форме PurchJournalSelect_PackingSlip галочку в поле "Включить" у нужной отборочной накладной, то разноска проходит нормально. Может кто-то знает как это сделать программным способом?
|
|
05.05.2012, 08:58 | #13 |
Участник
|
Не знаю что у вас не работает, но у меня прекрасно работает код а-ля (DAX 2009 RU8)
X++: purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice); purchFormLetter.update(purchTable, purchTable.PurchId, systemDateGet(), PurchUpdate::PackingSlip); X++: static void CreateInvoiceByPackingSlipJour(Args _args) { PurchFormLetter purchFormLetter; PurchTable purchTable = PurchTable::find(...); RefRecId refRecIdPackingSlipJourId = ...; TmpFrmVirtual tmpFrmVirtual; VendPackingSlipJour vendPackingSlipJour = VendPackingSlipJour::findRecId(refRecIdPackingSlipJourId); List listRecord = new List(Types::Record); ; tmpFrmVirtual.clear(); tmpFrmVirtual.CompanyId = vendPackingSlipJour.DataAreaId; tmpFrmVirtual.TableNum = vendPackingSlipJour.TableId; tmpFrmVirtual.RecordNo = vendPackingSlipJour.RecId; tmpFrmVirtual.NoYes = NoYes::Yes; tmpFrmVirtual.Id = vendPackingSlipJour.PurchId; tmpFrmVirtual.insert(); listRecord.addEnd(tmpFrmVirtual); purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice); purchFormLetter.reArrangeNow(false); purchFormLetter.update(purchTable, purchTable.PurchId, systemDateGet(), PurchUpdate::PackingSlip, AccountOrder::None, purchFormLetter.proforma(), purchFormLetter.printFormLetter(), purchFormLetter.usePrintManagement(), purchFormLetter.creditRemaining(), listRecord.pack()); info("done"); } X++: tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId &&
tmpFrmVirtual.TableNum == vendPackingSlipJour.TableId X++: while select tmpFrmVirtual order by Id where tmpFrmVirtual.TableNum == tableIdPackingSlip join vendPackingSlipJour where tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: alexkrut (1). |
05.05.2012, 15:58 | #14 |
Участник
|
Спасибо! Помогло формирование _packedTmpFrmVirtualList. Правда теперь появляется сообщение о том, что не заполнено поле "ссылка на строку", но это наверное из-за неправильного формирования отборочной накладной.
|
|
05.05.2012, 17:46 | #15 |
Участник
|
Есть еще метод purchFormLetter.chooseLinesQuery(), через который можно вообще любой запрос
на разноску повесить, только разноску надо потом вызыват методом run()
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
05.05.2012, 18:42 | #16 |
Участник
|
|
|
19.07.2013, 08:25 | #17 |
Участник
|
Добрый день. Почему не делаете для разноски отборочной накладной
X++: purchFormLetter = purchFormLetter::construct(DocumentStatus::PackingSlip)? |
|