Блог Горошко Андрея Bitrix24,PHP Обновить пользовательский тип crm.type.update

Обновить пользовательский тип crm.type.update

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

Обновить пользовательский тип crm.type.update

> Scope: crm
>
> Кто может выполнять метод: любой пользователь с административным доступом к разделу CRM

Метод обновляет существующий смарт-процесс по его идентификатору id.

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

Название
тип
Описание
id*
[integer][1]
Идентификатор смарт-процесса. Можно получить с помощью методов: crm.type.list, crm.type.add
fields
[object][1]
Значения полей (подробное описание приведено ниже) для обновления смарт-процесса

Параметр fields

Название
тип
Описание
title
[string][1]
Название смарт-процесса
relations
[object][1]
Объект, содержащий в себе связи к другим сущностям CRM. Структура описана объектом type.relations
isUseInUserfieldEnabled
[boolean][1]
Включено ли использование смарт-процесса в пользовательском поле
linkedUserFields
[object][1]
Набор пользовательских полей в которых должен отображаться данный смарт-процесс. Структура описана объектом type.linkedUserFields
isAutomationEnabled
[boolean][1]
Включены ли роботы и триггеры
isBeginCloseDatesEnabled
[boolean][1]
Включены ли поля Дата начала и Дата завершения
isBizProcEnabled
[boolean][1]
Включено ли использование дизайнера бизнес процессов
isCategoriesEnabled
[boolean][1]
Включены ли свои воронки и туннели продаж
isClientEnabled
[boolean][1]
Включено ли поле Клиент. При включенной опции у смарт-процесса появляется предустановленная привязка к Контактам и Компаниям
isDocumentsEnabled
[boolean][1]
Включена ли печать документов
isLinkWithProductsEnabled
[boolean][1]
Включена ли привязка товаров каталога
isMycompanyEnabled
[boolean][1]
Включено ли поле Реквизиты вашей компании
isObserversEnabled
[boolean][1]
Включено ли поле Наблюдатели
isRecyclebinEnabled
[boolean][1]
Включено ли использование корзины
isSetOpenPermissions
[boolean][1]
Делать ли новые воронки доступными для всех
isSourceEnabled
[boolean][1]
Включены ли поля Источник и Дополнительно об источнике
isStagesEnabled
[boolean][1]
Включено ли использование своих стадий и канбана
isExternal
[boolean][1]
Является ли смарт-процесс вынесенным из CRM (привязанным к цифровому рабочему месту)

Параметр устарел. Для работы с цифровыми рабочими местами используйте методы crm.automatedsolution.*

customSectionId
[integer][1]
Идентификатор цифрового рабочего места

Параметр устарел. Для работы с цифровыми рабочими местами используйте методы crm.automatedsolution.*

customSections
[array][1]
Массив цифровых рабочих мест

Параметр устарел. Для работы с цифровыми рабочими местами используйте методы crm.automatedsolution.*

Информация
Изменение полей настроек смарт-процесса происходит только при передаче изменяемых значений полей.

Например, если у смарт-процесса с id = 128 необходимо отключить функционал печати документов, то передаем следующие параметры:

{
    "id": 128,
    "fields": {
        "isDocumentsEnabled": "N"
    }
}

Связи

  • Настройки необходимо передавать целиком, они полностью перезаписываются.
  • Нельзя изменить настройки предустановленных связей (iPredefined: true). Эти настройки можно не передавать в запросе.
  • Если при попытке сохранить переданные настройки связей возникнет ошибка, она не будет выведена. Настройки просто не сохранятся.

Примеры кода

