Связи CRM‑объектов в Битрикс24: как реализовать
В проектах автоматизации на Битрикс24 возникает задача: связать несколько CRM‑объектов между собой по принципу «многие ко многим».
Например: 🔹Карточка смарт‑процесса CLM‑цикла, в которой хранится информация о клиенте и автомобиле и нужно, чтобы эта карточка была связана со всеми сделками по этому клиенту и автомобилю. 🔹 Карточка смарт‑процесса группы компаний, где должны отображаться все сделки всех компаний из группы.
Почему это не работает штатно? Потому что в Битрикс24 отсутствует функционал связи CRM‑объектов по модели «многие ко многим». Сейчас реализована только схема «один ко многим»: одна карточка смарт‑процесса может быть привязана к множеству сделок, но не наоборот.
Как решить задачу? 1. В облачных порталах:
Для таких сценариев воспользуйтесь возможностями REST API. В бизнес‑процессе (роботе) вызовите метод crm.deal.update и пропишите нужные ID смарт‑процесса в поля сделки.
Пример запроса: { "id": {=Variable:ID_deal}, "fields": { "PARENT_ID_136": {=Variable:parentID}, "UF_CRM_1708091479": {=Variable:parentID} } } Чтобы не писать код руками, удобнее воспользоваться приложением из маркетплейса — например «REST Activity» от IT Solution, которое выполнит такие REST‑запросы прямо из конструктора бизнес‑процессов.
2. В коробочных порталах:
В «коробке» можно обойтись без API и записывать данные напрямую в таблицы CRM с помощью PHP‑активити в бизнес‑процессе.
Пример кода для добавления связи между сделкой и смарт‑процессом:
_use BitrixCrmItemIdentifier; use BitrixCrmServiceContainer;
$parentEntityTypeId = 134; // ID смарт‑процесса $parentEntityId = $this->getvariable('parentEntityId'); $childEntityTypeId = CCrmOwnerType::Deal; $childEntityId = $this->getvariable('childEntityId');
$parent = new ItemIdentifier($parentEntityTypeId, $parentEntityId); $child = new ItemIdentifier($childEntityTypeId, $childEntityId);
if (!Container::getInstance()->getRelationManager()->areItemsBound($parent, $child)) { Container::getInstance()->getRelationManager()->bindItems($parent, $child); }_
Так создаются записи связи напрямую в нужных таблицах базы данных CRM и реализовываются сценарии «все со всеми».
Стандартного функционала Битрикс24 недостаточно, чтобы построить связи CRM‑объектов по схеме «все со всеми». Но это легко реализовать — через REST API или прямые записи в базу данных на коробочных порталах.
Если тема для вас актуальна — ставьте «🔥», чтобы я понимал, стоит ли продолжать разбирать похожие кейсы.