Заметки
Не все места встройки видны в интерфейсе приложения
Почему нужного места встройки может не быть в интерфейсе настройки приложения и как добавить его через placement.bind.
Если нужного места встройки нет в интерфейсе приложения, это ещё не значит, что его нельзя
использовать. Часто его можно зарегистрировать вручную через placement.bind.
Проблема
В настройках локального приложения Bitrix24 отображаются не все места встройки. Из-за этого можно решить, что нужный виджет, вкладку или кнопку добавить нельзя.
У мест встройки есть технический код. Он передаётся в параметре PLACEMENT.
Интерфейс настройки приложения может не показывать все такие места, но REST-метод
placement.bind всё равно может с ними работать.
Обычно ситуация такая:
- нужно встроить виджет в конкретное место интерфейса Bitrix24;
- в визуальных настройках приложения такого пункта нет;
- в документации у места есть код
PLACEMENT; - обработчик регистрируется вручную через
placement.bind; - после установки приложения виджет появляется в нужном месте.
Поэтому сначала стоит проверить документацию и доступные placement-коды, а уже потом делать вывод, что нужное место недоступно.
Решение
Нужное место встройки можно зарегистрировать напрямую через REST-метод
placement.bind.
Для регистрации нужны:
- код места встройки в параметре
PLACEMENT; - URL обработчика в параметре
HANDLER; - название пункта, вкладки или кнопки в параметре
TITLE; - право
placement; - права на раздел, куда встраивается приложение, например
crm; - завершённая установка приложения.
Обычно такой вызов удобно делать во время установки приложения. Тогда после установки все нужные обработчики уже будут зарегистрированы.
Пример placement.bind
Ниже пример регистрации вкладки в карточке сделки. В реальной задаче нужно заменить
PLACEMENT, HANDLER и название вкладки.
BX24.callMethod(
'placement.bind',
{
PLACEMENT: 'CRM_DEAL_DETAIL_TAB',
HANDLER: 'https://example.com/local/apps/deal-tab/',
TITLE: 'Моя вкладка',
LANG_ALL: {
ru: {
TITLE: 'Моя вкладка',
},
en: {
TITLE: 'My tab',
},
},
},
function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log('Встройка зарегистрирована');
}
); Если встройка не появилась
Если виджет не появился, обычно проблема не в коде обработчика, а в самой регистрации: доступные места, права приложения и список уже привязанных обработчиков.
Метод placement.list показывает, какие места встройки доступны приложению
для указанного scope.
BX24.callMethod(
'placement.list',
{
SCOPE: 'crm',
},
function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data());
}
); Если нужного места нет в результате, проверь права приложения. Для разных разделов Bitrix24 нужны разные scope.
Метод placement.get показывает обработчики, которые уже зарегистрированы
для приложения. Так проще понять, сохранился ли вызов placement.bind.
BX24.callMethod(
'placement.get',
{},
function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data());
}
);