1. У смарт-процесса с id = 20:

  • Отключить следующие настройки:
  • Роботы и триггеры
  • Поля Дата начала и Дата завершения
  • Поле Клиент
  • Поле Наблюдатели
  • Включить следующие настройки:
  • Поля Источник и Дополнительно об источнике
  • Использование своих стадий и канбана
  • Включить отображение смарт-процесса в поле Задачи
  • cURL (Webhook)
        curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":20,"fields":{"isAutomationEnabled":"N","isBeginCloseDatesEnabled":"N","isClientEnabled":"N","isObserversEnabled":"N","isSourceEnabled":"Y","isStagesEnabled":"Y","isUseInUserfieldEnabled":"Y","linkedUserFields":{"TASKS_TASK|UF_CRM_TASK":"true"}}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.type.update
  • cURL (OAuth)
        curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":20,"fields":{"isAutomationEnabled":"N","isBeginCloseDatesEnabled":"N","isClientEnabled":"N","isObserversEnabled":"N","isSourceEnabled":"Y","isStagesEnabled":"Y","isUseInUserfieldEnabled":"Y","linkedUserFields":{"TASKS_TASK|UF_CRM_TASK":"true"}},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.type.update
  • JS
        BX24.callMethod(
            'crm.type.update',
            {
                id: 20,
                fields: {
                    isAutomationEnabled: "N",
                    isBeginCloseDatesEnabled: "N",
                    isClientEnabled: "N",
                    isObserversEnabled: "N",
                    isSourceEnabled: "Y",
                    isStagesEnabled: "Y",
                    isUseInUserfieldEnabled: "Y",
                    linkedUserFields: {
                        "TASKS_TASK|UF_CRM_TASK": "true",
                    },
                },
            },
            (result) => {
                if (result.error())
                {
                    console.error(result.error());

                    return;
                }

                console.info(result.data());
            },
        );
  • PHP
        require_once('crest.php');

        $result = CRest::call(
            'crm.type.update',
            [
                'id' => 20,
                'fields' => [
                    'isAutomationEnabled' => "N",
                    'isBeginCloseDatesEnabled' => "N",
                    'isClientEnabled' => "N",
                    'isObserversEnabled' => "N",
                    'isSourceEnabled' => "Y",
                    'isStagesEnabled' => "Y",
                    'isUseInUserfieldEnabled' => "Y",
                    'linkedUserFields' => [
                        "TASKS_TASK|UF_CRM_TASK" => "true",
                    ],
                ]
            ]
        );

        echo '<PRE>';
        print_r($result);
        echo '</PRE>';

2. Допустим, у смарт-процесса с id = 20 необходимо

  • Удалить все привязанные к смарт-процессу сущности (relations.parent)
  • Включить «показ в карточке» для Лидов, к которым привязан смарт-процесс

Исходные relations в смарт-процессе:

    {
        "relations": {
            "parent": [
                {
                    "entityTypeId": 31,
                    "isChildrenListEnabled": "N",
                    "isPredefined": "N"
                }
            ],
            "child": [
                {
                    "entityTypeId": 1,
                    "isChildrenListEnabled": "N",
                    "isPredefined": "N"
                },
                {
                    "entityTypeId": 2,
                    "isChildrenListEnabled": "N",
                    "isPredefined": "N"
                }
            ]
        }
    }

Итоговый запрос:

  • cURL (Webhook)
        curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":20,"fields":{"relations":{"parent":[],"child":[{"entityTypeId":1,"isChildrenListEnabled":"true"},{"entityTypeId":2,"isChildrenListEnabled":"false"}]}}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.type.update
  • cURL (OAuth)
        curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":20,"fields":{"relations":{"parent":[],"child":[{"entityTypeId":1,"isChildrenListEnabled":"true"},{"entityTypeId":2,"isChildrenListEnabled":"false"}]}},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.type.update
  • JS
        BX24.callMethod(
            'crm.type.update',
            {
                id: 20,
                fields: {
                    relations: {
                        parent: [],
                        child: [
                            {
                                "entityTypeId": 1,
                                "isChildrenListEnabled": "true",
                            },
                            {
                                "entityTypeId": 2,
                                "isChildrenListEnabled": "false",
                            }
                        ],
                    },
                },
            },
            (result) => {
                if (result.error())
                {
                    console.error(result.error());

                    return;
                }

                console.info(result.data());
            },
        );
  • PHP
        require_once('crest.php');

        $result = CRest::call(
            'crm.type.update',
            [
                'id' => 20,
                'fields' => [
                    'relations' => [
                        'parent' => [],
                        'child' => [
                            [
                                "entityTypeId" => 1,
                                "isChildrenListEnabled" => "true",
                            ],
                            [
                                "entityTypeId" => 2,
                                "isChildrenListEnabled" => "false",
                            ]
                        ],
                    ],
                ]
            ]
        );

        echo '<PRE>';
        print_r($result);
        echo '</PRE>';

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

