|
![]() |
#1 |
MS Dynamics AX 2012 R3
|
Как то не то.
Вот мой метод: Х++ Цитата:
void makeQueryRun()
{ Query query = new query(); QueryBuildDataSource qbds, qbds1,qbds2,qbds3; QueryBuildRange qbr; RAssetStandards rAssetStandards,_rassetStandards; RAssetTable rAssetTable; RAssetTrans rAssetTrans; RAssetSumCalc_Trans rAssetSumTrans; TransDate transDate; ; qbds = query.addDataSource(tableNum(RAssetTable)); // группировка по статусу --> qbds.addSortField(fieldNum(RAssetTable, Status)); qbds.orderMode(OrderMode::GroupBy); // группировка по статусу --< qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus::Closed)); // фильтр на Закрыто qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus:: Disposed)); // фильтр на Списано qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus::Sold)); // фильтр на Продано // вывод значения номера ОС при группировке --> qbds.addSortField(fieldNum(RAssetTable, AccountNum)); qbds.orderMode(OrderMode::GroupBy); qbds.addRange(fieldNum(RAssetTable, AccountNum)); // вывод значения номера ОС при группировке --< // вывод значения Наименование ОС при группировке --> qbds.addSortField(fieldNum(RAssetTable, Name)); qbds.orderMode(OrderMode::GroupBy); qbds.addRange(fieldNum(RAssetTable, Name)); // вывод значения Наименование ОС при группировке --< qbds1 = qbds.addDataSource(tableNum(RAssetStandards)); qbds1.addLink(fieldNum(RAssetTable,AccountNum),fieldNum(RAssetStandards,AssetId)); // группировка по фильтру Амортизация --> qbds1.addSortField(fieldNum(RAssetStandards, AssetStandardId)); qbds1.orderMode(OrderMode::GroupBy); qbds1.addRange(fieldNum(RAssetStandards, AssetStandardId)); // группировка по фильтру Амортизация --< qbds2 = qbds1.addDataSource(tableNum(RassetTrans)); qbds2.addLink(fieldNum(RAssetStandards,AssetId),fieldNum(RAssetTrans,AccountNum)); qbds2.addLink(fieldNum(RAssetStandards,AssetStandardId),fieldNum(RAssetTrans,AssetStandardId)); // фильтр начислений только по амортизации, группировка и суммирование начисленной амортизации по каждому ОС --> qbds2.addSortField(fieldNum(RAssetTrans, AccountNum)); qbds2.orderMode(OrderMode::GroupBy); qbds2.addSelectionField(fieldNum(RAssetTrans, AmountMST), SelectionField::Sum); // фильтр начислений только по амортизации, группировка и суммирование начисленной амортизации по каждому ОС --< qbds2.addRange(fieldNum(RAssetTrans, AssetTransType)).value(QueryValue(AssetTransType:: Depreciation)); qbds2.addRange(fieldNum(RAssetTrans, TransDate)).value(QueryRange(fromDate,toDate)); // это для диалога // info(qbds.toString()); queryRun = new QueryRun(query); }
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов Последний раз редактировалось ZornFire; 26.05.2011 в 12:59. Причина: прорисовка смайлов в коде вместо : D |
|
![]() |
#2 |
Участник
|
Цитата:
X++: qbds2.addRange(fieldNum(RAssetTrans, TransDate)).value(QueryRange(fromDate,toDate)); Ваша задача доработать исходный запрос так чтобы он искал одновременно и сумму и дату? или можно написать новый, который уже не будет искать сумму, а будет искать дату? offtop: Свойство orderMode для каждого QueryBuildDataSource достаточно задать один раз. Не нужно делать это после каждого addSortField Последний раз редактировалось S.Kuskov; 26.05.2011 в 13:27. |
|
![]() |
#3 |
Ищущий знания...
|
Цитата:
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|