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