tasks.flow.Flow.update
Изменить поток
Описание
Метод 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 — самостоятельное распределение
Подробнее о типах распределения — в статье Потоки
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 -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 -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
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type FlowUpdateResult = {
id: number
creatorId: number
ownerId: number
groupId: number
templateId: number
efficiency: number
active: boolean
plannedCompletionTime: number
activity: ISODate
name: string
description: string
distributionType: string
responsibleList: string[][]
demo: boolean
responsibleCanChangeDeadline: boolean
matchWorkTime: boolean
taskControl: boolean
notifyAtHalfTime: boolean
notifyOnQueueOverflow: number | null
notifyOnTasksInProgressOverflow: number
notifyWhenEfficiencyDecreases: number | null
taskCreators: string[][]
team: string[][]
trialFeatureEnabled: boolean
}
try {
const response = await $b24.actions.v2.call.make<FlowUpdateResult>({
method: 'tasks.flow.Flow.update',
params: {
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,
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Updated flow:', result.id, result.name, result.distributionType)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function updateFlow() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'tasks.flow.Flow.update',
params: {
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,
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Updated flow:', result.id, result.name, result.distributionType)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', updateFlow)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
flow_data = {
"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,
}
try:
bitrix_response = client.tasks.flow.flow.update(
flow_data=flow_data,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
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.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());
}
}
);
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']);
}
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "tasks.flow.Flow.update", b24.Params{
"flowData": b24.Params{
"id": 517,
"name": "Updated Flow Name",
"description": "Updated description",
"plannedCompletionTime": 7200,
"distributionType": "manually",
"responsibleList": []any{
[]string{"user", "3"},
},
"taskCreators": []any{
[]string{"meta-user", "all-users"},
},
"matchWorkTime": 1,
"notifyAtHalfTime": 0,
},
})
if err != nil {
return fmt.Errorf("tasks.flow.Flow.update: %w", err)
}
var item struct {
ID b24.ID `json:"id"`
CreatorID b24.ID `json:"creatorId"`
OwnerID b24.ID `json:"ownerId"`
GroupID b24.ID `json:"groupId"`
TemplateID b24.ID `json:"templateId"`
Efficiency int `json:"efficiency"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.CreatorID)
Ответ
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 |
Доступ запрещен или поток не найден | Тариф портала не позволяет работать с потоками или у пользователя нет прав на изменение потока |
0 |
Unknown error |
Неизвестная ошибка |
0 |
'distributionType': field's value has an invalid value |
Некорретное значение distributionType. Аналогично с другими параметрами |
0 |
Поток с таким названием уже существует |

