Перейти к содержанию

Введение в CRM

Модуль CRM crm хранит данные о клиентах и продажах. Он помогает вести обращение от первого контакта до сделки, счета или заказа. В CRM также хранятся дела сотрудников, товарные позиции, реквизиты и связи между объектами.

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

Примечание

Модуль CRM входит в Битрикс24 и отсутствует в стандартной поставке «1С-Битрикс: Управление сайтом».

Как CRM сопровождает продажу

Типовой сценарий состоит из нескольких шагов.

  1. CRM сохраняет новое обращение как лид или сразу связывает его с существующим клиентом.

  2. Для клиента создают контакт, компанию или обе записи.

  3. Работу над продажей ведут в сделке.

  4. Сделку перемещают по стадиям выбранного направления.

  5. К сделке добавляют товары, дела и связи с другими объектами.

  6. При необходимости для продажи создают коммерческое предложение, счет или заказ.

Обращение -> Клиент -> Сделка -> Предложение, счет или заказ

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

Когда использовать 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 используйте фабрику типа. Она загружает запись или создает объект в памяти, а операция проверяет и сохраняет изменения. Объекты образуют следующий маршрут.

Container -> Factory -> Item -> Operation -> Result

Методы объекта 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 хранит клиента и работу над продажей. Некоторые части сценария относятся к другим модулям.

Если сценарий затрагивает несколько модулей, разделите действия по их объектам. Сделка описывает продажу, а заказ оформляет покупку. Товарная позиция CRM хранит условия продажи, а товар каталога содержит торговые данные.

Связанные материалы

Выберите следующую статью по задаче.

  1. Схема работы CRM и основные объекты API — разберитесь, как связаны тип, фабрика, элемент и операция.

  2. Как выбрать API CRM — выберите фабрику, API конкретного объекта или REST API.

  3. Работа с элементами CRM — прочитайте, создайте, измените или удалите элемент.

  4. Поля и данные клиента — обработайте телефоны, адреса, реквизиты и пользовательские поля.

  5. Связи между элементами — свяжите сделку с клиентом или другим элементом.

  6. Направления и стадии — получите процесс элемента и измените его стадию.

  7. Смарт-процессы — создайте собственный тип CRM и работайте с его элементами.

  8. Права доступа в PHP API CRM — проверьте действие от имени пользователя.

  9. События и расширение поведения CRM — отреагируйте на изменение данных.

  10. Синхронизация CRM с внешней системой — организуйте повторяемый обмен данными.

Для массовой обработки и диагностики используйте рекомендации по производительности и ошибкам.