Интеграция CRM с 1С 8.3: протокол, права, сопоставление полей и запуск обмена

· 10 мин

Содержание

Чтобы подключить CRM к 1С 8.3, нужно три вещи: опубликовать базу на веб-сервере, завести в 1С отдельного пользователя для обмена и включить в базе стандартный интерфейс OData (или написать HTTP-сервис). После этого CRM обращается к адресу вида https://сервер/база/odata/standard.odata/ и читает или записывает контрагентов, номенклатуру, заказы и оплаты. Если у CRM есть готовый коннектор к 1С, публикация всё равно нужна — коннектор работает через тот же веб-доступ или через обмен файлами.

Основная работа при интеграции CRM и 1С — не «подключение», а договорённость о данных. Какая система главная для клиентов, какая для цен и остатков, кто создаёт документ продажи. Если это не решить до настройки, обмен начнёт плодить дубли уже в первый день.

Какой протокол обмена выбрать для связки CRM и 1С

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

СпособКогда подходитЧто нужноРиски
Готовый коннектор CRM (модуль или приложение из маркетплейса CRM)Типовая конфигурация, стандартный набор данныхПубликация базы или папка обмена, учётная записьНе все поля передаются, доработки платные
Стандартный интерфейс ODataCRM или интегратор умеет REST-запросыПубликация базы, состав объектов ODataДаёт доступ к «сырым» объектам, легко записать лишнее
HTTP-сервис в расширенииНужна своя логика: проверки, создание документов по правиламПрограммист 1С, расширение конфигурацииПоддержка кода при обновлениях
Веб-сервис SOAPCRM старая или корпоративная шина работает с WSDLПрограммист 1С, расширениеТяжелее отлаживать, чем REST
Обмен файлами (XML, JSON, CSV) по расписаниюНет постоянной связи между серверамиОбщая папка или FTP, регламентное заданиеЗадержка, ручной разбор сбоев

💡 Для большинства малых и средних компаний рабочая схема такая: справочники и остатки читаются через OData, а заказы и оплаты из CRM создаются через HTTP-сервис в расширении. Чтение безопасно, а создание документов идёт через ваш код с проверками.

Кто главный: распределение данных

Перед любой настройкой зафиксируйте на бумаге, какая система ведёт какие данные:

  • 👤 Клиенты и контакты — обычно CRM. В 1С они попадают при первой сделке.
  • 📦 Номенклатура, цены, остатки — 1С. В CRM только чтение.
  • 🧾 Заказы — создаются в CRM, в 1С передаются после согласования.
  • 💳 Оплаты и отгрузки — 1С. В CRM уходит только статус.
  • 🏢 Организации, склады, ставки НДС — 1С, в CRM как справочник выбора.

Одно правило — одна главная система на каждый объект. Двусторонняя правка одного и того же поля в двух местах почти всегда заканчивается конфликтом версий.

Подготовка базы 1С к подключению CRM

Подготовка состоит из трёх шагов: веб-публикация, пользователь, состав данных. Делается в Конфигураторе и в пользовательском режиме.

Шаг 1. Публикация базы на веб-сервере

На сервере, где стоит 1С, нужен веб-сервер: IIS на Windows или Apache. Публикацию делают из Конфигуратора, запущенного от имени администратора Windows:

  1. Откройте базу в Конфигураторе.
  2. Меню Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации латиницей, например crm_buh. Кириллица в адресе потом создаст проблемы с кодировкой.
  4. Поставьте флажок Публиковать стандартный интерфейс OData.
  5. Если будут HTTP-сервисы из расширения — отметьте их на соответствующей вкладке.
  6. Нажмите Опубликовать.

В результате появится адрес http://сервер/crm_buh/. В интернет его выставляют только через HTTPS и, по возможности, с ограничением по IP-адресам серверов CRM.

Не публикуйте базу наружу по голому HTTP. Логин и пароль пользователя обмена передаются при обычной (Basic) авторизации, и без шифрования их легко перехватить.

Шаг 2. Пользователь для обмена

Заведите отдельного пользователя, а не используйте учётку бухгалтера или администратора:

  • имя вроде CRM_Обмен, сложный пароль, вход только по паролю 1С;
  • в БП 3.0 и УТ 11 — через Администрирование → Настройки пользователей и прав → Пользователи;
  • права — минимально нужные: чтение справочников, при необходимости добавление заказов. Полные права не давайте.

Отдельный пользователь нужен и для разбора полётов: в журнале регистрации сразу видно, какие записи сделала CRM, а какие — люди.

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

Шаг 3. Состав данных OData

