Заметки
Как получить текущую сделку во встроенном приложении
Во вкладке карточки ID сделки уже передан приложению. Он лежит в BX24.placement.info().options.ID. Метод возвращает объект сразу; callback ему передавать не нужно.
Прочитать сделку из карточки
Пример выполняется в приложении с подключённым BX24.js, встроенном в CRM_DEAL_DETAIL_TAB. SDK сначала нужно инициализировать.
BX24.init(function () {
const placement_info = BX24.placement.info();
const deal_id = Number(placement_info.options?.ID);
if (placement_info.placement !== 'CRM_DEAL_DETAIL_TAB' || !Number.isSafeInteger(deal_id) || deal_id <= 0) {
console.error('Откройте приложение во вкладке сохранённой сделки.');
return;
}
BX24.callMethod('crm.deal.get', { id: deal_id }, function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data());
});
});Почему ID иногда отсутствует
При запуске из общего меню приложения приходит контекст DEFAULT. У него нет текущей сделки. Другие места встраивания могут передавать иной набор параметров: пример выше намеренно принимает только вкладку сделки.
Полученный в браузере ID нельзя считать разрешением на серверную операцию. Сервер проверяет авторизацию и доступ к этой сделке самостоятельно.