Кейс: как мы интегрировали Битрикс24 и 1С Управление нашей фирмой

Продукты компании 1С стали неотъемлемой частью практически всех предприятий и компаний. В базах 1С хранится информация по товарам, сотрудникам, клиентам, заказам, ценообразованию и многое другое. В мае 2017 года у нашего клиента, который производит и продаёт матрасы и аксессуары для сна появилась необходимость интегрировать номенклатуру, клиентов и заказы из 1С с CRM Битрикс24, чтобы сотрудники работали с Битрикс24 без обращения к 1С.
Эмиль Алиев
Эмиль Алиев,
Программист

Проблема

На тот момент у Битрикс24 был достаточно узкий функционал по обмену с 1С. Контрагенты обменивались в одностороннем порядке, а заказы 1С создавали дела вместо сделок.

У клиента была широкая розничная сеть с магазинами по всей России, поэтому информация хранилась в нескольких 1С и обмен нужно было настроить так, чтобы все 1С присылали свои заказы в Битрикс24, а в 1С из Битрикс24 уходили только те заказы, которые относятся к определенной базе, чтобы не было дублирования заказов между разными 1С.

Заказы 1С должны были создавать сделки в Битрикс24, при этом если на стороне Битрикс24 что-то менялось эти изменения должны были попадать в 1С.

У сделок, которые пришли из 1С должны были назначаться те же ответственные, что и на стороне 1С, чтобы сотрудники видели только свои заказы.

Также нужно было настроить автоматическое распределение сделок на стороне Битрикс24 по разным направлениям в зависимости от 1С, с которой идет обмен.

Номенклатура 1С должна была совпадать с номенклатурой Битрикс24, чтобы при обмене в заказах корректно привязывались товары. Обмен с номенклатурой должен был быть только в рамках основной базы 1С, во все остальные базы номенклатуру нужно было направлять в виде комментария к заказу.

Нужно было, чтобы сотрудники на стороне 1С могли указывать промокоды для оффлайн-продаж из числа существующих. Промокоды для оффлайн-продаж — это функционал еще одного нашего модуля, ОЭРП (оценка эффективности рекламы и PR). Промокоды нужны, чтобы мы могли фиксировать источник, с которого пришел посетитель при покупке в салоне после подбора товара в интернет-магазине.

Нужно было, чтобы в 1С была возможность в заказе указывать бонусную карту и сумму заказа оплачиваемую бонусами. Функционал бонусных карт реализует ещё один наш модуль «Бонусная программа», предназначенный для формирования системы лояльности для постоянных покупателей.

Процесс

Для начала решили настроить обмен номенклатурой. Обмен стандартными средствами 1С выгружал недостаточно информации, поэтому решили настроить обмен через специальный модуль обмена с интернет магазином от Битрикс. Установили этот модуль на основную базу 1С и настроили обмен номенклатуры через стандартные средства Битрикс24. Таким образом, при создании сделки в CRM можно было выбирать товары из такой же как в 1С номенклатуры.

Как таковой отдельный обмен контрагентами не требовался, контрагенты нужны были только в рамках заказов, поэтому было решено в качестве основы для обмена заказами взять стандартный модуль обмена с интернет-магазином для 1С. Было решено доработать его на стороне Битрикс24 так, чтобы вместо заказов интернет-магазина создавались CRM-сделки и к ним прикреплялись корректные контрагенты и товары.

Для реализации такого рода обмена создали на стороне Битрикс24 новый модуль, реализующий логику обмена. Так как обмен будет реализовываться с разными базами 1С, было решено на стороне Битрикс24 добавить сущность «Узел обмена», в которой будут храниться параметры обмена с одной конкретной 1С, а также через эту сущность будет проходить привязка сделок к конкретной 1С для исключения дублирования заказов между базами 1С.

