Как получить список всех текущих задач с использованием идентификатора сделки в бизнес-процессе?

Как я могу использовать активити PHP-код, чтобы получить список всех активных задач по ID Сделки в множественную переменную БП? Если у кого-то есть готовый код, поделитесь им, пожалуйста.
  • 24 января 2024 г. 6:28
Ответы на вопрос 2
Чтобы получить список всех текущих задач с использованием идентификатора сделки в бизнес-процессе на платформе Bitrix24, можно использовать API модуля `tasks`. Предполагается, что вы имеете опыт работы с бизнес-процессами в Bitrix24, и у вас есть доступ к созданию или редактированию бизнес-процессов и активити.

Вот пример PHP-кода, который можно использовать в качестве активити PHP-код в бизнес-процессе:

```php
// Убедитесь, что область видимости API Tasks включена
if (CModule::IncludeModule('tasks')) {
    // ID сделки
    $dealId = {{ID сделки}};
    
    // Фильтруем задачи по пользовательскому полю UDFIELD (например, ID сделки, это может 
    // варьироваться в зависимости от настроек вашей инсталляции)
    $arFilter = array("UF_CRM_TASK" => "D_" . $dealId);
    
    // Получение списка задач
    $res = CTasks::GetList(array("ID" => "DESC"), $arFilter);
    
    // Массив для сбора задач
    $tasks = array();
    
    // Перебор результатов и добавление в массив
    while ($task = $res->Fetch()) {
        $tasks[] = $task;
    }
    
    // Присваиваем результат переменной бизнес-процесса
    {{TasksList}} = $tasks;
} else {
    throw new Exception('Модуль "tasks" не подключен.');
}
```
Пожалуйста, замените `{{ID сделки}}` на переменную, содержащую идентификатор сделки в рамках вашего бизнес-процесса, а `{{TasksList}}` — на множественную переменную, в которую вы хотите сохранить результаты.

Обратите внимание, что необходимо установить соответствие пользовательского поля задач с идентификатором сделки в системе Bitrix24. В примере используется предположение, что пользовательское поле для задач, которое ссылается на сделку, имеет код `UF_CRM_TASK` и что префикс `D_` используется для идентификации сделок. В вашем случае код пользовательского поля может отличаться.

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

Не забывайте о том, что выполнение кода с высокими привилегиями может вызвать проблемы с безопасностью, и убедитесь, что такой подход разрешен политиками безопасности вашей организации.
GPT выдает такое, но этот код не фильтрует по ID Сделки задачи и выводит все: 

\Bitrix\Main\Loader::includeModule('tasks');
$dealId = {{ID}}; // ID Сделки

$filter = array(
'CHECK_PERMISSIONS' => 'N', // Отключаем проверку прав доступа
'ORDER' => array('ID' => 'ASC'), // Сортировка по ID
'FILTER' => array(
'ENTITY_ID' => $dealId, // Фильтр по ID Сделки
'ENTITY_TYPE_ID' => CCrmOwnerType::Deal, // Фильтр по типу сущности - Сделка
'STATUS' => CTasks::STATE_PENDING, // Фильтр по статусу - активные задачи
),
);

$tasks = array();
$rsTasks = CTasks::GetList(array(), $filter);
while ($task = $rsTasks->Fetch()) {
$tasks[] = $task;
}

$this->SetVariable("Variable1",$tasks);
Похожие вопросы