Включённый флажок в публикации ещё не открывает данные. Нужно указать, какие объекты доступны через OData. В типовых конфигурациях на БСП это делается обработкой «Настройка стандартного интерфейса OData»; в БП 3.0 ссылка на неё есть в разделе Администрирование → Синхронизация данных.

В обработке отметьте только то, что нужно CRM: например, справочники Контрагенты, Номенклатура, ДоговорыКонтрагентов, регистр цен, документ заказа. Там же назначается пользователь, от имени которого работает интерфейс.

Настройка подключения на стороне CRM

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

ПараметрПример значенияКомментарий
Адрес сервисаhttps://1c.firma.ru/crm_buh/odata/standard.odata/Для HTTP-сервиса — /hs/имя_сервиса/
ЛогинCRM_ОбменПользователь 1С, не Windows
Пароль—Хранится в настройках CRM
ФорматJSONOData по умолчанию отдаёт XML, JSON запрашивают параметром
Период опроса5–15 минутЧаще — лишняя нагрузка и лицензии

Проверьте доступ ещё до настройки CRM — обычным запросом из браузера или утилитой curl:

curl -u "CRM_Obmen:пароль" "https://1c.firma.ru/crm_buh/odata/standard.odata/Catalog_Контрагенты?$format=json&$top=5"

Если вернулся список из пяти контрагентов в JSON — публикация, права и состав OData настроены верно. Имена объектов в OData строятся по шаблону Catalog_Имя, Document_Имя, InformationRegister_Имя. Кириллицу в адресе большинство библиотек кодирует сами; если CRM этого не делает, имя объекта нужно передать в URL-кодировке.

💡 Пользователя для обмена удобнее завести с латинским именем. Не все CRM корректно передают кириллический логин в заголовке авторизации.

Если у CRM есть готовый коннектор

Коннекторы обычно ставятся с двух сторон: модуль или приложение в CRM плюс расширение или обработка в 1С. Порядок такой:

  1. Скачайте расширение 1С из личного кабинета CRM или у разработчика коннектора.
  2. В 1С: Администрирование → Печатные формы, отчеты и обработки → Расширения, кнопка Добавить из файла.
  3. Снимите флажок «Безопасный режим», если инструкция коннектора этого требует, и перезапустите программу.
  4. Введите в настройках коннектора адрес публикации, логин и ключ, выданный CRM.

Перед установкой расширения в рабочую базу проверьте его на копии. Расширение с ошибкой может мешать обновлению типовой конфигурации.

Сопоставление полей и справочников между системами

Маппинг — главная часть интеграции CRM с 1С. Ошибки здесь не видны сразу: обмен «работает», а через месяц в 1С три Ивановых и заказы без ставки НДС.

Ключ связи: GUID, а не название

У каждого объекта 1С есть уникальный идентификатор — в OData это поле Ref_Key. Сохраняйте его в CRM в отдельном поле карточки. Связывать клиентов по наименованию нельзя: «ООО Ромашка» и «Ромашка ООО» для обмена — разные записи.

Для первичной склейки уже существующих данных используйте ИНН и КПП у юрлиц, ИНН у ИП. Для физлиц — телефон или e-mail, и только после ручной проверки.

Типовая схема полей

Сопоставление полей
Компания (ИНН, КПП)→Справочник «Контрагенты», реквизиты ИНН и КПП
Название компании→Наименование и Полное наименование контрагента
Контакт клиента→Контактные лица контрагента
Товар или услуга в сделке→Справочник «Номенклатура» по GUID
Цена в сделке→Цена из регистра цен по нужному типу цен
Ставка НДС в CRM→Ставка НДС в строке документа
Валюта сделки→Справочник «Валюты»
Ответственный менеджер→Пользователь 1С или реквизит «Менеджер»
Стадия сделки «Выиграна»→Создание заказа покупателя в 1С

Что сопоставить отдельно

  • 💱 Ставки НДС. В CRM это часто просто число 20 или 10. В 1С — значение перечисления. Нужна явная таблица соответствия, включая «Без НДС» и 0%.
  • 📏 Единицы измерения. «шт», «Штука», «pcs» — заведите соответствие по коду ОКЕИ.
  • 🏬 Организации и склады. Если в 1С несколько организаций, CRM обязана передавать, от какой продавать. Иначе документ встанет на организацию по умолчанию.
  • 🔢 Числа и даты. Дробная часть цен, часовые пояса дат. 1С хранит дату без часового пояса, CRM — обычно в UTC. Разница в 3 часа сдвигает заказы, оформленные ночью, на другой день.

Первый запуск синхронизации и контроль ошибок

