|  19.08.2005, 14:20 | #1 | 
| MCTS | 
			
			Здравствуйте Коллеги, Не могу наложить фильтр, используя сетфильтр. Ругается на ограничение длины поля Код 10. На вскидку не скажете что это? Или надо подробнее ситуацию изложить? АП | 
|  | 
|  19.08.2005, 14:29 | #2 | 
| Участник | 
			
			наверно вы всетаки исползуете SetRange а не SetFilter. Проверьте вызов фильтров.
		 
				__________________ Want to believe... | 
|  | 
|  19.08.2005, 14:41 | #3 | 
| MCTS | 
			
			После пяти просмотров и нулевой реакции я понял, что не правильно задал вопрос. Может с приложенным отчетом будет понятнее. Эта ошибка вылазит если в Склад Фильтр указать несколько значений через |. Пояснения что сделано в отчете и почему. 1. Склад Фильтр используется для удобства, с таким же успехом можно использовать закладку опции и в текстовую переменную писать все склады. РЕзультат не меняется - получаем ошибку. Все равно я использую текстовую переменную, которую заполняю через гет фильтр в самом начале. 2. В ДатаИтеме Товар я устанавливаю эту строку в качестве флоуфильтра (Склад Фильтр) и вычисляю наличие и др поля. Если наличие = 0 то СКИП. 3. В ДатаИтеме Склад я устанавливаю эту же строку как фильтр по складам (чтобы не проверять лишние). Может я где то перемудрил? Для одного склада и для всех складов, все работает удовлетворительно. АП | 
|  | 
|  19.08.2005, 15:00 | #4 | 
| Участник | 
			
			я честно говоря вот этого кода не понял 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 | 
| MCTS | 
			
			<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 | 
| Участник | 
			
			Не надо фильтры через текстовую переменную копировать Используйте функцию CopyFilter. | 
|  | 
|  19.08.2005, 15:12 | #7 | 
| Участник | 
			
			достаточно %1 убрать из SetFilter.  И поставить сразу SETFILTER(Code,c_BaseLocationFilter); во всех местах убрал и заработало 
				__________________ Want to believe... | 
|  | 
|  19.08.2005, 15:17 | #8 | 
| MCTS | 
			
			Выражаю признательность Wisard'у и DA_NEAL'у Похоже мне надо более глубокое понимание текстовых переменных и знаков %. АП | 
|  | 
|  25.04.2006, 19:10 | #9 | 
| MCTS | 
			
			Спустя много времени наткнулся на mibuso.com на такое. Это как раз имеет отношение к "глубокому пониманию %". Может кому пригодится. Если все об этом знают, то извините, что поднял тему. Цитата: 
		
			You need to know that there is BIG difference between  Code: Код: SETFILTER(Field,'something'); Code: Код: SETFILTER(Field,'%1','something'); Code: Код: SETRANGE(Field,Value); | 
|  |