Найти в Дзене
Битрикс24 изнутри

Расширяем CRM-формы

CRM-формы - это очень эффективный и гибко настраиваемый инструмент. Некоторые возможности его работы не предусмотрены стандартным функционалом, но буквально несколько строк в самом коде могут сотворить чудеса:) Многие знают что помимо стандартных возможностей в crm-формах, есть еще определенные трюки (например вывод двух форм на страницу или использование формы и для ввода и для виджета) и они вроде как даже доступно изложены в документации, так зачем же нужно писать эту статью? Проще пояснить на примере. У себя в компании мы решили реализовать не тривиальный кейс: подписка на рассылку. Рассылкой у нас занимается битрикс24, а клиентом (т.е. источником подписантов) будет наш веб-сайт. Нам совершенно не хотелось разрабатывать сложные решения (а учесть мы должны были много факторов: проверку дубликатов, согласия на обработку персональных данных, обязательные поля). Мы решили воспользоваться CRM-формой, как простым и продуманным элементом. Форму создали быстро, размещение и тестирование п
CRM-формы - это очень эффективный и гибко настраиваемый инструмент. Некоторые возможности его работы не предусмотрены стандартным функционалом, но буквально несколько строк в самом коде могут сотворить чудеса:)

Многие знают что помимо стандартных возможностей в crm-формах, есть еще определенные трюки (например вывод двух форм на страницу или использование формы и для ввода и для виджета) и они вроде как даже доступно изложены в документации, так зачем же нужно писать эту статью? Проще пояснить на примере.

У себя в компании мы решили реализовать не тривиальный кейс: подписка на рассылку. Рассылкой у нас занимается битрикс24, а клиентом (т.е. источником подписантов) будет наш веб-сайт. Нам совершенно не хотелось разрабатывать сложные решения (а учесть мы должны были много факторов: проверку дубликатов, согласия на обработку персональных данных, обязательные поля). Мы решили воспользоваться CRM-формой, как простым и продуманным элементом. Форму создали быстро, размещение и тестирование прошло успешно. На этом можно было и закончить рассказ, но вмешался отдел маркетинга: для существующих пользователей сайта нужно упростить ввод значений в поля (имя, почта и т.п.). Окрыленные успехом мы побежали искать... и не нашли как это сделать. Мы копнули документацию, изучили форум (писать в тех.поддержку не стали: решение нужно сейчас, а не через неделю) и пошли изучать исходники.

Редактирование нашей CRM-формы
Редактирование нашей CRM-формы

Мы рассмотрели внимательно конструктор объекта Bitrix24FormLoader, который и отвечает за создание формы. В обычном режиме его вызов находится в теге script (он генерируется автоматически) и напоминает он нечто такое:

b24form({"id":"28","lang":"ru","sec":"gv6049","type":"inline"});

Покопавшись, мы определили следующие явные параметры:

  • id - идентификатор формы
  • hash - назначение которого мы определить не смогли
  • postAjax - отвечающий за способ отправки (submit или ajax запрос)
  • mess - структура данных (массив) из двух именованных элементов sentError (сообщение при ошибке) и sentSuccess (сообщение при успехе)
  • currency - структура описывающая валюту. Очень полезная вещь, если планируете работать с товарами а у вас мультивалютный магазин.
  1. DECIMALS - Количество десятичных знаков дробной части цены влияет только на отображение цен
  2. DEC_POINT - Десятичная точка при выводе
  3. THOUSANDS_SEP - Разделитель тысяч при выводе
  4. FORMAT_STRING - Строка формата для вывода валюты (символ # будет заменен на цену)
  • isCallBackForm - является ли форма callback. Применение не обнаружено.
  • useReCaptcha - флаг использование reCaptcha
  • linkReCaptcha - ссылка на подключение reCaptcha
  • phoneFormatDataUrl - ссылка на файл со списком стран
  • phoneCountryCode - код страны
  • canRemoveCopyright - нужно ли скрыть "Заряжено в Битрикс24"
  • form - DOM-нода для рендеринга формы
  • guestLoader - лоадер для трекера
  • tracking - трекинговые параметры (по умолчанию: {data: {}, ga: false, gaPageView: false, ya: null})
  • options - структура с дополнительными опциями. Содержит ключи
  1. redirectDelay - задержка перед редиректом
  2. borders - (bool) наличие рамки у формы
  3. logo - флаг указывающий на необходимость отображения логотипа битрикс24 (только если canRemoveCopyright тоже true)
  • css - структура описывающая дополнительная стили. Может одновременно содержать ключи content (текст) и file (ссылка или массив ссылок)
  • presets - ассоциативная структура ключ-значение, где ключ - код заменяемого поля.
  • fields - структура состоящая из ключа values который содержит ассоциативный массив (ключ-значение), где ключем выступает код поля

Таким образом, если у нас есть веб-форма на создание контакта, состоящая из двух полей: Имя (контакта) и Почта (контакта), то можно указать значения полей.

b24form({"id":"28","lang":"ru","sec":"gv6049","type":"inline", "fields": {values:{'CONTACT_EMAIL':'test@test.ru'}}});

Интересно было бы услышать для чего вы применяли crm-формы и с какими трудностями столкнулись.