Не запускайте полную двустороннюю синхронизацию сразу. Безопасный порядок:

  1. Сделайте копию рабочей базы и подключите CRM сначала к ней.
  2. Выгрузите справочники из 1С в CRM только на чтение: номенклатуру, цены, контрагентов.
  3. Проверьте склейку по ИНН: нет ли дублей, у всех ли записей заполнен GUID.
  4. Включите передачу одного объекта из CRM — например, заказов. Создайте 5–10 тестовых сделок.
  5. Сверьте в 1С суммы, НДС, организацию, склад, контрагента в каждом заказе.
  6. Переключите интеграцию на рабочую базу и повторите первые три шага уже там.

Как отслеживать изменения

Чтобы CRM не скачивала все справочники при каждом опросе, нужна выборка «что изменилось». Варианты:

  • 🔁 План обмена с регистрацией изменений — надёжно, но требует программиста. Объект попадает в выгрузку, только если его меняли.
  • 📅 Дата изменения — у документов можно фильтровать по полю Date, у справочников стандартной даты изменения нет, её добавляют реквизитом в расширении.
  • 📋 Полная выгрузка ночью — простой вариант для небольших справочников до нескольких тысяч записей.

Где смотреть ошибки

  • Журнал регистрации 1С — Администрирование → Обслуживание → Журнал регистрации, отбор по пользователю CRM_Обмен. Здесь видны записи объектов и ошибки при их проведении.
  • Лог интеграции в CRM — коды ответов сервера и тексты ошибок 1С.
  • Логи веб-сервера — если запрос вообще не доходит до 1С.

Типовые проблемы интеграции CRM и 1С и как их устранить

Диагностика: выберите симптом

Дубли контрагентов

Самая частая жалоба после запуска. Причины почти всегда две: CRM создаёт контрагента, не проверив по ИНН, или GUID не сохраняется обратно в CRM после первой передачи. Исправляйте обе: сначала поиск по ИНН и КПП, потом создание, и обязательная запись Ref_Key в карточку CRM.

Уже созданные дубли в 1С объединяют штатной обработкой поиска и удаления дублей. В БП 3.0 она есть в разделе Администрирование → Обслуживание. Перед объединением сделайте резервную копию: операция переписывает ссылки во всех документах.

Медленный обмен

  • ⏱ Запрашивайте только нужные поля: параметр $select в OData сокращает ответ в разы.
  • 📄 Забирайте данные порциями — $top и $skip по 500–1000 записей.
  • 🌙 Тяжёлые выгрузки переносите на ночь, когда в базе нет бухгалтеров.
  • 🧮 Не считайте остатки в CRM по движениям. Берите готовые итоги из регистра или пишите для этого HTTP-сервис.

После обновления конфигурации обмен сломался

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

Когда интеграция с CRM не нужна

Иногда проще обойтись без неё:

  • менее 30–50 сделок в месяц — менеджер внесёт заказ в 1С вручную быстрее, чем вы настроите маппинг;
  • CRM используют только для звонков и задач, а продажи всё равно оформляет бухгалтер;
  • в 1С нет постоянного сервера и веб-сервера, база файловая на ноутбуке.

Ориентировочно настройка готового коннектора у интегратора стоит от 20–40 тыс. руб., интеграция с HTTP-сервисом под свои правила — от 80–150 тыс. руб. плюс сопровождение при обновлениях. Если экономия времени менеджеров меньше этих сумм за год, начните с выгрузки справочников только на чтение.

Частые вопросы

Можно ли подключить CRM к файловой базе 1С?
Да, файловую базу тоже публикуют на веб-сервере. Но при одновременной работе бухгалтеров и интеграции файловая база тормозит и чаще ловит блокировки. Для постоянного обмена лучше клиент-серверный вариант.
Нужна ли отдельная лицензия для интеграции?
Отдельной «лицензии на интеграцию» нет, но каждый сеанс, открытый через веб-сервер, занимает клиентскую лицензию. Заложите запас под интеграцию.
Можно ли подключить облачную CRM к 1С в облаке (1С:Фреш, хостинг)?
Да, если провайдер даёт доступ к OData или разрешает установку расширений. Уточните это у провайдера до выбора CRM: в части облаков OData закрыт.
Безопасно ли давать CRM права на запись в 1С?
Только на конкретные объекты и через проверяющий код. Права на запись документов через OData позволяют CRM создать или изменить что угодно в рамках прав, поэтому заказы лучше принимать HTTP-сервисом с проверками.
Что делать, если CRM и 1С изменили одного клиента одновременно?
Заранее назначьте главную систему для каждого поля. При конфликте побеждает главная, а изменение второй стороны пишется в лог для ручной проверки.