|
![]() |
#1 |
Участник
|
Peter Savintsev, спасибо за идею реализации
![]() ![]() ВСЕМ огромное сенкс за участие!!! Толпой как-то приятнее думать ![]()
__________________
MBS-Axapta 3.0 CIS SP3 Последний раз редактировалось Tiruvileijadal'; 05.12.2007 в 09:17. Причина: орфография |
|
![]() |
#2 |
Участник
|
Все, силы иссякли, нервов нет, не могу понять почему не выбирает. В таблице MyTable есть данные с аналитиками. Сделала небольшую группировку по аналитикам, чтоб хоть примерно преставлять - что должно выводится в отчет. Получилось следующее:
Depart Center Managment - аналитика (0) (1) (3) - индекс в Enum ogk-01 002025 sug-01 002025 sug-01 002035 sug-28 005041 sug-28 005036 600812 Код программы: X++: Query initQuery() { Query q = new Query(); QueryBuildDataSource qbds; qbds = q.addDataSource(tablenum(SUG_LedgerTransDimentionsDetails)); qbds.orderMode(OrderMode::GroupBy); return q; } void SelDimens(Query _q, int _idx, SysDimension _sysDim, SysDim _dimValue, int _i) { QueryRun qr = new QueryRun(this.initQuery()); Dimensions dim; SysDImension sysDimGroup; ; num_count = 1; // numDomens - контейнер с номерами выбранных аналитик (1,2,4 в примере) sysDimGroup = conPeek(numDimens, _idx) - 1; // поле для выбора (как я понимаю) qr.query().dataSourceTable(tablenum(SUG_LedgerTransDimentionsDetails)).addSortField(fieldId2Ext(fieldnum(SUG_LedgerTransDimentionsDetails, Dimension), _i)); // фильтр, по которому поле выше отбирают qr.query().dataSourceTable(tablenum(SUG_LedgerTransDimentionsDetails)).addRange(fieldId2Ext(fieldnum(SUG_LedgerTransDimentionsDetails, Dimension), _sysDim)).value(queryValue(_dimValue)); while (qr.next()) { ltvd1 = qr.get(tablenum(SUG_LedgerTransDimentionsDetails)); select Description from dim where dim.Num == ltvd1.Dimension[_i] && dim.DimensionCode == sysDimGroup; medt.insertValue2(num_count, counter, dim.Description); medt.insertValue2(num_count+1, counter, int2str(_i)); counter++; if (h <= conLen(numDimens)) { h = _idx + 1; i = conPeek(numDimens, h); this.SelDimens(qr.query(), h, sysDimGroup, ltvd1.Dimension[_i], i); } } } ![]() А еще бывают ситуации, когда у Depart нет Center, но есть Managment - вот тут цикл точно проскочит выборку и ничего не выдаст, а как сделать чтоб не проскочил? ![]() Я уже подумываю о том, чтоб для каждого счета жестко забить аналитики и только по ним делать выборку и плевать на все... Вообще невозможно предусмотреть все ситуации. ![]()
__________________
MBS-Axapta 3.0 CIS SP3 |
|
|
![]() |
||||
Тема | Ответов | |||
Разница NotInTTS и Found | 6 | |||
Фильтр по пустому Dimension[x] в select | 3 | |||
Вопрос про Demand Planner | 4 | |||
select group by | 10 | |||
group , но не by | 9 |
|