Введение в CRM
Модуль CRM crm хранит данные о клиентах и продажах. Он помогает вести обращение от первого контакта до сделки, счета или заказа. В CRM также хранятся дела сотрудников, товарные позиции, реквизиты и связи между объектами.
Разработчик использует модуль, чтобы читать и изменять данные CRM, связывать их с другими модулями или обмениваться данными с внешней системой.
Примечание
Модуль CRM входит в Битрикс24 и отсутствует в стандартной поставке «1С-Битрикс: Управление сайтом».
Как CRM сопровождает продажу
Типовой сценарий состоит из нескольких шагов.
-
CRM сохраняет новое обращение как лид или сразу связывает его с существующим клиентом.
-
Для клиента создают контакт, компанию или обе записи.
-
Работу над продажей ведут в сделке.
-
Сделку перемещают по стадиям выбранного направления.
-
К сделке добавляют товары, дела и связи с другими объектами.
-
При необходимости для продажи создают коммерческое предложение, счет или заказ.
Эта последовательность показывает общий путь данных. Она не обязательна для каждой продажи. Сделку можно создать без лида, а предложение, счет и заказ добавляют только тогда, когда они нужны процессу компании.
Когда использовать API модуля
Модуль подходит для следующих задач.
-
Получить или изменить лид, контакт, компанию, сделку и другой объект CRM.
-
Добавить собственный тип данных с помощью смарт-процесса.
-
Привязать к продаже клиента, товары, дела или другие элементы.
-
Переместить элемент по стадиям бизнес-процесса.
-
Реагировать на создание и изменение данных CRM.
-
Обмениваться клиентами и продажами с внешней системой.
PHP API используют в серверном коде коробочного Битрикс24. Для облачного Битрикс24 используйте REST API. Подробнее о выборе подхода читайте в статье Как выбрать API CRM.
Основные объекты
Каждый объект решает отдельную задачу в работе с клиентом.
Лид — обращение, по которому еще не принято решение о дальнейшей работе. При конвертации из лида можно создать сделку, контакт, компанию или несколько объектов.
Контакт — человек, с которым работает компания. В контакте хранят имя, способы связи и другие данные клиента.
Компания — организация, которая выступает клиентом или участником сделки. С компанией можно связать контакты и сделки.
Сделка — работа над отдельной продажей. Сделка проходит по стадиям и может быть связана с клиентом, товарами и делами.
Коммерческое предложение — отдельное предложение клиенту с условиями продажи.
Счет — объект для расчетов с клиентом.
Смарт-процесс — собственный тип данных CRM. Сначала администратор или код создает тип, затем пользователи и интеграции работают с его элементами.
Заказ — оформленная покупка из модуля sale. CRM связывает заказ с клиентом и продажей, а корзина, оплата и отгрузка остаются объектами Интернет-магазина.
В CRM есть готовые и создаваемые типы. Смарт-процессы относятся к создаваемым типам. У каждого элемента есть собственный ID. Для ссылки на запись храните идентификатор типа и ID элемента.
Связанные данные
Часть информации о продаже хранится отдельно от основного элемента CRM.
Дело — запланированное или выполненное взаимодействие. К делам относятся звонки, встречи и другие действия сотрудников. Тип дела обозначает константа CCrmOwnerType::Activity.
Товарная позиция — товар, количество и цена в сделке, предложении или другом поддерживаемом объекте. Товар и его торговые данные относятся к модулю Торговый каталог.
Реквизит — данные человека или организации для документов и расчетов. Для реквизитов и банковских реквизитов предусмотрены типы CCrmOwnerType::Requisite и CCrmOwnerType::BankDetail.
Связь — привязка одного элемента к другому. Например, сделку можно связать с контактом, компанией или элементом смарт-процесса.
Направление — отдельный процесс работы с элементами одного типа. Направление сделки имеет тип CCrmOwnerType::DealCategory.
Стадия — положение элемента внутри направления. У разных направлений сделок могут быть разные наборы стадий.
Для каждого вида данных используйте API конкретного объекта. Товарную позицию или дело нельзя обработать как обычное текстовое поле сделки. Подробности собраны в статьях Связи между элементами, Товары в элементах CRM, Дела и история взаимодействий и Поля и данные клиента.
API модуля
Для основных элементов CRM используйте фабрику типа. Она загружает запись или создает объект в памяти, а операция проверяет и сохраняет изменения. Объекты образуют следующий маршрут.
Методы объекта Item меняют данные в памяти. Для записи нужна операция фабрики. Назначение объектов и порядок сохранения приведены в статье Схема работы CRM и основные объекты API.
Фабрика есть не у каждого объекта и не всегда поддерживает все действия. Для дел, реквизитов и заказов выбирайте профильный API по статье Как выбрать API CRM.
Что подготовить для PHP-сценария
Перед первым запросом подключите пролог и модуль crm. Для чтения существующего элемента нужны его тип, ID и пользователь, чьи права учитывает код.
Для готовых типов используйте константы CCrmOwnerType, например CCrmOwnerType::Deal для сделки. Идентификаторы основных объектов приведены в статье Схема работы CRM и основные объекты API. Для смарт-процесса возьмите entityTypeId созданного типа.
Если ID элемента пришел из пользовательского запроса, читайте запись с учетом прав. Подготовка входных данных и пример такой выборки приведены в статье Работа с элементами CRM.
Первый запрос к элементу
Подготовьте ID существующей сделки и подставьте его вместо 123. Это минимальный сценарий для доверенного серверного кода, который уже проверил доступ к записи. Код подключит модуль, получит фабрику сделок и прочитает элемент. Если ID пришел из пользовательского запроса, используйте чтение с учетом прав.
Внимание
Перед запуском подключите пролог Bitrix Framework.
if (!\Bitrix\Main\Loader::includeModule('crm'))
{
throw new \RuntimeException('Не удалось подключить модуль CRM');
}
$dealId = 123;
$factory = \Bitrix\Crm\Service\Container::getInstance()->getFactory(\CCrmOwnerType::Deal);
if ($factory === null)
{
throw new \RuntimeException('Фабрика сделок недоступна');
}
$deal = $factory->getItem($dealId);
if ($deal === null)
{
throw new \RuntimeException('Сделка не найдена');
}
echo $deal->getId();
Метод getItem() возвращает элемент или null. Вывод ID подтверждает, что сделка найдена.
Для добавления, изменения или удаления элемента перейдите к статье Работа с элементами CRM. Сохраняйте изменения через операцию фабрики, чтобы выполнить проверки и связанные действия CRM.
Границы модуля
CRM хранит клиента и работу над продажей. Некоторые части сценария относятся к другим модулям.
-
Товары, цены и остатки хранит модуль Торговый каталог.
-
Корзину, заказ, оплату и отгрузку обрабатывает модуль Интернет-магазин.
-
Удаленный доступ из внешнего приложения предоставляет REST API Битрикс24.
-
Формирование файлов по шаблонам выполняет модуль Генератор документов.
Если сценарий затрагивает несколько модулей, разделите действия по их объектам. Сделка описывает продажу, а заказ оформляет покупку. Товарная позиция CRM хранит условия продажи, а товар каталога содержит торговые данные.
Связанные материалы
Выберите следующую статью по задаче.
-
Схема работы CRM и основные объекты API — разберитесь, как связаны тип, фабрика, элемент и операция.
-
Как выбрать API CRM — выберите фабрику, API конкретного объекта или REST API.
-
Работа с элементами CRM — прочитайте, создайте, измените или удалите элемент.
-
Поля и данные клиента — обработайте телефоны, адреса, реквизиты и пользовательские поля.
-
Связи между элементами — свяжите сделку с клиентом или другим элементом.
-
Направления и стадии — получите процесс элемента и измените его стадию.
-
Смарт-процессы — создайте собственный тип CRM и работайте с его элементами.
-
Права доступа в PHP API CRM — проверьте действие от имени пользователя.
-
События и расширение поведения CRM — отреагируйте на изменение данных.
-
Синхронизация CRM с внешней системой — организуйте повторяемый обмен данными.
Для массовой обработки и диагностики используйте рекомендации по производительности и ошибкам.