11.03.2017, 20:03 | #1 |
Участник
|
Передача фильтра с сабформы в отчет
Всем привет.
Подскажите как можно передать фильтры с сабформы в отчет? Есть страница (Header + Subform). На строки сабформы наложен фильтр. Фильтры с сабформы могу отобрать с помощью функции GETFILTERS. А как можно полученные фильтра наложить на DataItem отчета? |
|
12.03.2017, 21:37 | #2 |
Участник
|
Нашел решение. Вопрос закрыт.
|
|
12.03.2017, 22:45 | #3 |
Administrator
|
и это решение...
делиться не будете? |
|
13.03.2017, 10:36 | #4 |
Участник
|
Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS); 2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>. 3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2). |
|
13.03.2017, 11:15 | #5 |
Участник
|
Попутный вопрос к спецам: COPYFILTERS копирует действительно ВСЕ фильтры поля?
Я почему спрашиваю, столкнулась с тем, что GETFILTERS/SETFILTERS И GETVIEW/SETVIEW работают только с фильтрами текущей фильтр-группы. Если, к примеру в группе 2 были установлены доп. фильтры, то они не будут учтены. |
|
13.03.2017, 13:43 | #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 --------------------------- ОК --------------------------- |
|
13.03.2017, 13:47 | #7 |
Administrator
|
Цитата:
Сообщение от Анатолий Вешемирский
Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS); 2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>. 3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2). первая часть (получить фильтры) не проблема. но не все отчеты запускаются из кода. например, кнопка Печать в документе. и тогда нет никакого другого способа кроме использования глобального юнита (SingleInstance) передать параметр в отчет. другими словами "взвести параметр", а при старте отчета проверять "не взведен ли параметр?". |
|
14.03.2017, 08:42 | #8 |
Участник
|
Ну есть еще как минимум один способ передать параметры в отчет без использования глобального кодюнита .
__________________
Want to believe... |
|
14.03.2017, 09:23 | #9 |
Administrator
|
пиши сюда же, че
репорт объявить переменной, внутри сделать ф-цию GetValue(Variable) перед запуском сунуть переменную? но опять же при нажатии на кнопку Печать не сработает. |
|
14.03.2017, 11:44 | #10 |
Участник
|
При печати как правило все же передается Rec который нужно напечатать (исключаем реализацию печати в Excel в последних версиях).
А раз передаем Record то значит и фильтры его тоже. Это же касается и флоуфильтров. Таким образом на Rec плодим ни на что не влияющий флоуфильтр нужного нам типа и перед вызовом печати накладываем фильтр на это поле тем значением которое и получим в отчете с использованием GETFILTER.
__________________
Want to believe... |
|
|
За это сообщение автора поблагодарили: Sancho (2). |
16.06.2017, 13:35 | #11 |
Участник
|
А а каком месте настройку сделать? Как без программирования, запустить репорт на rec? Например page Customer Card, сделал report где record Customer, добавил в Page Action, а дальше?
|
|