AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.03.2017, 20:03   #1  
Анатолий Вешемирский is offline
Анатолий Вешемирский
Участник
 
55 / 11 (1) +
Регистрация: 10.03.2017
Передача фильтра с сабформы в отчет
Всем привет.
Подскажите как можно передать фильтры с сабформы в отчет?
Есть страница (Header + Subform). На строки сабформы наложен фильтр.
Фильтры с сабформы могу отобрать с помощью функции GETFILTERS. А как можно полученные фильтра наложить на DataItem отчета?
Старый 12.03.2017, 21:37   #2  
Анатолий Вешемирский is offline
Анатолий Вешемирский
Участник
 
55 / 11 (1) +
Регистрация: 10.03.2017
Нашел решение. Вопрос закрыт.
Старый 12.03.2017, 22:45   #3  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
и это решение...
делиться не будете?
Старый 13.03.2017, 10:36   #4  
Анатолий Вешемирский is offline
Анатолий Вешемирский
Участник
 
55 / 11 (1) +
Регистрация: 10.03.2017
Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS);
2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>.
3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2).
Старый 13.03.2017, 11:15   #5  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Попутный вопрос к спецам: COPYFILTERS копирует действительно ВСЕ фильтры поля?
Я почему спрашиваю, столкнулась с тем, что GETFILTERS/SETFILTERS И GETVIEW/SETVIEW работают только с фильтрами текущей фильтр-группы. Если, к примеру в группе 2 были установлены доп. фильтры, то они не будут учтены.
Старый 13.03.2017, 13:43   #6  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
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  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Анатолий Вешемирский Посмотреть сообщение
Решение:
1. На странице сабформы написал функцию которая получает все фильтры с записей (использовал COPYFILTERS);
2. Вызов функции CurrPage.<имя сабформы>.PAGE.<имя функции>.
3. Вызов отчета через REPORT.RUN(ReportID,TRUE,FALSE,RecLine) (На запись RecLine наложил полученные фильтры на шаге 2).
отлично!
первая часть (получить фильтры) не проблема.

но не все отчеты запускаются из кода.
например, кнопка Печать в документе.

и тогда нет никакого другого способа кроме использования глобального юнита (SingleInstance) передать параметр в отчет.
другими словами "взвести параметр", а при старте отчета проверять "не взведен ли параметр?".
Старый 14.03.2017, 08:42   #8  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Ну есть еще как минимум один способ передать параметры в отчет без использования глобального кодюнита .
__________________
Want to believe...
Старый 14.03.2017, 09:23   #9  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
пиши сюда же, че
репорт объявить переменной, внутри сделать ф-цию GetValue(Variable) перед запуском сунуть переменную?
но опять же при нажатии на кнопку Печать не сработает.
Старый 14.03.2017, 11:44   #10  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
При печати как правило все же передается Rec который нужно напечатать (исключаем реализацию печати в Excel в последних версиях).
А раз передаем Record то значит и фильтры его тоже.
Это же касается и флоуфильтров. Таким образом на Rec плодим ни на что не влияющий флоуфильтр нужного нам типа и перед вызовом печати накладываем фильтр на это поле тем значением которое и получим в отчете с использованием GETFILTER.
__________________
Want to believe...
За это сообщение автора поблагодарили: Sancho (2).
Старый 16.06.2017, 13:35   #11  
Drug is offline
Drug
Участник
 
67 / 14 (1) ++
Регистрация: 13.12.2005
Цитата:
Сообщение от DA_NEAL Посмотреть сообщение
При печати как правило все же передается Rec который нужно напечатать (исключаем реализацию печати в Excel в последних версиях).
А раз передаем Record то значит и фильтры его тоже.
GETFILTER.
А а каком месте настройку сделать? Как без программирования, запустить репорт на rec? Например page Customer Card, сделал report где record Customer, добавил в Page Action, а дальше?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Простой отчет ZoyaKom NAV: Программирование 1 10.04.2012 11:00
Передача значений фильтров в отчет MaxAR NAV: Программирование 7 21.07.2006 13:09
Передача параметра в отчет vah NAV: Программирование 7 10.04.2006 17:58
При нажатии кнопки запустить ОТЧЕТ Timur Kaumov NAV: Программирование 7 28.07.2003 18:06
Attain. Конфликт фильтра по таблице и фильтра в правах пользователя Evgeniy NAV: Программирование 2 15.07.2003 13:57

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:00.