Блог Горошко Андрея Bitrix24,PHP Создать новый поток tasks.flow.Flow.create

Создать новый поток tasks.flow.Flow.create

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

Создать новый поток tasks.flow.Flow.create

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

Метод tasks.flow.Flow.create создает поток.

Поток должен привязываться к группе. Если не передать идентификатор группы при создании потока, автоматически будет создана новая группа, участниками которой будут создатель, администратор и команда потока.

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

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

Параметр flowData

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

Проверить название можно методом tasks.flow.Flow.isExists

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

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

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

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

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

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

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

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

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

[
    [
        '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
Уведомлять администратора потока, когда задач в очереди больше этого параметра.

По умолчанию — null, то есть не уведомлять

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

По умолчанию — null, то есть не уведомлять

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -d '{
        "flowData": {
            "name": "Unique Flow Name",
            "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.create
  • cURL (oAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -d '{
        "flowData": {
            "name": "Unique Flow Name",
            "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.create
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'tasks.flow.Flow.create',
    		{
    			flowData: {
    				name: 'Unique Flow Name',
    				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.create',
                [
                    'flowData' => [
                        'name'                  => 'Unique Flow Name',
                        '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 creating flow: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'tasks.flow.Flow.create',
        {
            flowData: {
                name: 'Unique Flow Name',
                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 = [
        "name" => "Unique Flow Name",
        "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.create',
        [
            '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": "Доступ запрещен или поток не найден"
}

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

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

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

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

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

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

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

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

Related Post

Изменить параметры почтового сервиса mailservice.updateИзменить параметры почтового сервиса mailservice.update

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

Внедрение Битрикс24 для оптовых дистрибьюторов продуктов питанияВнедрение Битрикс24 для оптовых дистрибьюторов продуктов питания

Профессиональная настройка и комплексная автоматизация Битрикс24 CRM позволяет выстроить прозрачный отдел продаж, исключить потерю обращений и автоматизировать рутинный документооборот компании. Услуга «Внедрение Битрикс24 для оптовых дистрибьюторов продуктов питания» обеспечивает сегментация

Создание оптового портала для дистрибьюторов бытовой химии и хозяйственных товаровСоздание оптового портала для дистрибьюторов бытовой химии и хозяйственных товаров

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Создание