0 0,00 

Есть вопрос? Звоните!

+7 923 192-46-05

Обновление элемента бизнес-процесса Живой ленты при изменении сделки

29.04.2022
2
671
Обновление элемента из сделки

Задача: обновлять элементы бизнес-процесса Живой ленты (далее БП ЖЛ) при изменении сделки. 

 

Связь со сделкой организована в виде поля типа Привязка к элементам CRM

Содержание

В дизайнере бизнес-процессов есть действие Изменение элемента списка, но ID элемента нам взять негде. Какие варианты выхода из этой ситуации?

 

  1. Создадим множественное строковое поле в сделке, куда с помощью вебхука будем записывать ID элементов БП ЖЛ, при их создании;
  2. Создадим бизнес-процесс изменения элемента БП ЖЛ при изменении сделки.

Как автоматически записывать ID элементов БП ЖЛ при создании в сделку?

Для этого воспользуемся вебхуком.

Создание пользовательского поля в сделке

Заходим в любую сделку и нажимаем Создать поле —> Строка.

Отмечаем что поле множественное. Показывать в карточке его необязательно, разве что для проверки в начале. Сохраняем.

Создание пользовательского поля
Создание пользовательского поля

Теперь нам нужно посмотреть код поля, переходим CRM —> Настройки —> Настройки CRM —> Настройки форм и отчетов —> Пользовательские поля —> Сделка —> Список полей.

Список полей сделки

Заходим в редактирование поля и сверху в адресной строке можно увидеть код поля:

Код поля

Создание вебхука на портале

В левом меню нажмите Приложения —> Разработчикам —> Другое —> Входящий вебхук.

Другое
Входящий вебхук

Установите настройки. Просто начните набирать значение и оно отфильтруется в списке.

Метод — crm.deal.update;

Настройка прав — CRM(crm), Пользовательские поля. пользователя (user userfield).

Входящий вебхук

Вебхук на стороннем ресурсе

Теперь нам нужно разместить код обновления сделки на стороннем ресурсе, где есть php. Можно создать папку на имеющемся у вас сайте.

				
					<?php
// Обработаем входные данные, потому что мало ли что
$deal_id = (int)$_REQUEST['deal'];
$element_id = (int)$_REQUEST['element'];
$result = array(
    'result' => 1,
    'time' => array(
        'start' => 1,
        'finish' => 1,
        'duration' => 1,
        'processing' => 1,
        'date_start' => 1,
        'date_finish' => 1,
        'operating' => 1,
    )
);

// Если есть оба IDа -работаем
if ($deal_id > 0 && $element_id > 0)
{
    // Запрос текущего состояния сделки
    $hook = 'https://b24-tnkxpm.bitrix24.ru/rest/1/ulueqn7xnl3pwuln/crm.deal.get.json?id='.$deal_id;
    $rc = curl_request($hook);
    // Если запрос удался - работаем
    if ($rc['json']->result->ID == $deal_id)
    {
        // Добавили к нужному полю указанный элемент
        $rc['json']->result->UF_CRM_1651137034550[] = (string)$element_id;

        $request = array(
            'id'=> $deal_id,
            'fields'=> array(
                "UF_CRM_1651137034550"=> array_unique($rc['json']->result->UF_CRM_1651137034550) // строго уникальные значения
            ),
        );
        // Запишем в сделку новое значение поля
        $hook = 'https://b24-tnkxpm.bitrix24.ru/rest/1/ulueqn7xnl3pwuln/crm.deal.update.json?';
        $hook .= http_build_query($request);
        $rc = curl_request($hook);
    }
    else
    {
        $result = array(
            'error' => '',
            'error_description' => 'Deal "'.$_REQUEST['deal'].'" not found'
        );
    }
}
else
{
    $result = array(
        'error' => '',
        'error_description' => 'Wrong parameters "deal" or "element"'
    );
}

print json_encode($result);

// Функция отправки запроса в Битрикс24
function curl_request($current_url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $current_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    $output = curl_exec($ch);
    $x = curl_getinfo($ch);
    $rc = array(
        //'result' => $output,
        'json' => json_decode($output),
        //'info' => $x
    );
    curl_close($ch);
    return $rc;
}
				
			

UF_CRM_1651137034550 — пользовательское поле ID элементов в сделке. Не забудьте поменять на свое, а также адрес битрикса.

Вебхук на сервере

Бизнес-процесс при создании элемента БП ЖЛ

Переходим в бизнес-процесс Живой ленты, Действия —> Настроить бизнес-процессы.

Настроить БП

Создать последовательный бизнес-процесс.

Создать БП

В параметрах укажите автоматически запускать при добавлении.

Параметры БП

Добавьте действие Webhook.

БП

Вставьте адрес php-файла с параметрами: https://путь к файлу/deal-update.php?deal={{Сделка}}&element={{ID элемента}}

  • {{Сделка}} — поле сделки;
  • {{ID элемента}} — ID элемента.
Вебхук

Теперь при добавлении элемента в список в сделку будет записываться его ID.

Поле в сделке

Обновление элемента бизнес-процесса Живой ленты при изменении сделки

Для создания БП переходим CRM —> Настройки —> Настройки CRM —> Роботы и бизнес-процессы —> Бизнес-процессы —> Сделка —> Список шаблонов —> Добавить шаблон.

БП обновление списка

Вводим название, устанавливаем автоматический запуск при изменении.

БП обновление списка

Итератор

Т.к. элементов может быть несколько, воспользуемся итератором:

  • Заголовок — Итератор;
  • Источник — Поля документа: ID элементов.
Итератор
Запись в отчет

Значение

Действие Запись в отчет

  • Заголовок — Значение;
  • Текст — {=A63295_44386_37616_55855:Value}
  •  

Изменение элемента списка

Действие Изменение элемента списка.

  • Заголовок — Изменение элемента списка;
  • ID элемента —{=A63295_44386_37616_55855:Value};
  • Тип документа — Бюджет.

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

Изменение элемента списка
Вставка значения

где:

{=A63295_44386_37616_55855:Value} — вставка значения из действия Итератор.

  •  

Готово! Теперь при изменении сделки элементы бизнес-процесса Живой ленты будут обновляться. Эту же схему можно применить к универсальному списку.

Читайте также

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
2 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Мария

Понятное и доступное описание. Было полезно.

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
0
    0
    Корзина
    Корзина пустаВернуться в магазин