Для автоматического заполнения пользовательского поля в завершенных задачах в Битрикс24 (Коробка) можно использовать следующий подход:
1. Необходимо создать пользовательское поле для задачи. Для этого перейдите в раздел "Настройки" - "Инструменты CRM" - "Типы полей" и выберите нужный модуль (например, CRM). Затем выберите сущность, для которой будет создано пользовательское поле (например, Задачи), и нажмите на кнопку "Добавить поле". Задайте имя поля, тип данных и другие параметры, и сохраните настройки.
2. Далее, необходимо создать делегата для события, которое будет вызываться при завершении задачи. Для этого понадобится кастомизировать файл /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(); } }
3. В функции OnTaskComplete можно получить значение пользовательского поля для завершенной задачи с помощью функции CTaskItem::getInstance($taskId)->getData()['UF_CUSTOM_FIELD'], где UF_CUSTOM_FIELD - символьный код созданного вами пользовательского поля.
4. После получения значения пользовательского поля, вы можете выполнить необходимые действия с этим значением, например обновить другое поле или выполнить какие-либо расчеты.
5. Не забудьте сохранить изменения после выполнения нужных действий с помощью функции CTaskItem::getInstance($taskId)->save().
Обратите внимание, что код приведен в примере написан на языке PHP и предназначен для использования внутри Битрикс24 (Коробка).