Фильтрация в разделе по Дате

Добрый день,

Задал фильтр по Дате = Текущая неделя.
Смотрю что в БД по фильтру в CustContractFolder
Запрос такой:

SELECT
        [CustContract].[Id] [Id]
FROM
        [dbo].[CustContract] [CustContract]
WHERE
        ([CustContract].[Number] = N'92319851'
        AND ([CustContract].[ModifiedOn] >= CONVERT(DATETIME, '2017-06-25 21:00:00.000', 121)
        AND [CustContract].[ModifiedOn] CONVERT(DATETIME, '2017-07-02 21:00:00.000', 121)))

Почему время до 21:00 только?
Подскажите это настраивается?

Нравится

15 комментариев

Укажите пожалуйста версию продукат.

Время до 21 — из-за того, что на сервере время по Гринвичу. Когда у них 21:00 — у Вас полночь и конец недели.

Возможно, настраивается путём смены времени на сервере, но реально текущая реализация должна фильтровать верно. Нужно только помнить о расхождении при написании напрямую SQL-запросов.

Спасибо. С временем понятно.

Заметили еще такую странность при фильтре по дате: даты в БД не обновляются.
Например сейчас хоть фильтр стоит в GUI пред. неделя, а даты по прежнему старые

AND ([CustContract].[ModifiedOn] >= CONVERT(DATETIME, '2017-06-25 21:00:00.000', 121)
AND [CustContract].[ModifiedOn] < CONVERT(DATETIME, '2017-07-02 21:00:00.000', 121)))

Это стандартное поведение фильтров по датам?

Антон, в смысле, не обновляется?
Может, страница раздела не перезагружалась с прошлой недели?

Страница раздела была обновлена, был новый вход. Открыт фильтр http://www.community.terrasoft.ru/system/files/2017-06-30_1531.png, условия фильтра не менялись, не сохранялись.

В БД же запрос прежний и даты прежние как 30.06

AND ([CustContract].[ModifiedOn] >= CONVERT(DATETIME, '2017-06-25 21:00:00.000', 121)
AND [CustContract].[ModifiedOn] < CONVERT(DATETIME, '2017-07-02 21:00:00.000', 121)))

я ожидал что будет вида '2017-07-02 21:00:00.000' по '2017-07-09 21:00:00.000', т.е. как в GUI предыдущая неделя.

После того как в фильтре нажал сохранить, в бд запрос обновился и стал отбирать как ожидается. Можно как то программно через БД инициировать "сохранить" по всем группам?

Фильтр должен быть по текущей неделе, никаких дополнительных действий не требуется.
Возможно, в системе что-то закешировалось и нужно очистить Redis.

IIS APP остановил, редис почистил.
Все равно в БД по прежнему старый запрос.
В ГУИ BPMOnline фильтр работает верно, но в БД по другому.
Если нажимаю сохранить в фильтре, то в БД запрос обновляется на корректный.

"Антон Сидоров" написал:В ГУИ BPMOnline фильтр работает верно

В таком случае ничего менять не нужно.

Проблема в том, что у нас реализован функционал генерации активностей по группам договоров на уровне БД (делали Вы(Террасофт) при внедрении проекта), т.е. из за этого по не верным договорам создаются активности.
Бизнес смотрит в ГУИ и ожидает, что по займам будут активности, в реальности оказывается фильтр берется из БД по другим фильтрам дат.

Поэтому и интересует вопрос это нормальное поведение BPMOnline?
Можно как то программно через БД инициировать "сохранить" по всем группам, для актуализации запросов и в БД?

Если есть какие-то доработки, то дело может быть в них. Лучше связаться с авторами проекта.

По фильтру Текущая неделя еще вопрос:
В БД записывается такой запрос при создании сегодня.

SELECT
	[CustContract].[Id] [Id]
FROM
	[dbo].[CustContract] [CustContract]
WHERE
	([CustContract].[Number] = N'92319851'
	AND ([CustContract].[ModifiedOn] >= CONVERT(DATETIME, '2017-07-23 21:00:00.000', 121)
	AND [CustContract].[ModifiedOn] < CONVERT(DATETIME, '2017-07-30 21:00:00.000', 121)))

т.е. в БД все верно с учетом часового пояса сервера +3.
Если ставлю дату на сервере 30.07.17 13:41.
Через интерфейс BPM не отображается (см. вложение), в БД - ок.

30.07.17 ещё не настало. У Вас часы идут неправильно.

Я время вперед перевел на сервере специально, чтобы наступление Воскресенья сэмулировать.

Вероятно, логика системы не рассчитана на такое необычное поведение часов.

Показать все комментарии