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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.09.2011, 14:34   #1  
kudrenko is offline
kudrenko
Участник
 
17 / 10 (1) +
Регистрация: 11.11.2010
Коллеги, столкнулся с указанной ниже проблемой – помогите, пожалуйста.
Есть форма, на которой выбирается «Код Склада» и «Номер Товара». При нажатии на соотв. кнопку открывается report, куда необходимо передать эти два параметра, с целью их дальнейшего использования в качестве фильтров по умолчанию по таблицам указанным в отчете.

Report состоит из следующих DataItem:
  • Location DataItemIndent = 0, ReqFilterFields = Code – это основная таблица
  • Item DataItemIndent = 1, ReqFilterFields = No.,Bin Filter,Date Filter,Resp. Person Dimension Filter - это «подчиненная» таблица.
Так вот, для передачи «Кода Склада» я делаю следующие действия на кнопке формы:
Код:
Location.SETRANGE(Code, "Location Code");
ReportName.SETTABLEVIEW(Location);
ReportName.RUNMODAL;
А вот установить фильтр по таблице Item не получается.
Пытался в отчете создавать функцию следующего содержания:
Код:
SetItemFilter(VAR ItemRec : Record Item)
Item.COPYFILTERS(Item);
Тогда код на кнопке писал следующим образом:
Код:
Location.SETRANGE(Code, "Location Code");
Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item);
ReportName.SETTABLEVIEW(Location);
ReportName.RUNMODAL;
Делал еще кучу всяких манипуляций, но желаемого результата, к сожалению не получил....
Есть у кого какие мысли?
Старый 09.09.2011, 16:12   #2  
mira is offline
mira
Участник
Аватар для mira
 
140 / 25 (1) +++
Регистрация: 18.03.2007
Адрес: Москва
Доброго дня всем.
делаю вот так .. (не помню , где подсмотрела )

Во-первых, нужно подготовить отчет, чтобы он мог эти передаваемые параметры принять. Для этого создадим в нем функцию:
SetProperties(lmyParam1 : Boolean; lmyParam2 : Integer)
gmyParam1 := lmyParam1; //присваиваем полученные значения
gmyParam2 := lmyParam2; //глобальным переменным отчета

Потом передадим требуемые параметры в отчет
GReport50055.SetProperties(TRUE,123);

А потом отчет запускаем
GReport50055.RUNMODAL;

Так пробовали?
Старый 09.09.2011, 16:33   #3  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Цитата:
Сообщение от kudrenko Посмотреть сообщение
А вот установить фильтр по таблице Item не получается.
Пытался в отчете создавать функцию следующего содержания:
Код:
SetItemFilter(VAR ItemRec : Record Item)
Item.COPYFILTERS(Item);
Тогда код на кнопке писал следующим образом:
Код:
Location.SETRANGE(Code, "Location Code");
Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item);
ReportName.SETTABLEVIEW(Location);
ReportName.RUNMODAL;
Item.COPYFILTERS(Item); - Вы копируете фильтры из текущей переменной в текущую же. Надо копировать из ItemRec


Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item); - Почему Item? Откуда он взялся? Фильтр наложен же на Item_на_форме, его и передавайте в отчет.
Старый 09.09.2011, 16:56   #4  
kudrenko is offline
kudrenko
Участник
 
17 / 10 (1) +
Регистрация: 11.11.2010
Цитата:
Сообщение от .Quattro. Посмотреть сообщение
Цитата:
Сообщение от kudrenko Посмотреть сообщение
А вот установить фильтр по таблице Item не получается.
Пытался в отчете создавать функцию следующего содержания:
Код:
SetItemFilter(VAR ItemRec : Record Item)
Item.COPYFILTERS(Item);
Тогда код на кнопке писал следующим образом:
Код:
Location.SETRANGE(Code, "Location Code");
Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item);
ReportName.SETTABLEVIEW(Location);
ReportName.RUNMODAL;
Item.COPYFILTERS(Item); - Вы копируете фильтры из текущей переменной в текущую же. Надо копировать из ItemRec


Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item); - Почему Item? Откуда он взялся? Фильтр наложен же на Item_на_форме, его и передавайте в отчет.

