|
24.08.2007, 16:25 | #1 |
Участник
|
Программная разноска накладной со строками из нескольких заказов
Привет всем!
Сто лет здесь не писал, но вот приспичило. Вопрос: у меня есть два заказа. Как программно обработать накладную с одной строкой из одного заказа, а второй строкой - из второго заказа? Я умею обрабатывать накладные по одному заказу вот так: X++: void createInvoice( transDate _invoiceDate, Num _numberInvoice = "", SalesUpdate _SalesUpdate = SalesUpdate::All ) { SalesFormLetter_Facture_RU salesFormLetter; int parmEnum = DocumentStatus::Invoice; SalesParmTable xSalesParmTable; SalesParmLine xSalesParmLine; num _NumInvoice; salesTable updSalesTable; ; ttsbegin; salesFormLetter = SalesFormLetter::construct(parmEnum); SalesFormLetter.multiForm(true); SalesFormLetter.specQty(_SalesUpdate); if (_numberInvoice) { SalesFormLetter.setNumAndVoucher(_numberInvoice); } SalesFormLetter.printFormLetter(false); //printInvoice if (parmEnum == DocumentStatus::Facture_RU) SalesFormLetter.parmPrintFacture_RU(false); //printFacture SalesFormLetter.update( salesTable, _invoiceDate,//systemdateGet(), SalesUpdate::DeliverNow, AccountOrder::Auto, NoYes::No, NoYes::No, _numberInvoice ); ttscommit; } Последний раз редактировалось Ace of Database; 24.08.2007 в 16:32. |
|
24.08.2007, 16:28 | #2 |
Участник
|
Цитата:
Расчеты с клиентами \ Периодические операции \ Обработка заказов \ Накладная. Выберите несколько заказов в кнопке выбор. Нажмите Ок. Осталось только повторить аналогичные действия программно. |
|
24.08.2007, 16:29 | #3 |
Участник
|
И еще добавлю на всякий случай, что выбирать из обоих заказов надо не все строки, а только конкретные.
|
|
24.08.2007, 16:39 | #4 |
Участник
|
Цитата:
Расчеты с клиентами \ Периодические операции \ Обработка заказов \ Накладная. Выберите несколько заказов в кнопке выбор. + Перейдите на закладку строки и укажите нужное вам количество в строках Нажмите Ок. Осталось только повторить аналогичные действия программно. |
|
24.08.2007, 16:46 | #5 |
Member
|
Если руками, то нагляднее выбрать несколько заказов в РК\Заказы на продажу и нажать Разноска\Накладная.
__________________
С уважением, glibs® |
|
24.08.2007, 16:50 | #6 |
Участник
|
Цитата:
Я забыл указать пункт в инструкции Расчеты с клиентами \ Периодические операции \ Обработка заказов \ Накладная. Выберите несколько заказов в кнопке выбор. Перейдите на закладку строки и укажите нужное вам количество в строках + Перейдите на закладку Прочее и включите Суммарная обработка (например по Счет на) Нажмите Ок. или как glibs говорит |
|
25.08.2007, 12:36 | #7 |
Участник
|
Получилось!
X++: static void Job1(Args _args) { SalesFormLetter letter=SalesFormLetter::construct(DocumentStatus::Invoice); SalesParmLine parmLine; salesLine salesLine; SalesParmTable SalesParmTable; salesParmUpdate salesParmUpdate; ; ttsBegin; letter.transDate(systemDateGet()); letter.multiForm(true); letter.specQty(SalesUpdate::All); letter.printFormLetter (true); letter.createParmUpdate(); select forupdate firstonly salesParmUpdate where salesParmUpdate.RecId == letter.salesParmUpdate().RecId; salesParmUpdate.SumBy = AccountOrder::Account; salesParmUpdate.update(); letter.salesParmUpdate(salesParmUpdate); letter.initParameters(letter.salesParmUpdate(), PrintOut::Current); // Printout //1-й заказ letter.createParmTable(SalesParmTable, SalesTable::find("000151482")); SalesParmTable.DocumentDate = SalesTable::find("000151482").DeliveryDate; SalesParmTable.Transdate = SalesTable::find("000151482").DeliveryDate; SalesParmTable.insert(); //2-й заказ SalesParmTable.clear(); letter.createParmTable(SalesParmTable, SalesTable::find("000151483")); SalesParmTable.DocumentDate = SalesTable::find("000151482").DeliveryDate; SalesParmTable.Transdate = SalesTable::find("000151482").DeliveryDate; SalesParmTable.insert(); //строка 1-го заказа select firstonly salesLine where salesLine.SalesId == "000151482" && salesLine.ItemId == "114014010"; letter.createParmLine(salesLine); //строка 2-го заказа select firstonly salesLine where salesLine.SalesId == "000151483" && salesLine.ItemId == "11401401004"; letter.createParmLine(salesLine); letter.run(); ttscommit; } |
|
25.08.2007, 13:08 | #8 |
Участник
|
Сделал метод, с помощью которого можно создавать одну накладную по нескольким строкам из разных заказов.
PHP код:
Вот так можно вызвать этот метод: PHP код:
|
|
Теги |
заказ на продажу, законченный пример, накладная, программно, разноска |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|