Синхронизация контрагентов 1С и компаний Битрикс24

Мы продолжаем серию статей о практическом применении CRM-системы Битрикс24. Для тех, кто пропустил начало, напомним важные материалы:


Мы знаем, как внедрять Битрикс24 в компании, и готовы подсказать вам. Обращайтесь.
Сегодня мы говорим о способах загрузки базы контрагентов в CRM Битрикс24.

Статья большая, начнем с выводов:

  1. штатный импорт из csv работает, но крайне ограничен и плохо подходит для реальной практики;

  2. в модуле обмена Битрикс24 и 1С обмен контрагентами НЕ реализован;

  3. мы разработали два собственных программных модуля (“обработки” в терминах 1С: Предприятие), которые помогают решить эту задачу;

  4. мы готовы делиться нашими наработками (если вы “поделитесь” статьей в соцсетях и поможете нам стать знаменитыми);

  5. освоенная нами технология позволяет создавать и поддерживать различные виды обмена данными с Битрикс24.

Итак, к делу!

Что такое загрузка контрагентов в Битрикс24 и зачем она нужна?

Одна из самых востребованных задач при внедрении Битрикс24 – загрузка базы контрагентов из 1С CRM, 1С: Управление торговлей, 1С: Комплексная автоматизация и других ERP- и CRM-систем.

Даже если 1С нет, почти у всех компаний хоть в каком-то виде база клиентов есть, и ее нужно загрузить.
Все клиенты от всех систем ждут развитых возможностей по обмену информацией.

Мечта выглядит так:


Как можно загрузить базу клиентов из Excel в Битрикс24?

Существует несколько способов внешней интеграции Битрикс24, в том числе написание собственного приложения (что в итоге и пришлось сделать).

Но начнем с малого.

В Битрикс24 есть штатный импорт компаний и контактов. Что он умеет?
Он умеет загружать контакты и компании из файла csv стандартного формата (скачать  пример) .
Подобный файл можно собрать из “базы клиентов в экселе”, если она у вас есть.


Этот способ работает, но у него есть несколько недостатков:

  • процедура ручная, не предусмотрен запуск по расписанию или иная автоматизация;

  • нет возможности обновлять данные, уже имеющиеся в CRM. Только загрузка и создание новых;

  • синтаксис файла прост, однако на практике из 1С или другой системы такой файл можно получить только с помощью программистов. Учитывая что данные распределены по нескольким сущностям, задача не так проста. Придется оплатить несколько часов кода.

Мы решили задачу получения файла нужной структуры из 1С для упрощения подготовки первичного импорта компаний.

Если вы поделитесь статьей в соц.сетях, мы пришлем вам обработку, которая делает файл нужной для Битрикс24 структуры. Вот такой список полей поддерживается стандартным импортом (на строки разбито для удобства чтения).


Название компании

Логотип

Тип компании

Сфера деятельности

Кол-во сотрудников

Годовой оборот

Валюта

Комментарий

















Ответственный

Адрес

Улица

Квартира

Город

Район

Область

Индекс

















Страна

Юридический адрес

Улица (юридический адрес)

Квартира (юридический адрес)

Город (юридический адрес)

Район (юридический адрес)

Область (юридический адрес)

Индекс (юридический адрес)

















Страна (юридический адрес)

Рабочий телефон

Мобильный телефон

Номер факса

Домашний телефон

Номер пейджера

Другой телефон

Корпоративный сайт

















Личная страница

Страница Facebook

Страница LiveJournal

Микроблог Twitter

Другой сайт

Рабочий e-mail

Частный e-mail

Другой e-mail

















Контакт Skype

Контакт ICQ

Контакт MSN/Live!

Контакт Jabber

Другой контакт

Банковские реквизиты

Доступен для всех


Есть два наблюдения по этому типовому файлу импорта:

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

  • плохое: ИНН по умолчанию нет, и как следствие — никакой надежды на “обновление данных”, только “пополнение”.

С помощью стандартного импорта Битрикс24 и нашего скрипта выгрузки можно однократно загрузить вашу базу клиентов в Битрикс24.

О том, как научить программы обновлять данные без ошибок и регулярно — далее.

Как [не] работает штатный импорт контрагентов 1С в “компании” Битрикс24

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

Что есть в стандартных механизмах обмена:

Есть ощущение, что это не та функциональность, которая по-настоящему востребована, а просто демонстрация возможностей платформы и API обмена.

Реальных задач имеющиеся штатные средства не решают.

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

Что хочется видеть “в идеале”?

При этом возникает вопрос: как быть если товар, счет, компанию или заказ изменили в нескольких местах сразу? Считать “главной системой”, первоисточником только 1С или только интернет-магазин — неправильно. Налицо коллизия.

