CRM роботы 2.0 + AI (300+ роботов)

Перепривязать дополнительную компанию контакта

Робот «Перепривязать дополнительную компанию контакта» заменяет одну дополнительную связь контакта, сохраняя остальные компании и основную связь.

Настройки робота «Перепривязать дополнительную компанию контакта» в Битрикс24

Видимая часть формы настройки в Битрикс24. Скриншот показывает поля действия; он не подтверждает выполнение учебного примера.

Для кого и какую задачу решает

Администратору CRM, который переносит дополнительную связь контакта с одной компании на другую, сохраняя остальные привязки.

Полная замена списка компаний может случайно потерять основную компанию или чужие изменения. Робот требует полный прежний состав и переносит только обычную дополнительную связь. Основная связь и нестандартные роли не переносятся этим действием.

Параметры и подготовка

Поле Как заполнить
ID контакта (CONTACT_ID) Обязательное поле
Прежняя дополнительная компания (FROM_COMPANY_ID) Обязательное поле
Новая компания (TO_COMPANY_ID) Обязательное поле
Полный прежний состав связей JSON (EXPECTED_BINDINGS) Обязательное поле
Уникальный ключ операции (OPERATION_KEY) Обязательное поле

Перед настройкой выберите, откуда процесс получит каждое значение: постоянная настройка, поле карточки или результат предыдущего шага. Подписи в таблице соответствуют полям робота. Коды в скобках помогают различать похожие параметры при передаче данных между шагами.

Как использовать

  1. Прочитайте полный состав компаний контакта. Заполните CONTACT_ID, прежнюю FROM_COMPANY_ID и новую TO_COMPANY_ID; новая компания ещё не должна присутствовать в связях.
  2. Передайте EXPECTED_BINDINGS массивом всех прежних связей с COMPANY_ID, SORT, ROLE_ID, IS_PRIMARY. Переносимая связь должна иметь IS_PRIMARY=N и ROLE_ID=0.
  3. Задайте уникальный OPERATION_KEY. Не передавайте только одну переносимую строку, если у контакта есть другие связи.
  4. После выполнения проверьте changed/replayed и полный состав. При ошибке сначала выполните ручную сверку: новая компания могла добавиться до остановки удаления старой.

Как заполнить JSON-поля

Полный прежний состав связей JSON (EXPECTED_BINDINGS)

[
  {
    "COMPANY_ID": 50,
    "SORT": 10,
    "ROLE_ID": 0,
    "IS_PRIMARY": "Y"
  },
  {
    "COMPANY_ID": 51,
    "SORT": 20,
    "ROLE_ID": 0,
    "IS_PRIMARY": "N"
  }
]

Полный прежний список, полученный чтением связей контакта. Каждая запись содержит ровно эти четыре ключа. COMPANY_ID положительный, SORT и ROLE_ID неотрицательные, IS_PRIMARY строка Y/N. Переносимая FROM_COMPANY_ID=51 здесь дополнительная. [] не подходит: переносимая связь должна присутствовать.

Это массив: внешние квадратные скобки обязательны. Пустой массив [] отличается от объекта {}; возможность пустого списка определяется правилами этого поля, описанными ниже.

Учебный пример и ожидаемый результат

У учебного контакта 72 основная компания 50 и дополнительная 51. Ожидание содержит обе связи; для 51 указаны SORT=20, ROLE_ID=0, IS_PRIMARY=N. TO_COMPANY_ID=52, ключ binding-demo-20261015-01. Ожидается сохранение 50 и замена дополнительной 51 на 52 с прежним SORT. Сначала добавляется новая связь, затем после подтверждения удаляется старая.

Пример показывает подготовленные учебные данные. Фактический результат зависит от переданных значений и доступных данных вашего процесса.

Что возвращает и как продолжить процесс

  • «ID контакта» (contactId).
  • «Прежняя компания» (fromCompanyId).
  • «Новая компания» (toCompanyId).
  • «Связь заменена» (changed).
  • «Сохранённое подтверждение» (replayed).

Выходы содержат ID контакта, прежней и новой компаний, changed и replayed. Сохранённое подтверждение не означает разрешения повторить операцию с другими параметрами. Для нового переноса нужен новый согласованный снимок и ключ.

Выход «Статус выполнения» проверяйте перед передачей результата дальше. При отрицательном статусе прочитайте «Пояснение ошибки» и направьте процесс на исправление исходных данных. Успешный статус подтверждает выполнение действия; содержательные признаки результата проверяйте отдельно.

Ограничения и разбор ошибок

Принимает CONTACT_ID, FROM_COMPANY_ID, TO_COMPANY_ID, полный EXPECTED_BINDINGS JSON из COMPANY_ID/SORT/ROLE_ID/IS_PRIMARY и OPERATION_KEY. Исходная связь должна быть дополнительной IS_PRIMARY=N с ROLE_ID=0; новую компанию ещё нельзя иметь в списке. Основную связь и нестандартные роли этим роботом не переносит. Сначала добавляет новую компанию с прежним SORT и IS_PRIMARY=N, проверяет весь состав, затем удаляет прежнюю связь и снова читает состав. Другие связи полной заменой списка не перезаписывает. До 1000 связей. После неоднозначного результата дальнейшие операции и повторная отправка по ключу блокируются; уже выполненное добавление может сохраниться и требует ручной сверки. Общей транзакции/отката и CAS нет. Возвращает ID, changed/replayed; снимки связей в хранилище повторов не сохраняет.

Общей отмены двух шагов нет. После неизвестного результата дальнейшие операции по ключу блокируются. Робот не переносит основную компанию и не исправляет роли. Одновременные изменения не блокируются: при расхождении требуется сверить фактические связи.