Страница 1 из 3
					
				Фильтры в Create  view
				Добавлено: 18 мар 2015, 12:01
				 Espada
				Доброго дня. такой вопрос. появилась необходимость в Create  view добавить пару фильтров, но проблема с их оформлением) например нужно получить номера накладных за 10-е число. пишу:
 
Код: Выделить всё
.Create view filtr
from Katsopr
where
((
10/03/2015 == katsopr.dsopr(noindex)
));
но чёта не хочет работать. я подозреваю, что не правильно оформлено, что-то... пробовал разные варианты.... но никак не получается. подскажите плиз кто знает как нужно правильно.
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 12:19
				 Den
				Наберите в поиске date и увидите как народ пишет это дело
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 12:42
				 Espada
				Den писал(а):Наберите в поиске date и увидите как народ пишет это дело
Спасибо. Нашел) с датой получилось? а что писать если в место даты если мне нужно использовать другие поля для фильтрации, например Вид накладной. чтобы  katsopr.vidsopr = "201"???
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 13:20
				 Irina_
				Здравствуйте.
Условие Word(201) == KatSopr.VidSopr
И обращайте внимание на тип поля таблицы при написании условий. Т.е. например нельзя сравнивать поле целочисленного типа со значением символьного типа, как написали Вы в последнем сообщении.
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 13:31
				 Espada
				Irina_ писал(а):Здравствуйте.
Условие Word(201) == KatSopr.VidSopr
И обращайте внимание на тип поля таблицы при написании условий. Т.е. например нельзя сравнивать поле целочисленного типа со значением символьного типа, как написали Вы в последнем сообщении.
аааа.... всё спасибо) понял принцип )
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 15:28
				 Espada
				Тогда вот какой ещё вопрос: в списке накладных ставим фильтр по дате, потом плюсиком все выделяем. вопрос: можно-ли в Create view записать этот период? 
Код: Выделить всё
.Create view filtr
from Katsopr
where
((
  date(10,03,2015) == katsopr.dsopr(noindex) and
  word(201) == katsopr.vidsopr(noindex)
));
в этом create view фильтр идёт за 10 число, а нам нужно чтобы фильтр становился за выбранный период: например с 1.03.2015 по 11.03.2015. но чтобы эти "грани" изменялись в зависимости от выбранного диапазона.
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 15:41
				 Алексей
				как то так
.Create view filtr var dbeg,dend: date
from Katsopr
where
((
  word(201) == katsopr.vidsopr
and dbeg <<= katsopr.dsopr
and dend >>= katsopr.dsopr
));
.begin
filtr.dbeg := date(...);
filtr.dend := date(...);
end.
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 15:58
				 Espada
				Алексей писал(а):
.begin
filtr.dbeg := date(...);
filtr.dend := date(...);
end.
такой способ не подойдёт) если я правильно понимаю) dbeg и date мы сами не можем задать в коде, они динамические, т.е. каждый раз меняются. отчёт может формироваться за 1 день. за неделю, за месяц и тд... нужно чтобы оно как-то подставляло те даты, которые мы поставили в фильтре в списке накладных.
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 16:11
				 RAJAH
				Espada писал(а):dbeg и date мы сами не можем задать в коде
Можем. RunDialog('C_COMMON::GetIntervalDates', dbeg, dend)
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 16:30
				 Irina_
				Вообще многое зависит от цели, которую Вы хотите достичь. 
Если Вы хотите обрабатывать все накладные за заданный период, то подойдет вариант, предложенный RAJAH . Но, если Вам надо обработать только часть накладных, учитывая дополнительные условия (например, по контрагенту или др.), дать пользователю самому сделать пометку нужных накладных, то лучше использовать другой вариант. Можно дать пользователю в интерфейсе ввести 2 даты (с проверкой на корректность), а потом использовать стандартный интерфейс выбора накладных  L_SoprDoc::GetSomeKatSopr. И там делать выбор нужных накладных. Выбор сохраняется в таблице PICK. И остается пройти по ней и обработать сделанный выбор.
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 16:57
				 Espada
				Irina_ писал(а):Вообще многое зависит от цели, которую Вы хотите достичь. 
Если Вы хотите обрабатывать все накладные за заданный период, то подойдет вариант, предложенный RAJAH .
да, мне нужно просто обработать данный за заданный период. сейчас пробую этот вариант.
Код: Выделить всё
.Create view filtr
from Katsopr
where
((
    word(201) == katsopr.vidsopr(noindex)and
    dbeg <<= katsopr.dsopr and
    dend >>= katsopr.dsopr
));
такой получается, но выкидывает ошибку, при компиляции : Ошибка: в баунде на таблицу не может быть более одного ограничения, отличного от ==.
может подскажете в чём проблема?
 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 17:01
				 Irina_
				Вынесите оба условия по датам за пределы двойной скобки.
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 18 мар 2015, 17:52
				 Den
				Вы нам наверное какую то часть вью показываете. потому как vidsopr+dsopr индекс подходящий есть , и не нужно там писать (noindex)
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 19 мар 2015, 06:08
				 Алексей
				Именно.  Я в примере убрал эти noindex, но автор почему то вернул их назад...
			 
			
					
				Re: Фильтры в Create  view
				Добавлено: 19 мар 2015, 14:53
				 Espada
				Разобрался, как работает) теперь смогу много где использовать) спасибо)