В статье описана функция управления сменой статусов замечаний, которая может использоваться для упрощения контроля хода выполнения задач/замечаний в проекте.

Она позволяет:

Функция актуальна при ведении большого количества задач/замечаний, где важно отслеживать последовательность действий и обеспечивать прозрачность процесса.

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

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())

Примечания