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

Видимая часть формы настройки в Битрикс24. Скриншот показывает поля действия; он не подтверждает выполнение учебного примера.
Для кого и какую задачу решает
Администратору CRM, который переносит дополнительную связь контакта с одной компании на другую, сохраняя остальные привязки.
Полная замена списка компаний может случайно потерять основную компанию или чужие изменения. Робот требует полный прежний состав и переносит только обычную дополнительную связь. Основная связь и нестандартные роли не переносятся этим действием.
Параметры и подготовка
| Поле | Как заполнить |
|---|---|
ID контакта (CONTACT_ID) |
Обязательное поле |
Прежняя дополнительная компания (FROM_COMPANY_ID) |
Обязательное поле |
Новая компания (TO_COMPANY_ID) |
Обязательное поле |
Полный прежний состав связей JSON (EXPECTED_BINDINGS) |
Обязательное поле |
Уникальный ключ операции (OPERATION_KEY) |
Обязательное поле |
Перед настройкой выберите, откуда процесс получит каждое значение: постоянная настройка, поле карточки или результат предыдущего шага. Подписи в таблице соответствуют полям робота. Коды в скобках помогают различать похожие параметры при передаче данных между шагами.
Как использовать
- Прочитайте полный состав компаний контакта. Заполните CONTACT_ID, прежнюю FROM_COMPANY_ID и новую TO_COMPANY_ID; новая компания ещё не должна присутствовать в связях.
- Передайте EXPECTED_BINDINGS массивом всех прежних связей с COMPANY_ID, SORT, ROLE_ID, IS_PRIMARY. Переносимая связь должна иметь IS_PRIMARY=N и ROLE_ID=0.
- Задайте уникальный OPERATION_KEY. Не передавайте только одну переносимую строку, если у контакта есть другие связи.
- После выполнения проверьте 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; снимки связей в хранилище повторов не сохраняет.
Общей отмены двух шагов нет. После неизвестного результата дальнейшие операции по ключу блокируются. Робот не переносит основную компанию и не исправляет роли. Одновременные изменения не блокируются: при расхождении требуется сверить фактические связи.