Блог Горошко Андрея Bitrix24,PHP Как добавить комментарий в таймлайн смарт-процесса

Как добавить комментарий в таймлайн смарт-процесса

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

Как добавить комментарий в таймлайн смарт-процесса

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

Ключевой параметр для добавления комментария в элемент CRM — идентификатор типа объекта. Идентификатор показывает, в какой тип объекта комментарий будет добавлен: в сделку, в лид, в определенный смарт-процесс.
Идентификатор используется в параметрах OWNER_TYPE, OWNER_TYPE_ID и ENTITY_TYPE, ENTITY_TYPE_ID групп методов crm.item., crm.timeline., crm.activity.*.

В CRM есть два типа идентификаторов объектов:

  • Предустановленные — это идентификаторы лидов, сделок, компаний, контактов, счетов, предложений. Идентификаторы предустановленных объектов есть в документации
  • Динамические — это идентификаторы смарт-процессов. Идентификатор смарт-процесса генерируется в момент создания, он не зависит от названия смарт-процесса

Получить идентификатор смарт-процесса можно двумя методами:

  • crm.enum.ownertype — метод без параметров, возвращает перечисление типов объектов CRM, как предустановленных, так и динамических
  • crm.type.list — метод с фильтром, возвращает только динамические объекты CRM

Для создания комментария в элементе смарт-процесса последовательно выполним два метода:
1. crm.type.list — получаем смарт-процесс по фильтру
2. crm.timeline.comment.add — создаем комментарий

1. Получаем идентификатор типа смарт-процесса

Для получения идентификатора типа используем метод crm.type.list с фильтром:

  • title — укажем название смарт-процесса
  • JS
    BX24.callMethod(
        'crm.type.list',
        {
            filter: {
                "title": "Закупка оборудования"
            }
        }
    );
  • PHP
    require_once('crest.php');

    $result = CRest::call(
        'crm.type.list',
        [
            'filter' => [
                'title' => 'Закупка оборудования'
            ]
        ]
    );

В результате получили два значения ID:

  • id: 7 — порядковый номер смарт-процесса в Битрикс
  • entityTypeId: 177 — идентификатор типа смарт-процесса. Параметр, необходимый для следующего запроса
{
    "result": {
        "types": [
            {
                "id": 7,
                "title": "Закупка оборудования",
                "code": "",
                "createdBy": 1,
                "entityTypeId": 177,
                "customSectionId": null,
                "isCategoriesEnabled": "Y",
                "isStagesEnabled": "Y",
                "isBeginCloseDatesEnabled": "Y",
                "isClientEnabled": "Y",
                "isUseInUserfieldEnabled": "Y",
                "isLinkWithProductsEnabled": "Y",
                "isMycompanyEnabled": "Y",
                "isDocumentsEnabled": "Y",
                "isSourceEnabled": "Y",
                "isObserversEnabled": "Y",
                "isRecyclebinEnabled": "Y",
                "isAutomationEnabled": "Y",
                "isBizProcEnabled": "Y",
                "isSetOpenPermissions": "Y",
                "isPaymentsEnabled": "N",
                "isCountersEnabled": "N",
                "createdTime": "2021-11-26T10:52:17+03:00",
                "updatedTime": "2024-11-12T15:32:39+03:00",
                "updatedBy": 1
            }
        ]
    }
}

2. Добавляем комментарий к элементу смарт-процесса

Для добавления комментария используем метод crm.timeline.comment.add с параметрами:

  • ENTITY_ID — ID элемента. Для получения значения ID используйте метод crm.item.list, где entityTypeId фильтра равно значению entityTypeId из crm.type.list
  • ENTITY_TYPE — укажем DYNAMIC_177. Значение состоит из entityTypeId из результата предыдущего метода и префикса динамического объекта DYNAMIC_
  • COMMENT — текстовое значение комментария
  • JS
    BX24.callMethod(
        "crm.timeline.comment.add",
        {
            fields:
            {
                "ENTITY_ID": 19,
                "ENTITY_TYPE": "DYNAMIC_177",
                "COMMENT": "Подтвердить закупку по почте!",
            }
        }
    );
  • PHP
    require_once('crest.php');

    $result = CRest::call(
        'crm.timeline.comment.add',
        [
            'fields' => [
                'ENTITY_ID' => 19,
                'ENTITY_TYPE' => 'DYNAMIC_177',
                'COMMENT' => 'Подтвердить закупку по почте!',
            ]
        ]
    );

