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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2013, 15:30   #1  
Kadawrik is offline
Kadawrik
Участник
 
275 / 11 (1) +
Регистрация: 04.11.2010
Подскажите, пжлст, как правильно передавать фильтр?
Имеется некая доп. таблица. На ней форма. В форме есть кнопка "Трансфер", по которой вызывается отчет (R50318), переносящий инфо их этой таблицы в две другие.
В отчете на Requestform есть параметр: "Обработать строки"(TabFlt) и далее выбор
- текущую строну
- только маркированные строки
- все строки

В триггере OnPush() кнопки "Трансфер" имеем:
Код:
CLEAR(R50318);
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
В триггере OnPreDataitem() отчета R50318 стоит:
Код:
CASE TabFlt OF
     TabFlt::"Текущая строка":
        BEGIN
//          тут не знаю что писать 
        END;

     TabFlt::"Маркированные строки":
        BEGIN
          MARKEDONLY(TRUE);
        END;

     TabFlt::"Все строки":
        BEGIN
          RESET;
        END;
END;      //CASE
как сделать. чтобы можно было обработать только тукущую строку?
и как сделать так, что если на таблицу наложен фильтр, то он бы учитывался и в отчете?

П.С. пониаю, что вопрос дилетантский, но тем не менее прошу о помощи
Старый 26.09.2013, 16:13   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,291 / 203 (9) ++++++
Регистрация: 11.01.2006
Rec.SETRECFILTER;

CLEAR(R50318);
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
Старый 27.09.2013, 12:38   #3  
Kadawrik is offline
Kadawrik
Участник
 
275 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от Sancho Посмотреть сообщение
Rec.SETRECFILTER;

CLEAR(R50318);
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
Я так сначала тоже пробовала. Но тогда отчет обрабатывает лишь текущую строку и после завершения отчета в форме отображается тоже лишь одна строка.
Старый 27.09.2013, 12:43   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Цитата:
Сообщение от Sancho Посмотреть сообщение
Rec.SETRECFILTER;

CLEAR(R50318);
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
Я так сначала тоже пробовала. Но тогда отчет обрабатывает лишь текущую строку и после завершения отчета в форме отображается тоже лишь одна строка.
Так возьмите другую переменную и на нее наложите фильтр по главному ключу из Рек, и уже ее передайте в отчет.
Старый 27.09.2013, 14:39   #5  
Kadawrik is offline
Kadawrik
Участник
 
275 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от InTacto Посмотреть сообщение
Так возьмите другую переменную и на нее наложите фильтр по главному ключу из Рек, и уже ее передайте в отчет.
Похоже, что к концу недели я торможу окончательно Пробовала и так и эдак - не получается как хотелось бы.
Оставила пока так:

В триггере OnPush() кнопки "Трансфер":
Код:
  CLEAR(R50318);
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
В триггере OnPreDataitem() отчета R50318:
Код:
 
CASE TabFlt OF     
     TabFlt::"Маркированные строки":        
     BEGIN          
       MARKEDONLY(TRUE);  // это отрабатывает корректно  (получаю только маркированные строки)
     END;     

     TabFlt::"Все строки":        
     BEGIN          
       // здесь ниче дополнительно не делаю, тогда обратаываются все строки, что были в форме (с учетом наложенных фильтров)        
     END;

     TabFlt::"Текущая строка":        
     BEGIN
 //       а вот тут никак не получается добиться того, чтобы только текущая строка бралась  :(         
     END;     

END;      //CASE
уберу тогда нафих вообще из меню этот вариант "текущая строка". Надо будет только одну строку обработать - пусть маркируют ее тогда сначала. ПОнимаю, что непрофессионально так поступать, но уже нет ни времни ни сил ни желания.
Weekeeeend!!!
Старый 28.09.2013, 11:37   #6  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,291 / 203 (9) ++++++
Регистрация: 11.01.2006
Код:
CASE TabFlt OF     
     TabFlt::"Маркированные строки":        
     BEGIN          
       MARKEDONLY(TRUE);  // это отрабатывает корректно  (получаю только маркированные строки)
     END;     

     TabFlt::"Все строки":        
     BEGIN          
       // здесь ниче дополнительно не делаю, тогда обратаываются все строки, что были в форме (с учетом наложенных фильтров)        
     END;

     TabFlt::"Текущая строка":        
     BEGIN
        SETRECFILTER();   // а вот тут          
     END;     

END;      //CASE
Старый 01.10.2013, 11:28   #7  
Kadawrik is offline
Kadawrik
Участник
 
275 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от Sancho Посмотреть сообщение
Код:
     TabFlt::"Текущая строка":        
     BEGIN
        SETRECFILTER();   // а вот тут          
     END;     

END;      //CASE
Этот вариант я тоже пробовала. При таком варианте вообще ни одной строки не выбирается.
В итоге сдела следующее:
В отчете R50318 создала процедуру:
Код:
EineZeile(SerNoLokal : Code[20])
   SerNoGlobal := SerNoLOkal;
