![]() |
#1 |
Участник
|
Передача фильтра с сабформы в отчет
Всем привет.
Подскажите как можно передать фильтры с сабформы в отчет? Есть страница (Header + Subform). На строки сабформы наложен фильтр. Фильтры с сабформы могу отобрать с помощью функции GETFILTERS. А как можно полученные фильтра наложить на DataItem отчета? |
|
![]() |
#2 |
Участник
|
Нашел решение. Вопрос закрыт.
|
|
![]() |
#3 |
Administrator
|
и это решение...
делиться не будете? ![]() |
|
![]() |
#4 |
Участник
|
Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS); 2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>. 3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2). |
|
![]() |
#5 |
Участник
|
Попутный вопрос к спецам: COPYFILTERS копирует действительно ВСЕ фильтры поля?
Я почему спрашиваю, столкнулась с тем, что GETFILTERS/SETFILTERS И GETVIEW/SETVIEW работают только с фильтрами текущей фильтр-группы. Если, к примеру в группе 2 были установлены доп. фильтры, то они не будут учтены. |
|
![]() |
#6 |
Administrator
|
COPYFILTERS работает!!!
![]() Rec1.FILTERGROUP(2); Rec1.SETRANGE("Vendor No.", 'sdfgdfg'); Rec1.FILTERGROUP(0); Rec1.SETRANGE("Posting Date", TODAY); Rec2.COPYFILTERS(Rec1); Rec2.FILTERGROUP(2); MESSAGE(Rec2.GETFILTERS()); --------------------------- Microsoft Dynamics NAV Classic --------------------------- Поставщик Но.: SDFGDFG --------------------------- ОК --------------------------- |
|
![]() |
#7 |
Administrator
|
Цитата:
Сообщение от Анатолий Вешемирский
![]() Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS); 2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>. 3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2). первая часть (получить фильтры) не проблема. но не все отчеты запускаются из кода. например, кнопка Печать в документе. и тогда нет никакого другого способа кроме использования глобального юнита (SingleInstance) передать параметр в отчет. другими словами "взвести параметр", а при старте отчета проверять "не взведен ли параметр?". |
|
![]() |
#8 |
Участник
|
Ну есть еще как минимум один способ передать параметры в отчет без использования глобального кодюнита
![]()
__________________
Want to believe... |
|
![]() |
#9 |
Administrator
|
пиши сюда же, че
репорт объявить переменной, внутри сделать ф-цию GetValue(Variable) перед запуском сунуть переменную? но опять же при нажатии на кнопку Печать не сработает. |
|
![]() |
#10 |
Участник
|
При печати как правило все же передается Rec который нужно напечатать (исключаем реализацию печати в Excel в последних версиях).
А раз передаем Record то значит и фильтры его тоже. Это же касается и флоуфильтров. Таким образом на Rec плодим ни на что не влияющий флоуфильтр нужного нам типа и перед вызовом печати накладываем фильтр на это поле тем значением которое и получим в отчете с использованием GETFILTER.
__________________
Want to believe... |
|
|
За это сообщение автора поблагодарили: Sancho (2). |
![]() |
#11 |
Участник
|
А а каком месте настройку сделать? Как без программирования, запустить репорт на rec? Например page Customer Card, сделал report где record Customer, добавил в Page Action, а дальше?
|
|