Матвей Земсков

Заметки веб-мастера

Среда, 10 июля 2019 20:47

Расширяем функционал задач в Битрикс24

Оцените материал
(1 Голосовать)

В этой статье мне бы хотелось рассмотреть процесс расширения функционала задач (модуль Битрикс24 Tasks). Оно будет заключаться в следующем: нужно сделать так, чтобы при добавлении нового комментария закрытая задача вновь становилась активной. Также необходимо отображать последний комментарий, добавленный в задачу, в списке задач. Если вам когда-либо требовался такой функционал, то предлагаю ознакомиться со статьей более подробно.

Обычно я разделяю масштабную задачу на несколько небольших задач и решаю их по очереди. Также поступлю и в этот раз. Сначала рассмотрим смену статуса закрытой задачи при добавлении комментария. Затем реализацию отображения последнего комментария в списке задач.

Замечу, что обе задачи мы будем решать путем использования события OnAfterCommentAdd. Код обработчика события разместим в файле /local/php_interface/init.php.

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

Добавляем в обработчик события Битрикс OnAfterCommentAdd следующий код:

PHP

AddEventHandler('tasks', 'OnAfterCommentAdd', function ($commentId, &$arFields) {
    if (CModule::IncludeModule("tasks")) {
        $oTask = CTaskItem::getInstance($arFields['TASK_ID'], 1);
        if ($oTask->isActionAllowed(11)) {
            $arr = array();
            $oTask->renew($arr);
            LocalRedirect($APPLICATION->GetCurPage());
        }
    }
});

В нем мы получаем объект задачи и сохраняем его в переменную $oTask, далее проверяем доступно ли для текущей задачи действие по ее возобновлению. Оно передается функции isActionAllowed в виде числа 11. Полный список идентификаторов действий хранится в файле /bitrix/modules/task/classes/general/taskitem.php в виде констант.

Например, указанное значение хранится в константе ACTION_RENEW. Значение констант хранится в шестнадцатеричном формате. Если действие доступно для текущей задачи, мы возобновляем ее методом renew. Единственным аргументом этого метода в данном случае является пустой массив. Вообще нем можно передавать различные параметры. Например, нужно возобновлять подзадачи (AFFECT_CHILDREN).

Так как содержимое задачи в Битрикс24 обычно отображается в «выезжающем» блоке чтобы было видно ее обновленное состояние, нужно выполнить редирект на страницу текущей задачи.

Переходим ко второму пункту нашей программы: после добавления комментария он отображается в списке задач.

Для решения этой задачи нам нужно выполнить следующие действия:

  • Создать в Битрикс пользовательское поле для хранения последних комментариев в задачах. Давайте его так и назовем: «последний комментарий», присвоим ему код UF_LAST_COMMENT. Это поле будет «привязано» к объекту задачи (TASKS_TASK).

    пользовательское поле Битрикс для хранения последних комментариев

    В настройках списка задач нужно вывести значения нового поля – в шапке таблицы появится столбец «Последний комментарий»

  • В обработчик события Битрикс OnAfterCommentAdd добавить следующий код:

    PHP

    AddEventHandler('tasks', 'OnAfterCommentAdd', function ($commentId, &$arFields) {
    	if ($arFields["COMMENT_TEXT"] != "") {
    		$arTask["UF_LAST_COMMENT"] = $arFields["COMMENT_TEXT"];
    		$obTask = new CTasks;
    		$success = $obTask->Update($arFields["TASK_ID"], $arTask);
    		if($success) {
    			// при желании здесь можно добавить запись в лог
    		}
    	}
    });
    

    Если все сделано правильно, то в списке задач мы увидим последний добавленный комментарий.

    последний комментарий, добавленный в задачу

Надеюсь, что описанные выше методы расширения функционала модуля задач Битрикс24, помогут читателю в его работе.

Прочитано 1061 раз
Другие материалы в этой категории:
Ошибка при настройке push and pull сервера в Битрикс ВМ

Добавить комментарий


Мои услуги

Предлагаю следующие услуги:

  • Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
  • Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
  • Настройка и кастомизация компонентов и модулей для указанных CMS
  • Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
  • Разработка лендингов (landing-pages)

По все вопросам обращайтесь через форму обратной связи

Скачать

Предлагаю вашему вниманию:

Наверх