В форме в триггере OnPush()
Код:
CLEAR(R50318);
R50318.EineZeile(serial_number); 
R50318.SETTABLEVIEW(Rec);
R50318.RUNMODAL();
CurrForm.UPDATE;
Ну и тогда кусок кода (триггер OnPreDataitem() отчета R50318) с CASE выглядит так:
Код:
     TabFlt::"Текущая строка":        
     BEGIN
       SETRANGE(serial_number, SerNoGlobal);
     END;
Понятно, что SerNoGlobal - глобальная переменная в отчете, а поле serial_number - первичный ключ таблицы

Ребята/девчата, всем спасибо за подсказки. что б я без вас делала?!
Старый 02.10.2013, 10:24   #8  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
а не пробовали вариант с SETSELECTIONFILTER?
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 02.10.2013, 12:09   #9  
Kadawrik is offline
Kadawrik
Участник
 
275 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от zuzka Посмотреть сообщение
а не пробовали вариант с SETSELECTIONFILTER?
Нет, такой вариант не пробовала.
Старый 03.10.2013, 22:11   #10  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
В триггере OnPush() кнопки
Код:
Rec4Report.COPY(Rec);

CLEAR(R50318);
R50318.SETTABLEVIEW(Rec4Report);
R50318.RUNMODAL();
В триггере OnPreDataitem() отчета R50318
Код:
CASE TabFlt OF
     TabFlt::"Текущая строка":
        BEGIN
          SETRECFILTER();
        END;

     TabFlt::"Маркированные строки":
        BEGIN
          MARKEDONLY(TRUE);
        END;

     TabFlt::"Все строки":
        BEGIN
          RESET;
        END;
END;      //CASE
Старый 07.10.2013, 11:16   #11  
srg is offline
srg
Участник
 
116 / 10 (1) +
Регистрация: 20.08.2013
По поводу фильтра, подскажите плз, как сделать фильтр по типу, одного из свойств поля, optionstring: покупка, продажа
Старый 07.10.2013, 11:37   #12  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,291 / 203 (9) ++++++
Регистрация: 11.01.2006
1 SETRANGE("Document Type", 0{Продажа});

2 SETRANGE("Document Type", "Document Type"::Sale);
Старый 07.10.2013, 14:10   #13  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,572 / 69 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
есть отличный чит
написать в коде что-нибудь вроде

SETRANGE("Document Type", "Document Type"::БЯБЯБЯ)

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

---------------------------
Microsoft Business Solutions-Navision
---------------------------
'БЯБЯБЯ' не является опцией.

Существующие опции:

Quote, Order, Invoice, Credit Memo, Blanket Order

---------------------------
ОК
---------------------------
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 07.10.2013, 14:32   #14  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,291 / 203 (9) ++++++
Регистрация: 11.01.2006
в продолжение примера
SETRANGE("Document Type", "Document Type"::"Blanket Order"); писать тоже не обязательно, достаточно
SETRANGE("Document Type", "Document Type"::Bl);
Старый 07.10.2013, 16:03   #15  
srg is offline
srg
Участник
 
116 / 10 (1) +
Регистрация: 20.08.2013
Цитата:
Сообщение от Sancho Посмотреть сообщение
в продолжение примера
SETRANGE("Document Type", "Document Type"::"Blanket Order"); писать тоже не обязательно, достаточно
SETRANGE("Document Type", "Document Type"::Bl);
а если нужно найти номер телефона клиента, известный номер кода пользователя есть.
Старый 07.10.2013, 16:32   #16  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,572 / 69 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
тогда да.
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 07.10.2013, 16:36   #17  
srg is offline
srg
Участник
 
116 / 10 (1) +
Регистрация: 20.08.2013
Цитата:
Сообщение от Дуд Посмотреть сообщение
тогда да.
?
Старый 07.10.2013, 16:46   #18  
srg is offline
srg
Участник
 
116 / 10 (1) +
Регистрация: 20.08.2013
нужно найти по номеру сотрудника и по дате
номер больничного, каким образом фильтры эти сделать?
Старый 07.10.2013, 16:58   #19  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Цитата:
Сообщение от Fierce Посмотреть сообщение
а если нужно найти номер телефона клиента, известный номер кода пользователя есть.
Цитата:
Сообщение от Дуд Посмотреть сообщение
тогда да.
Коллеги, простите, но мне ваше общение напомнило это.

Fierce, я порой вообще не могу понять ваших вопросов, что мешает наложить фильтр на соответствующие поля? Или в нужной вам таблице нет таких полей и нужно лезть в какие-то другие справочники чтобы узнать нужные данные?
P.S. с зарплатой не работал в НАВ, а я так подозреваю именно в этом блоке вы сейчас разбираетесь?
Старый 07.10.2013, 18:47   #20  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
Я так понял надо найти всех сотрудников болевших в определенный период? И справочники сотрудников не пересекаются со справочником больничных?
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.