Задача: обновлять элементы бизнес-процесса Живой ленты (далее БП ЖЛ) при изменении сделки.
Связь со сделкой организована в виде поля типа Привязка к элементам CRM.
В дизайнере бизнес-процессов есть действие Изменение элемента списка, но ID элемента нам взять негде. Какие варианты выхода из этой ситуации?
Как автоматически записывать ID элементов БП ЖЛ при создании в сделку?
Для этого воспользуемся вебхуком.
Заходим в любую сделку и нажимаем Создать поле —> Строка.
Отмечаем что поле множественное. Показывать в карточке его необязательно, разве что для проверки в начале. Сохраняем.
Теперь нам нужно посмотреть код поля, переходим CRM —> Настройки —> Настройки CRM —> Настройки форм и отчетов —> Пользовательские поля —> Сделка —> Список полей.
Заходим в редактирование поля и сверху в адресной строке можно увидеть код поля:
В левом меню нажмите Приложения —> Разработчикам —> Другое —> Входящий вебхук.
Установите настройки. Просто начните набирать значение и оно отфильтруется в списке.
Метод — crm.deal.update;
Настройка прав — CRM(crm), Пользовательские поля. пользователя (user userfield).
Теперь нам нужно разместить код обновления сделки на стороннем ресурсе, где есть php. Можно создать папку на имеющемся у вас сайте.
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.
Для создания БП переходим CRM —> Настройки —> Настройки CRM —> Роботы и бизнес-процессы —> Бизнес-процессы —> Сделка —> Список шаблонов —> Добавить шаблон.
Вводим название, устанавливаем автоматический запуск при изменении.
Т.к. элементов может быть несколько, воспользуемся итератором:
Действие Запись в отчет
Действие Изменение элемента списка.
Поля — выбираем поля, которые надо изменить и устанавливаем значения.
где:
{=A63295_44386_37616_55855:Value} — вставка значения из действия Итератор.
Готово! Теперь при изменении сделки элементы бизнес-процесса Живой ленты будут обновляться. Эту же схему можно применить к универсальному списку.
Напишите мне
на почту
bitrix24@wersis.ru
Благодарю за обращение!
Я перезвоню как можно скорее!
Хорошего дня!
Понятное и доступное описание. Было полезно.
Благодарю!)