.Quattro., вы безусловно правы - это я просто здесь сделал опечатку, в коде было конечно же так (спасибо, что поправили):
На кнопке формы:
Код:
Location.SETRANGE(Code, "Location Code");
Item_на_форме.SETRANGE(“No.”, ‘Номер товара’);
ReportName.SetItemFilter(Item_на_форме);
ReportName.SETTABLEVIEW(Location);
ReportName.RUNMODAL;
Функция SetItemFilter Report-a выглядит так:
Код:
SetItemFilter(VAR ItemRec : Record Item)
Item.COPYFILTERS(ItemRec);
Более того, если в триггере report-a OnOpenForm() написать:
Код:
MESSAGE(Item.GETFILTERS);
то выдает вполне предсказуемый результат Но. "Выбранный Код Товара".
Тем не менее ума не приложу, почему я не наблюдаю "Выбранный Код Товара" на гриде фильтров таблицы Item.
Старый 09.09.2011, 17:01   #5  
kudrenko is offline
kudrenko
Участник
 
17 / 10 (1) +
Регистрация: 11.11.2010
Цитата:
Сообщение от mira Посмотреть сообщение
Доброго дня всем.
делаю вот так .. (не помню , где подсмотрела )

Во-первых, нужно подготовить отчет, чтобы он мог эти передаваемые параметры принять. Для этого создадим в нем функцию:
SetProperties(lmyParam1 : Boolean; lmyParam2 : Integer)
gmyParam1 := lmyParam1; //присваиваем полученные значения
gmyParam2 := lmyParam2; //глобальным переменным отчета

Потом передадим требуемые параметры в отчет
GReport50055.SetProperties(TRUE,123);

А потом отчет запускаем
GReport50055.RUNMODAL;

Так пробовали?
Да, mira, пробовал...
Старый 09.09.2011, 19:47   #6  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Всё гораздо проще:
т.к. таблица Item в вашем report'е тоже DataItem (как и Location), то и для неё можно "подсовывать" report'у наложенные фильтры посредством SETTABLEVIEW. Всё прекрасно работает, при старте report'a видны фильтры и на Location, и на Item.
Так что в этом случае можно обойтись и без функции.

Код:
Location.SETRANGE(Code,'BLUE');
ReportName.SETTABLEVIEW(Location);

Item.SETRANGE("No.",'1000');
ReportName.SETTABLEVIEW(Item);

ReportName.RUNMODAL;
Старый 09.09.2011, 23:35   #7  
kudrenko is offline
kudrenko
Участник
 
17 / 10 (1) +
Регистрация: 11.11.2010
Цитата:
Сообщение от AlexB Посмотреть сообщение
Всё гораздо проще:
т.к. таблица Item в вашем report'е тоже DataItem (как и Location), то и для неё можно "подсовывать" report'у наложенные фильтры посредством SETTABLEVIEW. Всё прекрасно работает, при старте report'a видны фильтры и на Location, и на Item.
Так что в этом случае можно обойтись и без функции.

Код:
Location.SETRANGE(Code,'BLUE');
ReportName.SETTABLEVIEW(Location);

Item.SETRANGE("No.",'1000');
ReportName.SETTABLEVIEW(Item);

ReportName.RUNMODAL;
AlexB, спасибо Вам огромное - действительно проще и не придумаешь)))) Чего я только не перепробовал (не говоря уже о потерянном времени), а решение было под носом и такое изящное - правду говорят, век живи век учись Спасибо Вам еще раз!!!!!
Старый 10.09.2011, 17:51   #8  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от AlexB Посмотреть сообщение
Всё гораздо проще:
...
это + !!!
Старый 12.09.2011, 10:56   #9  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от kudrenko Посмотреть сообщение
спасибо Вам огромное - действительно проще и не придумаешь
Вот за это простоту мне и нравится навижен.

Цитата:
Сообщение от Sancho Посмотреть сообщение
это + !!!
Спасибо!
 


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

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

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