У узлов обмена добавили параметр, позволяющий обмениваться товарами заказов, либо передавать их в комментариях. В параметры узла обмена добавили «Префикс имени сделки», чтобы визуально различать сделки из разных узлов обмена. «Префикс имени контрагента» и «Префикс имени контакта». Добавили специальный параметр в узлах обмена, чтобы сделки из одного узла обмена добавлять в конкретное направление сделок. В итоге список узлов обмена выглядит так. узлы обмена

А так выглядит страница редактирования узла обмена. редактирование узла обмена

Установили на всех базах 1С модуль обмена с интернет-магазином Битрикс. На стороне Битрикс24 добавили специальную страницу, на которую будут обращаться базы данных 1С. Ещё добавили сотрудника, от имени которого будет происходить обмен. А на стороне 1С добавили узлы обмена, в качестве адреса сайта указали созданную на Битрикс24 страницу с добавлением параметра «Узел обмена на стороне Битрикс24», чтобы идентифицировать разные базы 1С на стороне Битрикс24.

На созданной ранее странице для обмена с 1С добавили логику авторизации и инициализации, чтобы модуль обмена на стороне 1С корректно работал. Добавили логику формирования XML-сделок, которые были изменены с момента последнего обмена. Так же добавили логику, с помощью которой модуль обмена на стороне 1С загружает файл с заказами, которые были изменены с момента последнего обмена на Битрикс24.

На основе данных, которые присылает 1С добавили создание и привязку сделок через специальное свойство к определенному обмену с 1С. Также если 1С прислала данные о контрагенте, ищем контрагента в Битрикс24 и, если он не найден, добавляем нового. После этого связываем сделку с контрагентом. Если в узле обмена разрешен обмен товарами по той же логике, связываем сделку с товарами.

При формировании XML с измененными сделками добавили проверку на то был ли данный заказ заблокирован на стороне 1С. Также в XML-фид добавили информацию по контрагентам и товарам (если это разрешено в параметрах узла обмена).

Добавили возможность привязки сотрудника 1С через табельный номер, чтобы синхронизировать ответственных из 1С и Битрикс24, выглядит это вот так. табельный номер Добавили ведение истории обращений базы 1С с хранением присланного фида с данными, для возможности, в случае ошибки, восстановить данные из конкретного фида. Визуально это выглядит так. история обмена На этой странице возможно посмотреть фид обмена, разобрать его на параметры, чтобы посмотреть что будет создано, и скачать XML. После разбора фида есть возможность применить разобранные данные.

Программист 1С со стороны клиента добавил возможность указывать промокод для оффлайн-продаж, для этого был создан специальный справочник, в котором хранятся все действующие промокоды, а у заказов было добавлено поле связи с данным справочником. После этого был доработан модуль обмена со стороны 1С так, чтобы он периодически обращался на Битрикс24 для получения новых промокодов. Также был доработан XML-фид заказов, формируемый на стороне 1С, в него было добавлено свойство промокод, как значение реквизитов.

На странице обмена с 1С со стороны Битрикс24 добавили логику формирования XML-фида с промокодами, которая становится активной после установки модуля ОЭРП. На стороне модуля ОЭРП добавили проверку промокода в реквизитах добавленной из 1С сделки и в случае его наличия, с помощью Google Api получаем источник посетителя.

Таким образом, мы получили возможность выбора промокода на стороне 1С из актуальных.

Программист 1С добавил у заказа 2 свойства «Номер бонусной карты» и «Сумма оплаченная бонусами». Модуль обмена со стороны 1С доработали так, чтобы эти свойствав попадали в XML-фид, как значения реквизитов.

На стороне модуля «Бонусная программа» при добавлении сделки из 1С добавили автоматическое создание транзакции на списание бонусов у клиента если в значениях реквизитов переданы свойства «Номер бонусной карты» и «Сумма оплаченная бонусами».

Итог

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

В обмене всегда участвуют не только покупатели и заказы, но и различная дополнительная информация, например информация из бонусных карт или источник привлечения рекламы. Хорошая интеграция — это комплексная интеграция.

Проведя такую интеграцию, мы отстранили сотрудников от лишнего взаимодействия с 1С, сконцентрировав их работу на Битрикс24.