AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2013, 15:58   #1  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Сортировка в 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  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
Посмотрите еще метод fetch. Добавляли туда
X++:
group by InvoiceLineNum
для того чтобы порядок следования номенклатур в документе совпадал с Накладной ТОРГ-12
Старый 12.12.2013, 16:12   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Не совсем понял в чем проблема. Может быть вам поменять порядок полей в группировке?

И да посмотрите метод fetch. Может быть в вашем случае работает на query, а while select

Последний раз редактировалось S.Kuskov; 12.12.2013 в 16:16.
Старый 12.12.2013, 16:20   #4  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
В методе 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;
}
открываю с/ф из Журнала с/ф. Смотрел дебагером в "if (caller)" не заходит, так как caller = null
Старый 12.12.2013, 16:23   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Поднимите добавление группировки по ItemId выше добавления группировки по ItemName
X++:
qbds.addSortField(fieldnum(FactureTrans_RU, ItemId))
За это сообщение автора поблагодарили: smailik (1).
Старый 12.12.2013, 16:33   #6  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Поднимите добавление группировки по ItemId выше добавления группировки по ItemName
X++:
qbds.addSortField(fieldnum(FactureTrans_RU, ItemId))
сделал, не помогло
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  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
А если так :
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  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
у вас сортировка по цене
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  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Спасибо, поднял на самый верх полей FactureTrans_RU и заработало.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax-erp: Walkthrough: Creating a Report Bound to a Report Data Provider Class (X++ Business Logic) [AX 2012] Blog bot DAX Blogs 0 20.09.2012 11:11
sumitsaxfactor: Building a simple report – Using Report Data Provider Blog bot DAX Blogs 9 11.09.2012 10:17
sumitsaxfactor: Report Design and Controls Blog bot DAX Blogs 0 05.09.2012 22:11
ax-erp: Report Data provider [RDP] as data source type in data set – SSRS reports [Dynamics ax 2012] Blog bot DAX Blogs 0 18.07.2012 12:11
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:22.