Доброго дня. Реализовал запрещение закрытия задачи как описано в этой теме
Добавил в bitrix/php_interface/init.php код
Код
AddEventHandler("tasks", "OnBeforeTaskUpdate", "TaskUpdate");function TaskUpdate($ID, &$arFields, &$arTaskCopy)
{
if ($arFields["STATUS"] == 5) //если статус задачи "Завершена"
{
if (($arTaskCopy["COMMENTS_COUNT"] == 0) || (empty($arTaskCopy["COMMENTS_COUNT"]))) //без комментария не завершаем задачу
{
throw new \Bitrix\Tasks\ActionFailedException("Для завершения задачи нужно оставить комментарий");
}
}
}
Теперь при попытке завершить задачу без комментария появляется сообщение: "Ошибка разбора ответа сервера."
я не уверен, но у меня сложилось впечатление что параметра COMMENTS_COUNT больше не существует, в структуре таблицы b_tasks его нету, выходит он должен формироваться в процессе выборки, единственное его упоминание я нашёл в функции CTasks:GetList, однако там ему не прописано никакой логики формирования, как буд то он должен браться из базы, функция CTaskItem:getData уже не выдаёт такого поля возможно я не прав, ибо ещё только познаю битрикс, каких то тонкостей могу не знать
по поводу вашей ошибки, вы пробовали использовать "throw new...." без условий? если ошибку всё равно выдаст, обращайтесь в техподдержку
Я думаю что условие как раз отрабатывается корректно. Задачи с наличием комментария зарываются без сообщений. А задачи без комментариев не закрываются с сообщением которое я указал выше. Т.е. счетчик комментариев работает.
скопировал себе ваш код, запрет на завершение задач без комментариев выводился всегда, вне зависимости от наличие комментариев параметр COMMENTS_COUNT так же всегда возвращался пустым, из-за чего условия и выполнялись
из вашего последнего сообщения следует что ошибка появляется когда выполнены условия, то есть выполняется
Код
throw new \Bitrix\Tasks\ActionFailedException("Для завершения задачи нужно оставить комментарий");