Мы достаточно часто получаем запросы вроде таких:
– Как запретить завершать задачу без заполнения поля “Итоги выполнения”?
– Нужно, чтобы задачу нельзя было взять в работу верстальщику, пока не будет файла с утвержденным дизайном.
– Если сделка провалена, обязательно нужно указать причину провала, и только потом перевести ее в этот статус.
Ну и так далее. Все подобные запросы объединяет общая потребность: запретить переводить задачу на следующий этап жизненного цикла, пока не выполнены определенные условия.
Раньше в ответ мы предлагали сценарий, который срабатывал в момент перевода задачи в следующий статус, проверял условие, и если оно не выполняется, возвращал задачу на предыдущий этап и добавлял комментарий исполнителю “Заполните поле такое-то!” Но с появлением кнопок эту же ситуацию можно обыграть более изящным образом с легким налетом магии. О нем я вам сегодня и расскажу.
Модельный пример, на котором я опишу этот кейс: есть процесс обработки запроса клиента, в ходе которого запрос вначале попадает на оценку, и затем в работу. И нельзя перевести его в работу, пока оценщик не заполнит поле “Оценка запроса”
Суть используемого решения в одном предложении: убрать возможность перевода задачи в нужный статус стандартным образом и добавить кнопку для перевода в этот статус, которая будет появляться только при выполнении определенных условий.
А теперь медленно и по шагам. Так как среди наших читателей немало новичков, я буду подробно расписывать даже самые привычные для опытных планфиксовцев детали.
Начнем с создания нового процесса “Запрос” (Управление аккаунтом / Процессы задач / Новый процесс):
Перейдем на вкладку “Набор статусов” и добавим в него новый статус “Оценка”:
В появившемся окошке нам нужно добавить новый статус (видите плюсик в строке с названием?) и указать, из каких статусов можно переходить в него, и наоборот. Для простоты можете указать “Все статусы”:
(Необязательно): Перетаскиваем статус на нужное место в списке (1) и указываем, что при принятии новой задачи она должна переходить в статус “Оценка” (2):
Это нужно только для моего конкретного примера: так как моя задача до попадания в работу должна пройти процедуру оценки, сразу после принятия она попадает в статус “Оценка”. В вашем случае этого может и не понадобиться.
Затем в таблице переходов убираем возможность перевода в статус “В работе”. Это нужно, чтобы задачу никак нельзя было в него перевести, кроме как по нажатию на нашу волшебную кнопку. Чтобы убрать перевод в статус “В работе”, последовательно находим этот статус в таблице переходов статусов, жмем на него и выбираем “Удалить переход в этот статус”:
Должно получиться примерно так – то есть, теперь ни из какого статуса нельзя перевести задачу в работу:
Теперь создадим шаблон задачи “Запрос с предварительной оценкой”, в котором:
- Добавим поле “Оценка запроса”, в которое оценщик должен будет записать сумму оценки. Этот процесс я подробно описывать не буду, а интересующихся направлю на это видео, где подробно показана процедура создания шаблона с нужными полями.
- Установим наш процесс “Запрос”, по которому будут “жить” задачи, создаваемые по этому шаблону:
Почти все готово, осталось добавить кнопку для перевода задачи в работу. Переключаемся в наш процесс (Управление аккаунтом / Процессы задач / Запрос / Кнопки) и создаем кнопку:
Параметры кнопки будут такими:
То есть:
- кнопка появляется в задаче только если заполнено поле “Оценка запроса”;
- единственное, что делает кнопка – переводит задачу в статус “В работе”.
Вот и все. В реальной жизни работа нашей настройки выглядит вот так:
Как видите, ничего сложного, обыкновенная магия: есть значение в поле – есть кнопка, нет значения – нет кнопки. Теперь дело за малым, воспользоваться этим рецептом и выстроить нужное заклинание для своего процесса 🙂
P.S. Этот кейс я хотел разместить в рубрике #кейс_дня, которая недавно заработала на наших страницах в мессенджерах и соцсетях, но в процессе понял, что получается многовато объяснений и скриншотов. Поэтому решил опубликовать его в блоге, благо здесь экономить место нет необходимости. Но если вы не хотите пропустить мини-кейсы, которые зачастую состоят из одного скриншота и при этом способны делать не менее полезные вещи, я настоятельно рекомендую подписаться на новости на одной из наших страниц: Facebook, ВКонтакте, Telegram или Twitter. Ну и на YouTube-канал заодно, ведь некоторые примеры использования появляются только там.
Спасибо! Актуально) Дейсвтиельно, “магически”) – изящное решение задачи.
О, спасибо!
Этот кейс решает кучу вопросов по сценарию, который всё никак не мог решиться начать создавать 🙂
Пошёл мастерить кнопку …
Дмитрий, добрый день. Спасибо за размещение этого материала, но это, увы не всегда очень удобный вариант.
1. Есть ограничение на количество кнопок, даже на максимальном тарифе Корпорация их всего 15. В текущем проекте у нас уже “5 общих кнопок” (в каждом процессе), для фиксирования замечания и т.п.. И так для реализации логики работы с кнопками остается 10 кнопок. И часть из них нужны для других целей, а не для смены статусов. Прошу рассмотреть вопрос об увеличении количества кнопок, или о добавлении лимита на общие кнопки. Например количество общих кнопок 15 и кнопок на один процесс 15, а лучше 30 😉
2. Поскольку кнопка отображается только когда условия заполнения полей выполняется то пользователь не может понять, а какие именно поля ему еще нужно заполнить чтобы появилась кнопка перевода в следующий статус. Тут конечно есть выход при переходе в определенный статус в специальное поле “подсказка”, выводить текст который поясняет что именно нужно сделать для перевода в следующий этап. Но эта логика работает на процессах с жесткой последовательностью этапов. Если вариантов перехода несколько да еще и когда разные статусы доступны пользователям в разных ролях, очень сложно это получается администрировать.
Прошу Вас подумать над добавлением возможности сценарием Установить статус = Предыдущий статус. Тогда мы бы вполне обошлись бы старым способом проверке при смене статуса. В этом случае при несоблюдении условий мы уведомляем Исполнителя о том какие именно поля должны быть заполнены и возвращали бы статус в предыдущий. Сейчас если в статус можно переходить из нескольких статусов приходится добавлять несколько сценарием чтобы возвращать задачу в тот статус из которого был выполнен переход.
1. При запуске кнопок мы установили достаточно осторожные лимиты, так как сложно было спрогнозировать реальную нагрузку, которую будет создавать проверка условий их отображения. Сейчас, по прошествию времени, мы накопили определенные данные и можем осторожно эти лимиты подымать, и уже обсуждали это пару раз в команде. Это хорошая часть новости.
Плохая в том, что грузят нас в первую очередь как раз “общие” кнопки, которые работают в нескольких процессах – получается, что мы должны проверять условия их отображения при каждом входе в задачу. Поэтому если лимиты будут увеличиваться, то на количество кнопок, доступных внутри процесса. Соответственно, “общие” кнопки будут занимать вакантные места в каждом процессе, в котором они доступны.
2. С операцией “Установить статус = Предыдущий статус” есть сложности, т.к. в общем случае мы не знаем, каким был предыдущий статус. Это обусловлено нелинейной структурой работы сценариев ПланФикса. Я еще раз обсужу этот вопрос с коллегами, но насколько я помню по предыдущим обсуждениям, проблема именно в этом.
Прикольно 🙂
Только на днях пользовались этим. Даже с “доработкой” под новичков. Если не заполнены какие-то поля, то мы показываем кнопку, где прямо пишем действия, чтобы появилась нужная кнопка – http://prntscr.com/mo53ue
При нажатии происходит [ничего]. Просто при заполнении всех полей нужных эта кнопка исчезает и появляется новая.
Помогает !
Сергей идея хорошая, но получается что на один “статус” тратится две кнопки, а выше я плакал что 15 кнопок – маловато.
Мы для таких случаем используем поле типа список с отображение плашек, по сценариям нет таких жестких ограничений на количество.
ммм, интересный способ тоже. Спасибо!
Согласен с утверждением: “Поскольку кнопка отображается только когда условия заполнения полей выполняется то пользователь не может понять, а какие именно поля ему еще нужно заполнить чтобы появилась кнопка перевода в следующий статус. ”
Если бы была возможность чтобы кнопка проявлялась в виде неактивной (например серым цветом), а при наведении на неё появлялась бы подсказка, что нужно сделать, чтобы она стала активной, это бы решило задачу для новичка.
А решение с плашками, решает эту задачу. Там хотя бы видно что нужно нажать.