Заметки
Как зарегистрировать вкладку приложения в карточке сделки
Как зарегистрировать вкладку приложения в карточке сделки: Placement, URL, параметры, BX24.installFinish.
Как зарегистрировать вкладку приложения в карточке сделки. Основной фокус: Placement, URL, параметры, BX24.installFinish.
Задача
Разобрать поведение локального или OAuth-приложения, placement, слайдер или установку.
Задача — как зарегистрировать вкладку приложения в карточке сделки. Placement, URL, параметры, BX24.installFinish.
Главное — не искать один универсальный метод, а сначала определить сущность, права и слой API, через который выполняется действие.
Как это устроено
Приложение работает внутри контекста портала: место встройки передаёт параметры, OAuth ограничивает права scope, а iframe накладывает ограничения браузера и безопасности.
Разложите сценарий на уровни: где появляется исходное значение, какой метод его меняет, кто выполняет действие и какое событие должно сработать после изменения.
Если сценарий проверяется под администратором, отдельно повторите его под обычным пользователем. Для прав, CRM, задач, Диска и приложений это часто даёт другой результат.
Рабочий подход
Проверяйте установку приложения, handler URL, права, scopes и фактический результат BX24.placement.info. Для карточек CRM не просите пользователя вводить ID вручную — берите его из контекста размещения.
Проверьте регистрацию размещения, завершение установки приложения, доступность handler URL и реальные параметры, которые приходят в iframe.
На коробке удобнее добавлять временное логирование рядом с местом выполнения кода, а в облаке — сохранять входящие и исходящие REST-запросы в свой журнал интеграции.
Частые ошибки
Если после placement.bind открывается install.php, часто проблема не в самом placement, а в URL обработчика, незавершённой установке или старой записи размещения.
- Проверять сценарий только под администратором и не видеть проблему прав обычного пользователя.
- Регистрировать placement до завершения установки и ждать, что он сразу появится у всех пользователей.
- Не логировать фактический запрос и ответ, из-за чего ошибка выглядит случайной.
Минимальный пример
Пример показывает только форму вызова. ID, права, обработчики и поля нужно заменить под свой портал.
BX24.callMethod('placement.bind', {
PLACEMENT: 'CRM_DEAL_DETAIL_TAB',
HANDLER: 'https://example.com/app/deal-tab.php',
TITLE: 'Моя вкладка'
}, function (result) {
console.log(result.data());
});