← К заметкам

Заметки

Как получить текущую сделку во встроенном приложении

Во вкладке карточки 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 нельзя считать разрешением на серверную операцию. Сервер проверяет авторизацию и доступ к этой сделке самостоятельно.

Источники