12.12.2013, 15:58 | #1 |
Участник
|
Сортировка в Report
Всем доброго для.
Посоветуйте решение проблемы. Ах 2009, отчет CustVendFacture_RU. Хочу сделать сортировку FactureTrans_RU по ItemId. Если я правильно понимаю то нужно внести изменения в init метод DataSource. Просмотрел несколько тем, попробовал несколько способов, но результата не дало. X++: public void init() { Query q; QueryBuildDataSource qbds; super(); q = this.query(); qbds = q.dataSourceTable(tablenum(FactureJour_RU)); qbds.orderMode(OrderMode::GroupBy); qbds.addSortField(fieldnum(FactureJour_RU, FactureId)); qbds.addSortField(fieldnum(FactureJour_RU, FactureDate)); qbds.addSortField(fieldnum(FactureJour_RU, FactureDate_External)); qbds.addSortField(fieldnum(FactureJour_RU, FactureAmount)); qbds.addSortField(fieldnum(FactureJour_RU, CurrencyCode)); qbds.addSortField(fieldnum(FactureJour_RU, CustVendInvoiceAccount)); qbds.addSortField(fieldnum(FactureJour_RU, FactureExternalId)); qbds.addSortField(fieldnum(FactureJour_RU, OffSessionId)); qbds.addSortField(fieldnum(FactureJour_RU, Consignee)); qbds.addSortField(fieldnum(FactureJour_RU, Consignor)); qbds.addSortField(fieldnum(FactureJour_RU, PrintInMST)); qbds.addSortField(fieldnum(FactureJour_RU, Module)); qbds.addSortField(fieldnum(FactureJour_RU, FactureType)); qbds.addSortField(fieldnum(FactureJour_RU, DocumentNum)); qbds.addSortField(fieldnum(FactureJour_RU, DocumentDate)); qbds.addSortField(fieldnum(FactureJour_RU, DeliveryAddress)); // Only 16 sort fields per datasource are supported qbds.addSelectionField(fieldnum(FactureJour_RU, ReceiptNumber), SelectionField::Max); qbds = qbds.childDataSourceNo(1); qbds.orderMode(OrderMode::GroupBy); //qbds.sortClear(); qbds.addSortField(fieldnum(FactureTrans_RU, FactureId)); qbds.addSortField(fieldnum(FactureTrans_RU, Price)); qbds.addSortField(fieldnum(FactureTrans_RU, FactureLineType)); qbds.addSortField(fieldnum(FactureTrans_RU, Module)); qbds.addSortField(fieldnum(FactureTrans_RU, ItemName)); qbds.addSortField(fieldnum(FactureTrans_RU, Unit)); qbds.addSortField(fieldnum(FactureTrans_RU, vatValue)); qbds.addSortField(fieldnum(FactureTrans_RU, CountryRegionName)); qbds.addSortField(fieldnum(FactureTrans_RU, ItemId), SortOrder::Ascending); //qbds.sortDirection(fieldNum(FactureTrans_RU, ItemId), SortOrder::Ascending); // на этой строке падает приложение //qbds.addOrderByField(fieldnum(FactureTrans_RU, ItemId)); // Sma, 11/12/2013, Sma_CustVendFacture qbds.addSortField(fieldnum(FactureTrans_RU, InventDimId)); qbds.addSortField(fieldnum(FactureTrans_RU, InventGTDId)); qbds.addSortField(fieldnum(FactureTrans_RU, ExchRate)); qbds.addSortField(fieldnum(FactureTrans_RU, VATType)); // MCFR, BIA, 23/01/2013, !!!!!!!!!!!!!!!, qbds.addSelectionField(fieldnum(FactureTrans_RU, LineAmount), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, Qty), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, Excise), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, vat), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, TaxAmount), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, LineAmountMST), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, ExciseAmountMST), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, vatAmountMST), SelectionField::Sum); qbds.addSelectionField(fieldnum(FactureTrans_RU, TaxAmountMST), SelectionField::Sum); } |
|
12.12.2013, 16:09 | #2 |
Участник
|
Посмотрите еще метод fetch. Добавляли туда
X++: group by InvoiceLineNum |
|
12.12.2013, 16:12 | #3 |
Участник
|
Не совсем понял в чем проблема. Может быть вам поменять порядок полей в группировке?
И да посмотрите метод fetch. Может быть в вашем случае работает на query, а while select Последний раз редактировалось S.Kuskov; 12.12.2013 в 16:16. |
|
12.12.2013, 16:20 | #4 |
Участник
|
В методе fetch репорта
X++: public boolean fetch() { FactureJour_RU tmpJour; FactureTrans_RU tmpTrans; boolean ret; ; tmpJour = element.args().record(); if (caller) { if (! element.prompt()) { return false; } // BP Deviation Documented tmpJour.setTmp(); // BP Deviation Documented tmpTrans.setTmp(); tmpJour.setTmpData(caller.getFactureJour()); tmpTrans.setTmpData(caller.getFactureTrans()); element.setAddonInfo(tmpTrans); //element.setProviderId(tmpTrans, tmpJour); // Sma, Sma_METRO, 25/10/2013 select firstonly tmpJour; factureJour.data(tmpJour); this.loadPrinterSettings(factureJour); element.send(tmpJour); numOfLines = factureJour.numOfLines(tmpTrans, true); while select sum(LineAmount), sum(Qty), sum(Excise), sum(vat), sum(TaxAmount), sum(LineAmountMST), sum(ExciseAmountMST), sum(vatAmountMST), sum(TaxAmountMST) from tmpTrans group by FactureId, Price, FactureLineType, Module, ItemName, Unit, vatValue, CountryRegionName, ItemId, InventGTDId, InventDimId, ExchRate, VATType { factureTrans.data(tmpTrans); element.send(tmpTrans); } ret = true; } else { ret = super(); } return ret; } |
|
12.12.2013, 16:23 | #5 |
Участник
|
Поднимите добавление группировки по ItemId выше добавления группировки по ItemName
X++: qbds.addSortField(fieldnum(FactureTrans_RU, ItemId)) |
|
|
За это сообщение автора поблагодарили: smailik (1). |
12.12.2013, 16:33 | #6 |
Участник
|
Цитата:
X++: qbds = qbds.childDataSourceNo(1); qbds.orderMode(OrderMode::GroupBy); qbds.addSortField(fieldnum(FactureTrans_RU, FactureId)); qbds.addSortField(fieldnum(FactureTrans_RU, Price)); qbds.addSortField(fieldnum(FactureTrans_RU, FactureLineType)); qbds.addSortField(fieldnum(FactureTrans_RU, Module)); qbds.addSortField(fieldnum(FactureTrans_RU, ItemId), SortOrder::Ascending); qbds.addSortField(fieldnum(FactureTrans_RU, ItemName)); qbds.addSortField(fieldnum(FactureTrans_RU, Unit)); qbds.addSortField(fieldnum(FactureTrans_RU, vatValue)); qbds.addSortField(fieldnum(FactureTrans_RU, CountryRegionName)); |
|
12.12.2013, 16:48 | #7 |
Участник
|
А если так :
X++: qbds.orderMode(OrderMode::GroupBy); qbds.addSortField(fieldnum(FactureTrans_RU, ItemId), SortOrder::Ascending); qbds.addSortField(fieldnum(FactureTrans_RU, FactureId)); То есть сортировку по ItemId поставить в самом начале. |
|
|
За это сообщение автора поблагодарили: smailik (1). |
12.12.2013, 17:37 | #8 |
Участник
|
у вас сортировка по цене
X++: qbds.addSortField(fieldnum(FactureTrans_RU, Price)); X++: qbds.addSortField(fieldnum(FactureTrans_RU, ItemId), SortOrder::Ascending);
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1), smailik (1). |
12.12.2013, 20:10 | #9 |
Участник
|
Спасибо, поднял на самый верх полей FactureTrans_RU и заработало.
|
|
|
|