Для автоматического заполнения пользовательского поля в завершенных задачах в Битрикс24 (Коробка) можно использовать следующий подход:
- Необходимо создать пользовательское поле для задачи. Для этого перейдите в раздел "Настройки" - "Инструменты CRM" - "Типы полей" и выберите нужный модуль (например, CRM). Затем выберите сущность, для которой будет создано пользовательское поле (например, Задачи), и нажмите на кнопку "Добавить поле". Задайте имя поля, тип данных и другие параметры, и сохраните настройки.
- Далее, необходимо создать делегата для события, которое будет вызываться при завершении задачи. Для этого понадобится кастомизировать файл /bitrix/php_interface/init.php. Если этого файла нет, то его нужно создать. В этом файле можно добавить обработчик события OnTaskAdd, который будет вызываться при завершении задачи.
Пример кода:
AddEventHandler("tasks", "OnTaskAdd", "OnTaskComplete"); function OnTaskComplete($taskId, &$arFields) { // Проверяем, что задача завершена if ($arFields['REAL_STATUS'] == CTasks::STATE_COMPLETED) { // Получаем значение пользовательского поля по ID задачи $value = CTaskItem::getInstance($taskId)->getData()['UF_CUSTOM_FIELD']; // Делаем необходимые действия с полученным значением (например, обновляем другое поле) // ... // Сохраняем изменения CTaskItem::getInstance($taskId)->save(); } }
- В функции OnTaskComplete можно получить значение пользовательского поля для завершенной задачи с помощью функции CTaskItem::getInstance($taskId)->getData()['UFCUSTOMFIELD'], где UFCUSTOMFIELD - символьный код созданного вами пользовательского поля.
- После получения значения пользовательского поля, вы можете выполнить необходимые действия с этим значением, например обновить другое поле или выполнить какие-либо расчеты.
- Не забудьте сохранить изменения после выполнения нужных действий с помощью функции CTaskItem::getInstance($taskId)->save().
Обратите внимание, что код приведен в примере написан на языке PHP и предназначен для использования внутри Битрикс24 (Коробка).