05.01.2004, 15:38 | #1 |
Участник
|
Установка Range в отчёте
Очень хотелось бы понять как можно в отчёте наложить динамический Range на таблицу, которая указана единственным датасорсом. Т.е. нужно всего лишь установить фильтрацию на используемую таблицу. Причём значение фильтра (скажем, для простоты, фильтрация по одному полю) задаётся динамически - появляется в перехваченном методе init через args.caller() через метод формы, из которой (через MenuItem) вызван данный отчёт.
1) Пробовал через QueryBuildRange - но его установка в init'е : myRange = element.query().dataSourceNo(1).addRange(fieldNum(MyTable, Num)); myRange.value('1'); ни к чему не приводит 2) аналогичным образом пробовал в ExecuteSection 3) обнаружил , что в init у Query в отчёте - никогда не вызывается Буду очень признателен за любой совет!
__________________
Paul_ST |
|
05.01.2004, 16:14 | #2 |
Участник
|
queryRun
Попробуй наложить range не на query, а на queryRun
|
|
05.01.2004, 16:17 | #3 |
Участник
|
А где взять взять QueryRun? ) К какому объекту он относится?
__________________
Paul_ST |
|
05.01.2004, 16:28 | #4 |
Участник
|
Если самому создавать объект класса QueryRun через new, то что указать в качестве параметра?
__________________
Paul_ST |
|
05.01.2004, 17:09 | #5 |
Участник
|
странно...
У меня почти также в init-e:
PHP код:
Замечания: 1) во первых в ините это нужно делать после вызова super() (мало ли что там могет твориться) 2) Употребление двойных ковычек существено али нет. 3) Если объявить строчку так: PHP код:
PHP код:
4) Это все мои предположения, к сожалению, точно я не знаю в чем тут причина.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
05.01.2004, 17:14 | #6 |
Участник
|
Спасибо большое!
Но только конечно - принципиально хотелось бы подставлять range через переменную. А в строке: dSInventTable.addRange(fieldNum(InventTable, m_VendAccount)) .value(priviosVendAccountRangeValue + ", что-то".); переменная priviosVendAccountRangeValue разве не просто str? Иначе чем это отличается от случая подстановки строки s?
__________________
Paul_ST |
|
05.01.2004, 17:18 | #7 |
Участник
|
не совсем...
PHP код:
Но ее значение, не проставляется так: PHP код:
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
06.01.2004, 09:27 | #8 |
Участник
|
Ситуация несколько исправилась - когда я стал не просто добавлять (вызывать AddaRange) Range (всё по прежнему делается через QueryBuildRange), а предварительно искать его у нужного поля и если нашёлся, то изменять его значение.
После чего фильтрация заработала. Интересно то, что init у Query вызывается много раз (я просто поставил Info в тело метода) Осталась единственная проблема - как установить (или изменить) значение Range на значение переданное в отчёт . Это переданное значение я полуаю в init у отчёта через вызов метода формы (которая вызывает мой отчёт через MenuItem). Беда в том, что переменные , описанные в classdeclaration у отчёта , недоступны в init у Query. Может есть идеи - как в init у Query передать значения, полученные в init у отчёта?
__________________
Paul_ST |
|
06.01.2004, 10:16 | #9 |
Участник
|
1) А зачем править query в его init-e?
у меня правиться в init-е самого отчета: this.query.... Таким образом, в передаче нет необходимости.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
06.01.2004, 10:23 | #10 |
Участник
|
Интересная мысль, только я уже так пробовал - даже если не подставлять динамически value для Range у this.query в init у отчёта (а только статически), то если просто сам отчёт запускать (из АОТ), тогда работает, а вот если его из формы вызывать - почему то нет фильтрации
__________________
Paul_ST |
|
06.01.2004, 10:37 | #11 |
Участник
|
а как ты из формы вызваешь? Ты говоришь, что через menuItem, т.е. через menuFunction. Такое ощущение, что вызов как-то не так проходит и init отчета не вызывается.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
06.01.2004, 10:43 | #12 |
Участник
|
init как раз вызывается - я там точки останова вовсю ставлю
__________________
Paul_ST |
|
06.01.2004, 17:31 | #13 |
Участник
|
Re: Установка Range в отчёте
Цитата:
Изначально опубликовано Paul_ST
Пробовал через QueryBuildRange - но его установка в init'е : myRange = element.query().dataSourceNo(1).addRange(fieldNum(MyTable, Num)); myRange.value('1'); ни к чему не приводит А какой отчет? У этого отчета небось fetch или send перекрыт? А внутри этих перекрытых методов программист наваял собственный select наплевав на query? Можно отчет сюда положить? Если он стандартный, то скажи его назание? |
|
06.01.2004, 17:33 | #14 |
Участник
|
Цитата:
Изначально опубликовано Paul_ST
Ситуация несколько исправилась - когда я стал не просто добавлять (вызывать AddaRange) Range (всё по прежнему делается через QueryBuildRange), а предварительно искать его у нужного поля и если нашёлся, то изменять его значение. После чего фильтрация заработала. И все же, очень хочется посмотреть на проект с этим отчетом. |
|