Как реализовать интеграцию сторонней CRM-системы с 1С для синхронизации номенклатуры и заказов?

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

Использование HTTP-сервисов и Web-сервисов

Наиболее современным и рекомендуемым способом интеграции являются HTTP-сервисы. В отличие от тяжеловесных Web-сервисов (SOAP), HTTP-сервисы работают по архитектуре REST, передают данные в легком формате JSON и потребляют меньше ресурсов сервера. Разберем, как реализовать задачу с их помощью.

Для получения номенклатуры внешней системой в 1С создается HTTP-сервис с шаблоном, обрабатывающим GET-запросы. Система CRM отправляет запрос, а 1С возвращает массив объектов номенклатуры. Проанализируем пример логики обработки создания заказа при завершении сделки:

Когда в CRM-системе сделка переходит в статус «Завершена», CRM инициирует POST-запрос к вашему HTTP-сервису в 1С. В теле запроса передаются данные: ID клиента, список товаров, количество и цены. Внутри 1С программно создается документ ЗаказПокупателя или ЗаказКлиента.

Автоматический REST-интерфейс (OData)

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

  1. В конфигураторе 1С необходимо включить требуемые справочники (например, Номенклатура) и документы (ЗаказКлиента) в состав стандартного интерфейса OData.
  2. Опубликовать информационную базу на веб-сервере (IIS или Apache).
  3. CRM-система сможет выполнять GET-запросы к 1С для получения актуального списка товаров и POST-запросы для создания новых заказов.

Этот метод удобен тем, что структура API формируется платформой автоматически на основе метаданных 1С.

Механизм EnterpriseData

Для типовых конфигураций 1С (таких как Управление торговлей 11, ERP или УНФ) существует встроенный протокол EnterpriseData. Это формат обмена данными, основанный на XML. Разберем его преимущества:

В типовых решениях уже реализованы все необходимые механизмы для приема заказов и выгрузки справочников. Основная работа при этом ложится на сторону CRM-системы: ей необходимо сформировать пакет данных в формате EnterpriseData и отправить его в 1С. Однако стоит учитывать, что при значительных изменениях в структуре конфигурации (кастомные поля), стандартный пакет XDTO может потребовать сложной доработки.

Особенности реализации и обработки данных

При проектировании обмена важно уделить внимание техническим деталям, которые гарантируют стабильность системы. Проанализируем критически важные аспекты:

Транзакционная целостность. При создании заказа через API обязательно используйте метод проведения, а не просто записи. Это необходимо, чтобы документ отразился в регистрах накопления и зарезервировал товар на складе. В программном коде 1С это выглядит так:


НовыйЗаказ = Документы.ЗаказКлиента.СоздатьДокумент();
// Заполнение реквизитов из данных запроса
НовыйЗаказ.Записать(РежимЗаписиДокумента.Проведение);

Синхронизация по версии данных. Чтобы CRM-система не запрашивала каждый раз полный каталог номенклатуры, используйте поле ВерсияДанных (RowVersion). Это позволит реализовать инкрементальную выгрузку: CRM будет запрашивать только те позиции, которые изменились с момента последнего обмена.

Обработка дублей. Для исключения повторного создания одного и того же заказа (например, при сбое сети) рекомендуется передавать уникальный идентификатор сделки из CRM. В 1С этот ID следует записывать в дополнительный реквизит заказа. Перед созданием нового объекта необходимо выполнить поиск по этому реквизиту.

Лицензирование. Помните, что каждое активное соединение через HTTP/Web-сервис потребляет одну лицензию 1С. Для оптимизации работы высоконагруженных систем следует настроить повторное использование сеансов (Session Pooling) на веб-сервере.

Почему не стоит использовать прямой доступ к БД или COM

Рассмотрим альтернативные варианты, упомянутые в обсуждении, и выясним, почему они считаются плохой практикой:

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

← На главную