Мы добавили комментарий в таймлайн элемента смарт-процесса и в ответ получили ID записи таймлайна 55771. ID записи можно использовать в методах обновления и удаления комментария.

{
    "result": 55771
}

Пример кода

  • JS
    // Функция для поиска идентификатора смарт-процесса
    function findSPA() {
        // Название смарт-процесса, для получения entityTypeId
        var SPAtitle = 'название_вашего_смарт_процесса';

        // Вызываем метод crm.type.list для получения entityTypeId
        BX24.callMethod(
            'crm.type.list',
            {
                filter: {
                   SPAtitle
                }
            },
            function(result) {
                if (result.error()) {
                    console.error('Ошибка при поиске смарт-процесса:', result.error());
                } else {
                    var types = result.data().types;
                    if (Array.isArray(types) && types.length > 0) {
                        var SPAId = types[0].entityTypeId; // Предполагаем, что нужный объект первый в массиве
                        console.log('Смарт-процесс найден', SPAId);
                        createComment(SPAId);
                    } else {
                        console.error('Смарт-процесс не найден или данные пусты');
                    }
                }
            }
        );
    }

    // Функция для создания комментария в элементе смарт-процесса
    function createComment(SPAId) {
        // ID элемента, в который будет добавлен комментарий
        var elementId = 'ваш_ID_элемента';
        // Текст комментария
        var commentText = 'ваш_комментарий';

        // Вызываем метод crm.timeline.comment.add для добавления комментария
        BX24.callMethod(
            "crm.timeline.comment.add",
            {
                fields: {
                    ENTITY_ID: elementId,
                    ENTITY_TYPE: 'DYNAMIC_' + SPAId,
                    COMMENT: commentText
                }
            },
            function(result) {
                if (result.error()) {
                    console.error('Ошибка при создании комментария:', result.error());
                } else {
                    console.log('Комментарий добавлен', result.data());
                }
            }
        );
    }

    // Вызов функции для поиска смарт-процесса и добавления комментария
    findSPA();
  • PHP
    require_once('crest.php');

    // Функция для поиска идентификатора смарт-процесса
    function findSPA() {
        // Название смарт-процесса, для получения entityTypeId
        $SPAtitle = 'название_вашего_смарт_процесса';

        // Вызываем метод crm.type.list для получения entityTypeId
        $result = CRest::call(
            'crm.type.list',
            [
                'filter' => [
                    'title' => $SPAtitle
                ]
            ]
        );

        if (isset($result['error'])) {
            echo 'Ошибка при поиске смарт-процесса: ' . $result['error'];
        } else {
            $types = $result['result']['types'];
            if (is_array($types) && count($types) > 0) {
                $SPAId = $types[0]['entityTypeId']; // Предполагаем, что нужный объект первый в массиве
                echo 'Смарт-процесс найден: ' . $SPAId;
                createComment($SPAId);
            } else {
                echo 'Смарт-процесс не найден или данные пусты';
            }
        }
    }

    // Функция для создания комментария в элементе смарт-процесса
    function createComment($SPAId) {
        // ID элемента, в который будет добавлен комментарий
        $elementId = 'ваш_ID_элемента';
        // Текст комментария
        $commentText = 'ваш_комментарий';

        // Вызываем метод crm.timeline.comment.add для добавления комментария
        $result = CRest::call(
            'crm.timeline.comment.add',
            [
                'fields' => [
                    'ENTITY_ID' => $elementId,
                    'ENTITY_TYPE' => 'DYNAMIC_' . $SPAId,
                    'COMMENT' => $commentText
                ]
            ]
        );

        if (isset($result['error'])) {
            echo 'Ошибка при создании комментария: ' . $result['error'];
        } else {
            echo 'Комментарий добавлен';
        }
    }

    // Вызов функции для поиска смарт-процесса и добавления комментария
    findSPA();

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

Ключевые выводы по теме «Как добавить комментарий в таймлайн смарт-процесса»:

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

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

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

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

Related Post

Переименовать файл disk.file.renameПереименовать файл disk.file.rename

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Переименовать файл disk.file.rename», разберем архитектурные особенности и предоставим

Получить список разделов хранилища entity.section.getПолучить список разделов хранилища entity.section.get

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить список разделов хранилища entity.section.get», разберем архитектурные особенности

Создание оптового кабинета с модулем онлайн-обучения и тестирования персонала дилеровСоздание оптового кабинета с модулем онлайн-обучения и тестирования персонала дилеров

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