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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2012, 17:22   #1  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
А я вот с чем столкнулся. Завожу текстовую переменную Filter.
Код:
Filter := 'значение1|значение2|значение3';
SETFILTER("Нужное Поле",'%1',Filter);
И получаю ошибку:
Значение фильтра 'значение1|значение2|значение3' в поле "Нужное Поле" в таблице слишком длинное для этого типа поля. Тип: Code20
То есть он не понимает фильтр именно как фильтр, а принимает его просто как длинное значение. Что я делаю не так? При этом по F7 фильтрует этим же значением на ура.
Старый 22.11.2012, 17:49   #2  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Васыо Посмотреть сообщение
А я вот с чем столкнулся. Завожу текстовую переменную Filter.
Код:
Filter := 'значение1|значение2|значение3';
SETFILTER("Нужное Поле",'%1',Filter);
И получаю ошибку:
Значение фильтра 'значение1|значение2|значение3' в поле "Нужное Поле" в таблице слишком длинное для этого типа поля. Тип: Code20
То есть он не понимает фильтр именно как фильтр, а принимает его просто как длинное значение. Что я делаю не так? При этом по F7 фильтрует этим же значением на ура.
Есть ли фильтр уже готов, то нужно писать SETFILTER("Нужное Поле",Filter)
% нужен, если мы фильтр составляем
Старый 22.11.2012, 18:12   #3  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Можно определять "нужность" записи, переписав триггера OnFind(), OnNext(). Здесь можно обрабатывать условие показа любой сложности. Подтормаживать будет - да. Но ведь вам это и надо))
Старый 26.11.2012, 13:30   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
А еще можно в таблицу 1 добавить вычисляемых полей Lookup на нужные поля Таблицы 2. И накладывайте фильтры в обычном порядке.
Старый 26.11.2012, 14:40   #5  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от romeo Посмотреть сообщение
А еще можно в таблицу 1 добавить вычисляемых полей Lookup на нужные поля Таблицы 2. И накладывайте фильтры в обычном порядке.
еще один совет с тормозами.
Старый 26.11.2012, 15:33   #6  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от InTacto Посмотреть сообщение
Цитата:
Сообщение от romeo Посмотреть сообщение
А еще можно в таблицу 1 добавить вычисляемых полей Lookup на нужные поля Таблицы 2. И накладывайте фильтры в обычном порядке.
еще один совет с тормозами. />
Согласен. Зато в дальнейшем работа с формой ничем не будет отличаться от варианта (почти), когда все интересующие пользователя поля находятся в одной таблице, на которой построена форма. Главное накидать решений, дальше человек разберется, что использовать, что нет. Пусть хотя бы видит различные варианты.
Старый 26.11.2012, 17:29   #7  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Цитата:
Сообщение от Васыо Посмотреть сообщение
А я вот с чем столкнулся. Завожу текстовую переменную Filter.
Код:
Filter := 'значение1|значение2|значение3';
SETFILTER("Нужное Поле",'%1',Filter);
И получаю ошибку:
Значение фильтра 'значение1|значение2|значение3' в поле "Нужное Поле" в таблице слишком длинное для этого типа поля. Тип: Code20
То есть он не понимает фильтр именно как фильтр, а принимает его просто как длинное значение. Что я делаю не так? При этом по F7 фильтрует этим же значением на ура.
Тут есть один подводный камень. Ни одно из значений используемых в фильтре не должно быть длиннее поля.
То есть если поле Code5 то фильтр Значение1|Значение2 будет генерить ошибку Знач1|Знач2 отработает.
__________________
Want to believe...
Старый 27.11.2012, 13:53   #8  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
Не совсем применимо к этой задаче, но на ту же тему.
Можно еще использовать функцию сокращения фильтра, преобразующую
фильтр '1|2|3|5|6|7|9' в '1..3|5..7|9'
Код здесь
Старый 07.12.2012, 16:07   #9  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от dmites Посмотреть сообщение
Не совсем применимо к этой задаче, но на ту же тему.
Можно еще использовать функцию сокращения фильтра, преобразующую фильтр '1|2|3|5|6|7|9' в '1..3|5..7|9'
..
Вставлю и свои 5 копеек, но уже по этой реализации - см в стандарте функцию GetSelectionFilter() формы 31 Item List
 

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

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

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

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

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