Страница 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
Разобрался, как работает) теперь смогу много где использовать) спасибо)