Пример пошаговой настройки

1. Добавление атрибутов к типу элемента "Статус задачи"

  1. Откройте Тип элемента "Статус задачи".

  2. Добавьте следующие атрибуты типа Lookup:

2. Настройка отображения атрибутов

  1. В Списке "Статус задачи" через настройку вида отобразите новые атрибуты в табличном виде.

  2. Для каждого статуса заполните значения атрибутов: какие типы элементов разрешены и какие предыдущие статусы допустимы.

3. Добавление атрибута «Статус задачи» к типу элемента «Замечание»

1. В типе элемента "Замечание" создайте атрибут Статус задачи (task_status).

2. Настройте Фильтрацию значений с помощью формулы:

Format('i => i.GetValueAsLookupIdList(\"content_type_allowed_list\").Contains(Guid(\"{0}\")) && i.GetValueAsLookupIdList(\"allowed_prev_lookup\").Contains(Guid(\"{1}\"))', Id(This('contenttype')), Id(This('Статус задачи')))

Цель: фильтровать доступные статусы в зависимости от типа элемента и текущего статуса.

4. Настройка валидаторов для атрибута "Статус задачи"

Валидатор 1 — ограничение для Инициатора

Цель: позволяет Инициатору менять статус только при закрытии, доработке или аннулировании.

Id(This('Статус задачи')) == Id(Lookup('Статусы задач.Закрыто')) ||  
Id(This('Статус задачи')) == Id(Lookup('Статусы задач.На доработку')) || 
Id(This('Статус задачи')) == Id(Lookup('Статусы задач.Аннулировано'))
Contains(This('Инициатор', true), User())

Валидатор 2 — ограничение для Исполнителя

Цель: Исполнитель может менять статус на "Выполняется" или "Выполнено".

Id(This('Статус задачи')) == Id(Lookup('Статусы задач.Выполняется')) || 
Id(This('Статус задачи')) == Id(Lookup('Статусы задач.Выполнено'))
Contains(This('Исполнитель', true), User())

Примечания и особенности