Как вывести дополнительные данные в карточку сделки в CRM Битрикс24

CRM — большой раздел Битрикс24, с которым ежедневно работают тысячи сотрудников. Большинство доработок платформы связаны именно с оптимизацией CRM. Разберемся с одной из распространенных задач по выводу дополнительных данных в карточке лида, сделки, контакта или компании.
Эмиль Алиев
Эмиль Алиев,
Программист

Вывести дополнительные данные в карточку можно тремя способами

  • Добавить кастомное пользовательское свойство
  • Для этого нужно зарегистрировать собственный тип пользовательских свойств, разработать собственный виджет для его отображения и таким образом модернизировать карточку CRM. Можно реализовать и в облачной и в коробочной версии.
  • С помощью js кода
  • С помощью js кода можно добавить произвольный блок в произвольное место карточки. Можно реализовать только в коробочной версии.
  • Добавить дополнительную вкладку в карточке CRM
  • В карточку CRM можно добавлять собственные вкладки с произвольными данными. Можно реализовать и в коробочной и в облачной версии (только для серверных приложений).
В этой статье остановимся подробнее на третьем способе — добавление дополнительной вкладки. Существует три варианта добавления дополнительной вкладки в карточку:
  1. через JavaScript — подходит только для коробочной версии;
  2. через REST-приложение — подходит только для серверных приложений;
  3. через универсальные списки — подходит и для коробочной и для облачной версии.
Разберем все три.

1. Добавляем дополнительную вкладку через JavaScript

Чтобы добавить дополнительную вкладку необходимо подключить собственный js файл на страницах с карточкой CRM. Самый простой способ это сделать — через обработчик события «onProlog» модуля «main».
После добавления данного кода на портал в карточке лида, сделки, контакта и компании должна появиться вкладка “Foo tab”.
foo tab
При нажатии произойдет ajax-запрос на адрес ‘/foo.php’, если данный адрес будет существовать, то в открытую вкладку будет подставлен ответ, который вернется с этого адреса.
foo php
Если пропустить объявление tabData.loader, во вкладке отобразится текст «Foo tab content» зеленым цветом.
green
При переключении между вкладками генерируется пользовательское событие «onEntityDetailsTabShow», на которое можно подписаться и добавить какую-то свою логику в уже существующую вкладку.
Но это уже другая история.

2. Добавляем новую вкладку через REST-приложение

Плюсы
  • Можно добавить и в облаке и в коробке
  • Содержимое вкладки может быть любым
Минусы
  • Работает только в серверном приложении
Для этого используем API-метод «placement.bind». Чтобы он сработал необходимо чтобы приложение имело доступ к CRM (crm) и Встраиванию приложений (placement).
placement
Подробнее об ограничениях на встраивание приложений читайте в курсе Приложения Битрикс24
При первоначальной установке приложения или же где-то в настройках приложения добавляем следующий код:
В итоге, в карточках CRM появится всё та же вкладка «Foo tab», при открытии которой откроется фрейм с контентом по ссылке ‘https://mysuperbitrix24app.ru/foo.php’. Ссылка на контент вкладки должна быть в том же домене, в котором работает приложение.
foo tab1

3. Добавляем новую вкладку через универсальные списки

Плюсы
  • Просто
  • Быстро
Минусы
  • Очень ограниченные возможности

В карточках CRM можно вывести вкладку с универсальным списком, при этом во вкладке будут отображаться элементы списка, которые связаны с текущей просматриваемой сущностью с возможностью добавления нового элемента списка.
элемент
Чтобы универсальный список начал отображаться в карточке, необходимо добавить в нем свойство с типом «Привязка к элементам CRM». В настройках свойства выбрать нужные CRM-сущности и установить галочку «Показывать в карточке CRM».
сущность

Итог

Добавив собственную вкладку в сделке, мы получили гибкий инструмент расширения стандартных возможностей модуля CRM под индивидуальные цели и задачи.

В зависимости от ситуации вы можете использовать разные инструменты добавления дополнительной вкладки в CRM. Иногда достаточно просто создать универсальный список нужной структуры и интегрировать его в карточку CRM. Если вы работаете с облаком и нужна какая-то более менее сложная логика во вкладке, то, безусловно, встраивание через приложение ваш единственный выход.

Если же вы работаете с коробкой, то можно использовать встраивание через приложение либо через js код. В данном случае встраивание через js код будет более гибким, так как дает больше свободы действий.