Блог Горошко Андрея Bitrix24,PHP Изменить поток tasks.flow.Flow.update

Изменить поток tasks.flow.Flow.update

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Изменить поток tasks.flow.Flow.update». Вы узнаете экспертные методики работы с tasks.flow.Flow.update и научитесь избегать типичных ошибок начинающих разработчиков.

Изменить поток tasks.flow.Flow.update

> Scope: task
>
> Кто может выполнять метод: создатель или администратор потока

Метод tasks.flow.Flow.update изменяет поток.

Параметры метода

Название
тип
Описание
flowData
object
Значения полей для изменения потока (подробное описание приведено ниже)

Параметр flowData

Название
тип
Описание
id
integer
Идентификатор потока, который нужно изменить.

Получить идентификатор можно методом создания нового потока tasks.flow.Flow.create или методом получения задачи tasks.task.get для задачи из потока

name
string
Название потока. Должно быть уникальным для каждого потока.

Для проверки названия можно воспользоваться методом tasks.flow.Flow.isExists

description
string
Описание потока
groupId
integer
Идентификатор группы, к которой будет привязан поток.

Если не указать, то автоматически создается новая группа

ownerId
integer
Идентификатор администратора потока.

Если не указать, администратором будет создатель потока

templateId
integer
Идентификатор шаблона, по которому пользователи будут добавлять задачи в поток
plannedCompletionTime
integer
Планируемое время выполнения задачи в секундах
distributionType
string
Тип распределения:
— manually — ручное распределение
— queue — распределение по очереди
— himself — самостоятельное распределение

Подробнее о типах распределения — в статье [](./index)

responsibleList*
array
Идентификаторы сотрудников, которые получат задачи.

Для ручного распределения укажите идентификатор модератора потока.

Для самостоятельного распределения или распределения по очереди укажите идентификаторы сотрудников или отделы. Например:

[
    [
        'department','3'
    ],
    [
        'department','17:F'
    ]
]

Если не добавить суффикс :F, система выберет все подотделы указанного отдела по структуре компании

taskCreators
object
Список пользователей, которые могут добавлять задачи в поток в формате {"<тип-сущности>": "<идентификатор-сущности>"}. Например

[
    [
        'user','3'
    ],
    [
        'department','17:F'
    ]
]

Если не добавить суффикс :F, система выберет все подотделы указанного отдела по структуре компании

Чтобы задачи могли добавлять все пользователи, укажите значение{"meta-user": "all-users"}

matchWorkTime
integer
Пропускать выходные и праздничные дни для рассчета крайнего срока задачи.

Принимает значения 0 и 1. По умолчанию 1

responsibleCanChangeDeadline
integer
Может ли ответственный менять дедлайн задачи.

Принимает значения 0 и 1. По умолчанию 0

notifyAtHalfTime
integer
Уведомлять исполнителя на половине срока задачи.

Принимает значения 0 и 1. По умолчанию 0

taskControl
integer
Отправлять выполненную задачу постановщику для проверки.

Принимает значения 0 и 1. По умолчанию 0

notifyOnQueueOverflow
integer
Уведомлять администратора потока, когда задач в очереди более этого параметра.

По умолчанию null (не уведомлять)

notifyOnTasksInProgressOverflow
integer
Уведомлять администратора потока, когда задач в работе больше этого параметра.

По умолчанию 50

notifyWhenEfficiencyDecreases
integer
Уведомлять администратора потока, когда эффективность упала ниже этого параметра.

