Блог Горошко Андрея Bitrix24,PHP Как создать дело из приложения

Как создать дело из приложения

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

Как создать дело из приложения

Приложения могут создавать дела с провайдером специального типа. У такого дела будет соответствующая иконка в таймлайн. По клиику на дело откроется приложение в слайдере с опциями в PLACEMENT_OPTIONS

Предупреждение
Изменять/удалять дела с провайдером специального типа можно только в контексте приложения, которым дело создано. При обновлении такого дела методом crm.activity.update через вебхук будет ошибка: Access denied! Application context required.

Входящие параметры и конфигурация метода

Название
тип
Описание
PROVIDER_ID
string
Идентификатор провайдера. Для специального типа значение должно быть равно REST_APP
PROVIDER_TYPE_ID
string
Идентификатор типа дела. В случае использования провайдера REST_APP разработчик может указывать произвольные идентификаторы типа в зависимости от своих задач

Пример приложения

  • PHP
    <?php
    header('Content-Type: text/html; charset=UTF-8');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">

        </style>
    </head>
    <body style="display: none">
    <script src="//api.bitrix24.com/api/v1/"></script>

    <?if (isset($_POST['PLACEMENT']) && !empty($_POST['PLACEMENT_OPTIONS'])):
        $opt = json_decode($_POST['PLACEMENT_OPTIONS'], true);
    ?>
    <p>Activity ID: <?= (int)$opt['activity_id']?></p>
    <button onclick="updateActivity(<?= (int)$opt['activity_id']?>);">Update activity (set new description + completed)</button>
    <p><button onclick="deleteActivity(<?= (int)$opt['activity_id']?>);">Delete activity</button>
    <?else:?>
    <button onclick="selectCRMEntity();">Select LEAD</button>
    <span id="selected-entity"></span>
    <p>
    <button onclick="addActivity();">Add activity</button>
    <?endif;?>
    <script type="text/javascript">
        BX24.init(function()
        {
            document.body.style.display = '';
        });

        var selectedEntityId = null;

        function addActivity()
        {

            if (!selectedEntityId)
            {
                alert('Lead not selected');
                return;
            }
            BX24.callMethod(
                'crm.activity.add',
                {
                    fields:
                        {
                            "OWNER_TYPE_ID": 1,
                            "OWNER_ID": selectedEntityId,
                            "PROVIDER_ID": 'REST_APP',
                            "PROVIDER_TYPE_ID": 'LINK',
                            "SUBJECT": "Новое дело",
                            "COMPLETED": "N",
                            "RESPONSIBLE_ID": 1,
                            "DESCRIPTION": "Описание нового дела"
                        }
                },
                function(result)
                {
                    if(result.error())
                        alert("Error: " + result.error());
                    else
                    {
                        alert("Success: " + result.data());
                    }
                }
            );
        }
        function updateActivity(id)
        {
            BX24.callMethod(
                'crm.activity.update',
                {
                    id: id,
                    fields:
                        {
                            COMPLETED: 'Y',
                            SUBJECT: "Дело выполнено!",
                            DESCRIPTION: "Описание нового дела (выполнено)"
                        }
                },
                function(result)
                {
                    if(result.error())
                        alert("Error: " + result.error());
                    else
                    {
                        alert("Success: " + result.data());
                    }
                }
            );
        }

        function deleteActivity(id)
        {
            BX24.callMethod(
                'crm.activity.delete',
                {
                    id: id
                },
                function(result)
                {
                    if(result.error())
                        alert("Error: " + result.error());
                    else
                    {
                        alert("Success: " + result.data());
                    }
                }
            );
        }

        function selectCRMEntity()
        {
            document.getElementById('selected-entity').textContent = '';
            BX24.selectCRM({
                entityType: ['lead']
            }, function(selected)
            {
                if (selected['lead'] && selected['lead'][0])
                {
                    document.getElementById('selected-entity').textContent = selected['lead'][0]['title'];
                    var    id = selected['lead'][0]['id'];

                    selectedEntityId = id.substring(2);

                    console.log(selectedEntityId);
                }
            })
        }
    </script>
    </body>
    </html>

[icon]: !иконка

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

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

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

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

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

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

Related Post

Разработка B2B-портала для поставщиков металлорежущего инструмента и оснасткиРазработка B2B-портала для поставщиков металлорежущего инструмента и оснастки

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

Обновить поля вариации товара catalog.product.offer.updateОбновить поля вариации товара catalog.product.offer.update

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

Как использовать метод SDK crm.deal.contact.items.get в Битрикс24Как использовать метод SDK crm.deal.contact.items.get в Битрикс24

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать метод SDK crm.deal.contact.items.get в Битрикс24». Вы узнаете экспертные методики работы с