Вопрос

Как правильно отфильтровать записи в разделе Проекты

Всем доброго времени суток.
Попробывала в разделе Проекты отфильтровать записи, чтобы получить список работ в состоянии "в планах" для Проектов в состоянии "в работе".
В результате в реестре стало пусто. Хотя такие работы есть.
Если попробовать мои две части фильтра отдельно, то я могу получить список проектов "в работе" и могу получить список всех работ "в планах". Но одновременно не получается.
В чем проблема?

Нравится

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

Видимо дело в том, что блок фильтрации воспринимает Проект и Работу как одну и ту же сущность, без учета того, что Работа есть подчиненный Проекту объект... поэтому выбрать можно или то, или другое, но никогда - вместе((
[update] в стандартных фильтрах в общем-то разграничены состояния проекта и состояния работ, например, но вместе действительно не удается профильтровать... интересная особенность дерева в реестре...

"Александр Кудряшов" написал:интересная особенность дерева в реестре

Да, интересная.
Но работать-то как, вот в чем вопрос? Ведь проектов целая куча, за ними необходимо следить!

В принципе, примерно понятно в каком направлении делать новый фильтр, но все же интересно, реализуется ли такой поиск стандартными средствами... так что присоединяюсь к вопросу;-)

Фильтр может выглядеть так:
Состояние = <Проект: В работе> или
Состояние = <Стадия: В планах>
Т.к. действительно состояния различны для различных типов элементов проекта. (Вас могут путать одинаковые названия, но если Вы обратитесь к справочнику "Состояния элементов..." - вам все станет понятно).

НО!
В случае если проект,например, в планах и стадия в планах, Вы все равно увидите этот проект, т.к. нам нужно отобразить стадию этого проекта, которая в планах.

Все это понятно: множества объединяются, а необходимо их пересекать. А вот само "пересечение" в имеющемся виде дает пустое множество.

Вот в области фильтрации есть возможность "группировать" фильтры.
Так если бы эта группировка означала "сначала выбираем проекты в работе", а потом из них "выбираем работы в состоянии в планах", вот тогда бы все у меня получилось.
А так как есть -никак.:sad:

Виктория, для решения конкретно этой задачи Вам необходимо создать в запросе sq_Project с помощью Terrasoft Администратор фильтр пользователя следующей структуры:

(exists
    (select ID from tbl_Project as ParentProjectFilter
    where ParentProjectFilter.EssenceType = :IsProject
      and ParentProjectFilter.ID = tbl_Project.ParentProjectID
      and ParentProjectFilter.StateID = :UserValue)
)

Здесь последнее условие - это фильтр пользователя для справочника, который ссылается на ds_ProjectState.

Присоединяю пример подобного фильтра. Для удобства я создал запрос, идентичный sq_Project, который можно загрузить в базу без каких-либо негативных последствий: оригинальный sq_Project обновлен не будет. Нужный Вам фильтр имеет код StatesOfParentProject. Аналогичный фильтр необходимо создать в sq_Project.

Для применения нужной Вам фильтрации необходимо в созданном фильтре установить состояние родительского проекта и добавить стандартный фильтр по состоянию, в котором выбрать состояние для работы.

Единственное неудобство - из-за того, что в запросе используется UNION, в фильтрбилдере будет отображаться три одинаковых фильтра пользователя. Впрочем, на функциональность это не влияет, можно выбирать любой из них.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Буду пробовать, спасибо.

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