HTTP-статус: 200

{
    "result": {
        "type": {
            "id": 20,
            "title": "Смарт-процесс #3",
            "code": "",
            "createdBy": 1,
            "entityTypeId": 1222,
            "customSectionId": null,
            "isCategoriesEnabled": "Y",
            "isStagesEnabled": "Y",
            "isBeginCloseDatesEnabled": "N",
            "isClientEnabled": "N",
            "isUseInUserfieldEnabled": "Y",
            "isLinkWithProductsEnabled": "N",
            "isMycompanyEnabled": "Y",
            "isDocumentsEnabled": "N",
            "isSourceEnabled": "Y",
            "isObserversEnabled": "N",
            "isRecyclebinEnabled": "N",
            "isAutomationEnabled": "N",
            "isBizProcEnabled": "N",
            "isSetOpenPermissions": "Y",
            "isPaymentsEnabled": "N",
            "isCountersEnabled": "N",
            "createdTime": "2024-07-08T17:24:47+02:00",
            "updatedTime": "2024-07-09T20:55:37+02:00",
            "updatedBy": 1,
            "relations": {
                "parent": [],
                "child": [
                    {
                        "entityTypeId": 1,
                        "isChildrenListEnabled": "Y",
                        "isPredefined": "N"
                    },
                    {
                        "entityTypeId": 2,
                        "isChildrenListEnabled": "Y",
                        "isPredefined": "N"
                    }
                ]
            },
            "linkedUserFields": {
                "CALENDAR_EVENT|UF_CRM_CAL_EVENT": "N",
                "TASKS_TASK|UF_CRM_TASK": "Y",
                "TASKS_TASK_TEMPLATE|UF_CRM_TASK": "N"
            },
            "customSections": []
        }
    },
    "time": {
        "start": 1720551426.116454,
        "finish": 1720551426.816224,
        "duration": 0.6997702121734619,
        "processing": 0.20451998710632324,
        "date_start": "2024-07-09T20:57:06+02:00",
        "date_finish": "2024-07-09T20:57:06+02:00",
        "operating": 0.2044668197631836
    }
}

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

Название
тип
Описание
result
[object][1]
Корневой элемент ответа. Содержит единственный ключ type
type
type
Информация об обновленном смарт-процессе
time
[time][1]
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
    "error": 0,
    "error_description": "Смарт-процесс не найден"
}

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

СтатусКодОписаниеЗначение
400ACCESS_DENIEDДоступ запрещенВозникает, если у пользователя нет административных прав CRM
403allowed_only_intranet_userДействие разрешено только интранет-пользователямВозникает, если пользователь не является интранет-пользователем
400UPDATE_DYNAMIC_TYPE_RESTRICTEDВы не можете изменить настройки смарт-процесса из-за ограничений вашего тарифаСмарт-процессы не доступны на вашем тарифе
4000Выберите рабочее место, в котором будет находиться смарт-процессПри передаче isExternal = 'true', но пустом customSectionId
  • [](./index)
  • [](./crm-type-add)
  • [](./crm-type-get)
  • [](./crm-type-get-by-entity-type-id)
  • [](./crm-type-list)
  • [](./crm-type-delete)
  • [](./crm-type-fields)

[1]: ../../../data-types.md

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

Ключевые выводы по теме «Обновить пользовательский тип crm.type.update»:

Использование современных стандартов D7 при работе с crm.type.update позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

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

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

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

Related Post

Уничтожить файл навсегда disk.file.deleteУничтожить файл навсегда disk.file.delete

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Уничтожить файл навсегда disk.file.delete». Вы узнаете экспертные методики работы с disk.file.delete и научитесь

Забрать диалог себе imopenlines.operator.answerЗабрать диалог себе imopenlines.operator.answer

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

Внедрение Битрикс24 для компании по ремонту квартир и отделкеВнедрение Битрикс24 для компании по ремонту квартир и отделке

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