По умолчанию null (не уведомлять)

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -d '{
        "flowData": {
            "id": 517,
            "name": "Updated Flow Name",
            "description": "Updated description",
            "plannedCompletionTime": 7200,
            "distributionType": "manually",
            "responsibleList": [["user","3"]],
            "taskCreators": [["meta-user","all-users"]],
            "matchWorkTime": 1,
            "notifyAtHalfTime": 0
        }
    }' \
    https://your-domain.bitrix24.com/rest/_USER_ID_/_CODE_/tasks.flow.Flow.update
  • cURL (oAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -d '{
        "flowData": {
            "id": 517,
            "name": "Updated Flow Name",
            "description": "Updated description",
            "plannedCompletionTime": 7200,
            "distributionType": "manually",
            "responsibleList": [["user","3"]],
            "taskCreators": [["meta-user","all-users"]],
            "matchWorkTime": 1,
            "notifyAtHalfTime": 0
        }
    }' \
    https://your-domain.bitrix24.com/rest/tasks.flow.Flow.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'tasks.flow.Flow.update',
    		{
    			flowData: {
    				id: 517,
    				name: 'Updated Flow Name',
    				description: 'Updated description',
    				plannedCompletionTime: 7200,
    				distributionType: 'manually',
    				responsibleList: [
    					[
    						'user','3'
    					]
    				],
    				taskCreators: [
    					[
    						'meta-user','all-users'
    					]
    				],
    				matchWorkTime: 1,
    				notifyAtHalfTime: 0
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'tasks.flow.Flow.update',
                [
                    'flowData' => [
                        'id'                   => 517,
                        'name'                 => 'Updated Flow Name',
                        'description'          => 'Updated description',
                        'plannedCompletionTime' => 7200,
                        'distributionType'     => 'manually',
                        'responsibleList'      => [
                            ['user', '3']
                        ],
                        'taskCreators'         => [
                            ['meta-user', 'all-users']
                        ],
                        'matchWorkTime'        => 1,
                        'notifyAtHalfTime'     => 0
                    ]
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error updating flow: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'tasks.flow.Flow.update',
        {
            flowData: {
                id: 517,
                name: 'Updated Flow Name',
                description: 'Updated description',
                plannedCompletionTime: 7200,
                distributionType: 'manually',
                responsibleList: [
                    [
                        'user','3'
                    ]
                ],
                taskCreators: [
                    [
                        'meta-user','all-users'
                    ]
                ],
                matchWorkTime: 1,
                notifyAtHalfTime: 0
            }
        },
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php'); // подключение CRest PHP SDK

    $flowData = [
        "id" => 517,
        "name" => "Updated Flow Name",
        "description" => "Updated description",
        "plannedCompletionTime" => 7200,
        "distributionType" => "manually",
        "responsibleList" => [["user", "3"]],
        "taskCreators" => [["meta-user", "all-users"]],
        "matchWorkTime" => 1,
        "notifyAtHalfTime" => 0
    ];

    // выполнение запроса к REST API
    $result = CRest::call(
        'tasks.flow.Flow.update',
        [
            'flowData' => $flowData
        ]
    );

    // Обработка ответа от Битрикс24
    if ($result['error']) {
        echo 'Error: '.$result['error_description'];
    } else {
        print_r($result['result']);
    }

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "id": 517,
        "creatorId": 1,
        "ownerId": 1,
        "groupId": 178,
        "templateId": 0,
        "efficiency": 0,
        "active": true,
        "plannedCompletionTime": 7200,
        "activity": "2024-09-02T15:27:29+00:00",
        "name": "Updated Flow Name",
        "description": "Updated description",
        "distributionType": "manually",
        "responsibleList": [
            [
                "user",
                "3"
            ]
        ],
        "demo": false,
        "responsibleCanChangeDeadline": true,
        "matchWorkTime": true,
        "taskControl": false,
        "notifyAtHalfTime": false,
        "notifyOnQueueOverflow": 10,
        "notifyOnTasksInProgressOverflow": 50,
        "notifyWhenEfficiencyDecreases": null,
        "taskCreators": [
            [
                "meta-user",
                "all-users"
            ]
        ],
        "team": [
            [
                "user",
                "3"
            ]
        ],
        "trialFeatureEnabled": false
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Объект с данными потока
id
integer
Идентификатор созданного потока
creatorId
integer
Идентификатор создателя потока. Только для чтения
ownerId
integer
Идентификатор администратора потока
groupId
integer
Идентификатор группы, к которой привязан поток
templateId
integer
Идентификатор шаблона, по которому создаются задачи в потоке
efficiency
integer
Эффективность потока в процентах. Только для чтения
active
boolean
Статус активности потока
plannedCompletionTime
integer
Планируемое время выполнения задачи в секундах
activity
string
Дата и время последней активности в потоке. Только для чтения
name
string
Название потока
description
string
Описание потока
distributionType
string
Тип распределения задач в потоке
responsibleList
array
Список ответственных за задачи в потоке. Для ручного распределения это модератор потока
demo
boolean
Является ли поток демонстрационным. Системный параметр. Только для чтения
responsibleCanChangeDeadline
boolean
Может ли ответственный менять дедлайн задачи
matchWorkTime
boolean
Пропускать ли выходные и праздничные дни при расчете крайнего срока задачи
taskControl
boolean
Отправлять ли выполненную задачу постановщику для проверки
notifyAtHalfTime
boolean
Уведомлять ли исполнителя на половине срока задачи
notifyOnQueueOverflow
integer
Количество задач в очереди, при превышении которого будет отправлено уведомление администратору потока (если null, то уведомления выключены)
notifyOnTasksInProgressOverflow
integer
Количество задач в работе, при превышении которого будет отправлено уведомление администратору потока (если null, то уведомления выключены)
notifyWhenEfficiencyDecreases
integer
Эффективность в процентах, при снижении до которой будет отправлено уведомление администратору потока (если null, то уведомления выключены)
taskCreators
object
Список пользователей, которые могут добавлять задачи в поток в формате {"<тип-объекта>": "<идентификатор-объекта>"}. Например, [{"user": 3}, {"department": "17:F"}].

Элемент {"meta-user": "all-users"} означает, что задачи могут добавлять все пользователи

team
object
Команда потока.

Для ручного распределения это все участники проекта, к которому привязан поток, кроме модератора.

Для распределения по очереди и самостоятельного распределения команда та же, что и в responsibleList

trialFeatureEnabled
boolean
Включен ли демонстрационный период для потока. Системный параметр. Только для чтения

Обработка ошибок

HTTP-статус: 400

{
    "error": "0",
    "error_description": "Flow not found"
}

Возможные коды ошибок

КодОписаниеДополнительная информация
0Доступ запрещен или поток не найденТариф портала не позволяет работать с потоками или у пользователя нет прав на изменение потока
0Unknown errorНеизвестная ошибка
0'distributionType': field's value has an invalid valueНекорретное значение distributionType. Аналогично с другими параметрами
0Поток с таким названием уже существует
  • [](./tasks-flow-flow-create)
  • [](./tasks-flow-flow-get)
  • [](./tasks-flow-flow-delete)
  • [](./tasks-flow-flow-is-exists)
  • [](./tasks-flow-flow-activate)
  • [](./tasks-flow-flow-pin)

💡 Экспертное мнение и рекомендации

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к tasks.flow.Flow.update, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Изменить поток tasks.flow.Flow.update».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Добавить обработчик кассы sale.cashbox.handler.addДобавить обработчик кассы sale.cashbox.handler.add

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Добавить обработчик кассы sale.cashbox.handler.add». Вы узнаете экспертные методики работы с sale.cashbox.handler.add и научитесь

Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…»,

Обновить принудительно ключ авторизации BX24.refreshAuthОбновить принудительно ключ авторизации BX24.refreshAuth

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Обновить принудительно ключ авторизации BX24.refreshAuth». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.