Как этот вопрос решен компанией-разработчиком? Решен он, надо признать, изящно, но крайне неудобно для клиентов. Поддерживаются лишь те виды обмена, которые исключают возникновение коллизий.

В итоге: загрузить компании из 1С в Битрикс24 нельзя. Понятно, но грустно.

Штатного решения не предлагается, и мы решили этот вопрос путем разработки собственного расширения/обработки для 1С (приложения 3 типа для Битрикс24) .

Решение задачи загрузки и обновления компаний Б24 из контрагентов 1С

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

Они позволяют сделать много полезного. Итак, что у нас есть:

  • конструктор бизнес-процессов для CRM и произвольных сущностей позволяет собрать из уже существующих функций Б24 “маршруты” действий и автоматизировать операции.
    Мы активно применяем это инструмент для разных задач, но для обмена с внешними системами он не подходит.

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

  • создание приложений 1, 2 или 3 типа для облачного Битрикс24, работающих с данными CRM, задачами, файлами.
    Для задач обмена этот способ подходит хорошо, им мы и воспользовались.


Мы разработали свое приложение 3 типа для передачи базы контрагентов 1С в ваш облачный Битрикс24.

Приложение не требует хостинга, реализовано в виде модуля/обработки платформы 1С (УТ).

Что умеет:

  1. получать код авторизации в облачном Битрикс24 и авторизоваться через OAuth

  2. передавать список контрагентов из 1С в компании Битрикс24 и заполнять все поля, которые есть в 1С

  3. при повторном импорте ОБНОВЛЯТЬ данные Битрикс24 из 1С, используя ИНН как уникальный ключ

Это позволяет настроить обмен и работать с 1С как с материнской системой. При этом в Битрикс24 по-прежнему можно создавать компании, они не удаляются при импорте.

В чем сила реализации импорта контрагентов через обработку 1С?

Это решение вообще не требует использования кода на PHP или какой-либо доработки облачной версии. Архитектурно реализация крайне проста: это просто код на языке 1С, не более того.

Попутно мы решили множество мелких затруднений, встречающихся почти у каждого клиента (конечно, было бы круто, если бы это сделали разработчики штатного модуля обмена):

  1. Реализована поддержка авторизации 1С:Предприятие в Б24 через механизм авторизации OAuth.

  2. Для задачи “обновления” компаний использовано поле синхронизации ORIGIN_ID. В него при первом импорте из 1С загружается ИНН.
    Первый экспорт компаний из 1С может будет “полным”, а при последующих будут возможны обновления.

  3. Заложена поддержка сценария, когда внутри одного партнера (компании в терминах Б24) есть несколько Контрагентов (Организации в Битрикс24).
    В данный момент это только заготовка (по состоянию на начало июня 2016 в API нет доступа к “множественным организациям внутри компании Б24”), поэтому функциональность заработает, как только Битрикс включит работу соответствующих методов.

  4. Мы готовы передавать в облачную CRM данные произвольных типов, справочные значения (например “валюты”, “тип организации”), или программно пополнить справочник. В обычном импорте это не требуется.

  5. Мы отладили код на работу с достаточно капризным REST API. При написании внешнего приложения — малоудобный процесс, некоторые методы не возвращают осмысленных сообщений об ошибках.

  6. Мы реализовали таймаут при экспорте, чтобы не попадать под ограничения облачного API (по ощущениям 1-3 запроса в секунду, не более.
    Если этого не сделать, вы сначала увидите нестабильную работу API (массовые ответы 503 “too many requests”, а при следующем обмене: 403 Forbidden).

Как работает импорт компаний из 1С в Битрикс24?

Пример компании в 1С

компания в 1С.png

Пример импортированной компании из 1С в Б24

Итоги, трудоемкость и перспективы

Созданы 2 приложения:

  1. экспорт контрагентов в CSV для разового импорта из 1С в Б24 (его мы даем бесплатно);

  2. приложение 3 типа для регулярного обновления данных о компаниях

Первым приложением мы готовы поделиться с вами, если вы “поделитесь” статьей в соцсетях.

Приложение регулярной синхронизации в первый раз мы делали около 80 часов (немало времени ушло на исследование деталей, отсутствующих в документации по API).

Второй раз любую подобную задачу (обмен контрагентами с особенностями, передачу документов, передачу заказов, контактов) можно сделать за 40-80 часов.

Технология освоена, готовы работать с вами.

Вместо постскриптума

Эта большая работа не могла бы получиться без помощи коллег:

  • нашего почти_штатного 1С-разработчика Анны Самохиной;

  • знающего все обо всем Алексея Шкарупа;

  • всегда готового помочь словом и делом продакт-менеджера 1С-Битрикс Сергея Вострикова;

Спасибо!

Вместо заключения

“Делитесь статьей”, получайте обработку выгрузки для Б24.
Я "поделился" статьей, прошу прислать файл