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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.08.2005, 14:20   #1  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Здравствуйте Коллеги,

Не могу наложить фильтр, используя сетфильтр. Ругается на ограничение длины поля Код 10.

На вскидку не скажете что это? Или надо подробнее ситуацию изложить?

АП
Старый 19.08.2005, 14:29   #2  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
наверно вы всетаки исползуете SetRange а не SetFilter. Проверьте вызов фильтров.
__________________
Want to believe...
Старый 19.08.2005, 14:41   #3  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
После пяти просмотров и нулевой реакции я понял, что не правильно задал вопрос.

Может с приложенным отчетом будет понятнее.

Эта ошибка вылазит если в Склад Фильтр указать несколько значений через |.

Пояснения что сделано в отчете и почему.
1. Склад Фильтр используется для удобства, с таким же успехом можно использовать закладку опции и в текстовую переменную писать все склады. РЕзультат не меняется - получаем ошибку.
Все равно я использую текстовую переменную, которую заполняю через гет фильтр в самом начале.

2. В ДатаИтеме Товар я устанавливаю эту строку в качестве флоуфильтра (Склад Фильтр) и вычисляю наличие и др поля. Если наличие = 0 то СКИП.
3. В ДатаИтеме Склад я устанавливаю эту же строку как фильтр по складам (чтобы не проверять лишние).

Может я где то перемудрил?

Для одного склада и для всех складов, все работает удовлетворительно.

АП
Вложения
Тип файла: fob r50096.fob (7.9 Кб, 428 просмотров)
Старый 19.08.2005, 15:00   #4  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
я честно говоря вот этого кода не понял


Item - OnPreDataItem()
c_BaseLocationFilter:=GETFILTER("Location Filter");

Item - OnAfterGetRecord()
IF STRLEN(c_BaseLocationFilter)=0 THEN
SETFILTER("Location Filter",'')
ELSE
SETFILTER("Location Filter",c_BaseLocationFilter);

Зачем ???
__________________
Want to believe...
Старый 19.08.2005, 15:05   #5  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
<div class='CALtop'>C/AL</div><div class='CAL'>Item - OnPreDataItem()
c_BaseLocationFilter:=GETFILTER("Location Filter");</div>

Это чтобы получить строку по которой осуществлять последущую фильтрацию по складам и на основании которой делать расчет наличия по группе складов (см. ниже).

<div class='CALtop'>C/AL</div><div class='CAL'>Item - OnAfterGetRecord()
IF STRLEN(c_BaseLocationFilter)=0 THEN
 SETFILTER("Location Filter",'')
ELSE
 SETFILTER("Location Filter",c_BaseLocationFilter);</div>

В датаитеме Склад. при получении следующего склада расчитывается наличие на этом складе. Фильтр этот при возвращении к датаитему товар не обнуляется. Если этого не сделать вручную то на этом выполнение отчета прервется.
Старый 19.08.2005, 15:08   #6  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
Не надо фильтры через текстовую переменную копировать
Используйте функцию CopyFilter.
Вложения
Тип файла: fob r50096.fob (7.5 Кб, 362 просмотров)
Старый 19.08.2005, 15:12   #7  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
достаточно %1 убрать из SetFilter.
И поставить сразу
SETFILTER(Code,c_BaseLocationFilter);
во всех местах убрал и заработало
__________________
Want to believe...
Старый 19.08.2005, 15:17   #8  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Выражаю признательность Wisard'у и DA_NEAL'у

Похоже мне надо более глубокое понимание текстовых переменных и знаков %.

АП
Старый 25.04.2006, 19:10   #9  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Спустя много времени наткнулся на mibuso.com на такое. Это как раз имеет отношение к "глубокому пониманию %". Может кому пригодится. Если все об этом знают, то извините, что поднял тему.
Цитата:
You need to know that there is BIG difference between
Code:
Код:
SETFILTER(Field,'something');
and
Code:
Код:
SETFILTER(Field,'%1','something');
The first one apply 'something' as filter (plain filter), second one apply string 'something' like value you want to filter... Please, use first option just only if you have some filter saved in variable and you want to apply this filter. In other cases use the second option or use
Code:
Код:
SETRANGE(Field,Value);
if you are filtering for one value...
© Kine
 

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

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

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

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

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