Вот пример рабочего кода для коробочной версии bitrix24
Делал PHP вставку в БП для добавления подзадач в задачу запущенную в этом процессе.
if (\Bitrix\Main\Loader::includeModule('tasks')) {
// 1. ПОЛУЧЕНИЕ КОНТЕКСТА указан ID создаваемой задачи запущенная ранее
$taskId = (int)"{=A46098_6446_35258_361111:TaskId}";
// Получаем ID создателя и очищаем от префикса 'user_'
$rawCreator = "{{Создатель}}";
$userId = (int)str_replace('user_', '', $rawCreator);
// Если по какой-то причине ID создателя пустой, используем админа (1) как резерв
if ($userId <= 0) $userId = 1;
/**
* Функция для получения всех ID сотрудников подразделения
*/
$getUsersByDepartment = function($depId) {
$users = [];
$depId = (int)$depId;
if ($depId <= 0) return $users;
$dbUsers = \CUser::GetList($by="id", $order="asc", [
"UF_DEPARTMENT" => $depId,
"ACTIVE" => "Y"
]);
while($u = $dbUsers->Fetch()) {
$users[] = (int)$u["ID"];
}
return $users;
};
/**
* Вспомогательная функция для одиночных пользователей
*/
$parseSingleUsers = function($value) {
if (empty($value)) return [];
$cleanString = str_replace('user_', '', (string)$value);
$ids = explode(',', $cleanString);
$result = [];
foreach ($ids as $id) {
$id = (int)trim($id);
if ($id > 0) $result[] = $id;
}
return $result;
};
// 2. ПОДГОТОВКА ГРУПП (ПО ID ОТДЕЛОВ)
// Тестировщики [D5555]
$test_user = $getUsersByDepartment(5555);
// Поддержка [D7777]
$groupSupport = $getUsersByDepartment(7777);
// Индивидуальные ответственные из констант
$admin_const = $parseSingleUsers("{=Constant:admin_const}");
$network_const = $parseSingleUsers("{=Constant:network_const}");
$approve_const = $parseSingleUsers("{=Constant:approve_const}");
if ($taskId > 0) {
$checkListsStructure = [
"Название чек листа 1" => [
["Пункт 1", $network_const],
["Пункт 2", $approve_const],
["Пункт 3", $test_user]
],
"Название чек листа 2" => [
["Пункт 1", $admin_const],
["Пункт 2", $admin_const],
["Пункт 3", $admin_const],
["Пункт 4", $admin_const],
["Пункт 5", $admin_const]
]
];
$globalSort = 5000;
foreach ($checkListsStructure as $listTitle => $items) {
$result = \Bitrix\Tasks\CheckList\Task\TaskCheckListFacade::add($taskId, $userId, [
'TITLE' => $listTitle,
'PARENT_ID' => 0,
'SORT_INDEX' => $globalSort,
'IS_COMPLETE' => 'N'
]);
if ($result->isSuccess()) {
$parentId = $result->getData()['ITEM']->getFields()['ID'];
$globalSort += 10;
foreach ($items as $itemData) {
$title = $itemData[0];
$responsibles = $itemData[1];
$members = [];
foreach ($responsibles as $rId) {
$members[(int)$rId] = ['TYPE' => 'A'];
}
\Bitrix\Tasks\CheckList\Task\TaskCheckListFacade::add($taskId, $userId, [
'TITLE' => $title,
'PARENT_ID' => $parentId,
'SORT_INDEX' => $globalSort,
'IS_COMPLETE' => 'N',
'MEMBERS' => $members
]);
$globalSort += 10;
}
}
$globalSort += 100;
}
}
}
Можно указать точную задачу и добавлять чек личты от админа для этого надо заменить в коде начало:
if (\Bitrix\Main\Loader::includeModule('tasks')) {
// Указываем номер задач
$taskId = 11111;
// Указываем ID пользователя
$userId = 1;