Интеграция CRM с 1С 8.3: протокол, права, сопоставление полей и запуск обмена
Содержание
Чтобы подключить CRM к 1С 8.3, нужно три вещи: опубликовать базу на веб-сервере, завести в 1С отдельного пользователя для обмена и включить в базе стандартный интерфейс OData (или написать HTTP-сервис). После этого CRM обращается к адресу вида https://сервер/база/odata/standard.odata/ и читает или записывает контрагентов, номенклатуру, заказы и оплаты. Если у CRM есть готовый коннектор к 1С, публикация всё равно нужна — коннектор работает через тот же веб-доступ или через обмен файлами.
Основная работа при интеграции CRM и 1С — не «подключение», а договорённость о данных. Какая система главная для клиентов, какая для цен и остатков, кто создаёт документ продажи. Если это не решить до настройки, обмен начнёт плодить дубли уже в первый день.
Какой протокол обмена выбрать для связки CRM и 1С
Способов подключения CRM к 1С пять. Выбор зависит от того, есть ли у вас программист 1С и насколько CRM гибкая на своей стороне.
| Способ | Когда подходит | Что нужно | Риски |
|---|---|---|---|
| Готовый коннектор CRM (модуль или приложение из маркетплейса CRM) | Типовая конфигурация, стандартный набор данных | Публикация базы или папка обмена, учётная запись | Не все поля передаются, доработки платные |
| Стандартный интерфейс OData | CRM или интегратор умеет REST-запросы | Публикация базы, состав объектов OData | Даёт доступ к «сырым» объектам, легко записать лишнее |
| HTTP-сервис в расширении | Нужна своя логика: проверки, создание документов по правилам | Программист 1С, расширение конфигурации | Поддержка кода при обновлениях |
| Веб-сервис SOAP | CRM старая или корпоративная шина работает с 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:
- Откройте базу в Конфигураторе.
- Меню
Администрирование → Публикация на веб-сервере. - Укажите имя публикации латиницей, например
crm_buh. Кириллица в адресе потом создаст проблемы с кодировкой. - Поставьте флажок Публиковать стандартный интерфейс OData.
- Если будут HTTP-сервисы из расширения — отметьте их на соответствующей вкладке.
- Нажмите
Опубликовать.
В результате появится адрес 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 |
| Формат | JSON | OData по умолчанию отдаёт 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С из личного кабинета CRM или у разработчика коннектора.
- В 1С:
Администрирование → Печатные формы, отчеты и обработки → Расширения, кнопкаДобавить из файла. - Снимите флажок «Безопасный режим», если инструкция коннектора этого требует, и перезапустите программу.
- Введите в настройках коннектора адрес публикации, логин и ключ, выданный CRM.
Перед установкой расширения в рабочую базу проверьте его на копии. Расширение с ошибкой может мешать обновлению типовой конфигурации.
Сопоставление полей и справочников между системами
Маппинг — главная часть интеграции CRM с 1С. Ошибки здесь не видны сразу: обмен «работает», а через месяц в 1С три Ивановых и заказы без ставки НДС.
Ключ связи: GUID, а не название
У каждого объекта 1С есть уникальный идентификатор — в OData это поле Ref_Key. Сохраняйте его в CRM в отдельном поле карточки. Связывать клиентов по наименованию нельзя: «ООО Ромашка» и «Ромашка ООО» для обмена — разные записи.
Для первичной склейки уже существующих данных используйте ИНН и КПП у юрлиц, ИНН у ИП. Для физлиц — телефон или e-mail, и только после ручной проверки.
Типовая схема полей
Что сопоставить отдельно
- 💱 Ставки НДС. В CRM это часто просто число 20 или 10. В 1С — значение перечисления. Нужна явная таблица соответствия, включая «Без НДС» и 0%.
- 📏 Единицы измерения. «шт», «Штука», «pcs» — заведите соответствие по коду ОКЕИ.
- 🏬 Организации и склады. Если в 1С несколько организаций, CRM обязана передавать, от какой продавать. Иначе документ встанет на организацию по умолчанию.
- 🔢 Числа и даты. Дробная часть цен, часовые пояса дат. 1С хранит дату без часового пояса, CRM — обычно в UTC. Разница в 3 часа сдвигает заказы, оформленные ночью, на другой день.
Первый запуск синхронизации и контроль ошибок
Не запускайте полную двустороннюю синхронизацию сразу. Безопасный порядок:
- Сделайте копию рабочей базы и подключите CRM сначала к ней.
- Выгрузите справочники из 1С в CRM только на чтение: номенклатуру, цены, контрагентов.
- Проверьте склейку по ИНН: нет ли дублей, у всех ли записей заполнен GUID.
- Включите передачу одного объекта из CRM — например, заказов. Создайте 5–10 тестовых сделок.
- Сверьте в 1С суммы, НДС, организацию, склад, контрагента в каждом заказе.
- Переключите интеграцию на рабочую базу и повторите первые три шага уже там.
Как отслеживать изменения
Чтобы 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 тыс. руб. плюс сопровождение при обновлениях. Если экономия времени менеджеров меньше этих сумм за год, начните с выгрузки справочников только на чтение.