Интеграция RetailCRM c 1С
Одна из многих CRM-систем для работы с клиентами в интернете называется RetailCRM. Подробнее об этой системе можно посмотреть на сайте разработчиков этой системы https://www.retailcrm.ru/
RetailCRM предоставляет возможность интеграции с 1С: предприятие и с другими системами, например, Система управление сайтом 1С: битрикс ( далее CMS). Информация по интеграции с 1С поподробнее можно посмотреть в документации на сайте разработчиков
Один клиент обратился ко мне за советом – У его, в торговой фирме, установлена 1С розница, ред 2.2.7 с настроенным обменом с сайтом 1с: битрикс и теперь хотели приобрести RetailCRM. Однако было не ясно как построить бизнес процесс при трехкратном обмене 1С- Сайт – CRM
В отделе поддержки RetailCRM мне посоветовали такую схему интеграции 1С- Сайт – CRM

Согласно этой схеме, из 1С на сайт выгружается каталог товаров , а затем из сайта в CRM ( стрела показывает направление обмена ). В этом схеме нужно отключить обмен заказами между 1с и сайтом . Интернет-заказы создаются на сайте, затем мигрируют в CRM и оттуда в 1С.
Основные цели интеграции CRM-систем с 1 С в этой схеме – это обмен заказами и передача остатки товаров и цен в CRM и товарами.
Особенность интеграции RetailCRM с 1С
- У них нет законченного универсального решения интеграции для прикладных решений 1С. Они предоставляю шаблонное решение на примере «1С: Управление торговлей, редакция 11.2». Этот шаблон разработчики и партнеры могут использовать и адаптировать под любую конфигурацию 1С. Скачать шаблонное решение интеграции с 1С можно по ссылке https://github.com/retailcrm/1C-configuration.
- Для обмена заказами, выгрузки остатков и цен в систему RetailCRM используется API (интерфейс программирования приложений, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Описание API для разработчиков , занимающихся интеграцией с системой RetailCRM доступно по ссылке https://www.retailcrm.ru/docs/Developers/Index
- Выгрузка информации о товарах и структуры каталогов в систему RetailCRM происходит в формате ICML ( International Conference on Machine Learning – основная международная научная конференция по машинному обучению). Техническое описание этого формата ICML можно посмотреть по ссылке http://www.retailcrm.ru/docs/Developers/ICML . Возможно написать файл выгрузки самостоятельно в соответствии с описанием ниже или воспользоваться готовое решение модули интеграции .
Я скачал из сайта файл RetailCRM_8.3_УТ11.4_api_v5.cf, с целю интегрировать его с розницей его с розницей 2.2.7. У них объявлено, что данный модуль интеграции является рабочим на версии конфигурации Управление торговлей, редакция 11 (11.4.2.х) / 11 (11.4.2.х для api v5) Демо, платформа 1С:Предприятие 8.3 (8.3.11.2867). Этот файл конфигурации содержит следующие объекты конфигурации, которые должны быть добавлены в прикладном решении при объединении конфигураций:

- Подсистема – RetailCRMИнтеграция. Содержит в составе все объекты интеграции, перечисленные ниже
- Общий модуль – RetailCRM_Общий. Содержит набор процедур и функций общего назначения,
- Роль – RetailCRMИнтеграция
- Общие картинки – RetailCRM и RetailCRMlogo
- Подписка на событие – RetailCRM_документы . В подписке на события необходимо выбрать в качестве источника ДокументОбъект.ЗаказКлиента. Выгрузка данных по заказу из 1С в retailCRM происходит при проведении заказа. Для этих целей и нужна подписка на событие. Её настраиваем под нужную конфигурацию.
- Константа – RetailCRM_константы. Набор констант, которые используются как параметры настройки интеграции и заполнения документов
- Обработка – RetailCRMШаблонноеРешение. С помощью этой обработки инициализируют константы, выполняется загрузка заказов из retailCRM, выгрузка остатков и цен в retailCRM, выгрузка типов цен (если используются) и если есть необходимость то и выгрузка каталога номенклатуры в retailCRM.
Обратите внимание, что в данном шаблонном решении интеграции в отличии от интеграции с сайтом 1С: битрикс не используется план обмена и вместо этого используется набор констант для хранения параметров обмена.
При интеграции модуля в типовой конфигурации 1С розница 2.2.7 я решил отказаться от констант и обработки в шаблоне отказаться. Вместо констант в шаблоне, я использовал реквизиты плана обмена, а вместо формы обработки шаблона – форму узла обмена . Однако, задача оказалось сложной. Я обнаружил существенные недостатки интеграции с 1С, которые не позволяет использовать объект конфигурации План обмена:
- Не возможно загружать только измененные объекты информационной базы. Например, если у одной номенклатуры изменилась картинка, а у другой номенклатуры изменилась цена или остаток на складе, то нужно выгружать из 1С весь каталог товаров, все остатки и все цены . Я сначала загрузил группу товаров бытовая техника, а затем загрузил продукты питания. Я удивился, когда увидел, что элементы из группы бытовая техника пропали после загрузки группы справочника продукты питания. Я до сих пор, не понимаю почему разработчики создали разные механизмы для выгрузки каталога и для торговых приложений и заказов. Если посмотреть описание формата ICML для выгрузки каталога здесь , можно убедиться, что в начале файла отсутствует тег, который мог бы передать системе инструкцию о том. что выгружаемые данные в файле являются измененными и не нужно очистить весь каталог, а просто заменить найденные или добавлять новые.
- Система RetailCRM не предоставляет место у себя на сервере для создания файла каталога товаров в формате ICML как это делается, например, при обмене с сайтом 1С: Битрикс. Файл должен находится на каком-то HTTP -сервере, например, на сайте организации, а в настройке системы RetailCRM, нужно указать полный путь к этому файлу.
- Система RetailCRM подключается к файлу каталога только по протоколу HTTP . На момент написания этой статьи в системе RetailCRM не доступно подключение по FTP «File Transfer Protocol» для загрузки файла каталога . Если протокол HTTP был изначально предусмотрен создателями для осуществления передачи гипертекста и небольших текстовых файликов, то FTP служит для “транспортировки” практически любых файлов.
- Не возможно выгружать остатки на складах в разрезе характеристики номенклатуры. Я посмотрел описание метода /api/v5/store/inventories/upload, который позволяет обновлять остатки и закупочные цены по складам для торговых предложений. У этого метода отсутствует свойство характеристики номенклатуры. Кроме разных идентификаторов типа ID у метода есть свойства склад, цена и количество ( остаток) товаров
См. также