Битрикс24 глазами интегратора

Связи 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 Bitrix\Crm\ItemIdentifier;
use Bitrix\Crm\Service\Container;

$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 или прямые записи в базу данных на коробочных порталах.