Добрый день,
Задал фильтр по Дате = Текущая неделя.
Смотрю что в БД по фильтру в CustContractFolder
Запрос такой:
[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 только?
Подскажите это настраивается?
Нравится
Время до 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 не отображается (см. вложение), в БД - ок.
Я время вперед перевел на сервере специально, чтобы наступление Воскресенья сэмулировать.
Вероятно, логика системы не рассчитана на такое необычное поведение часов.