Как настроить обмен данными между 1С и Битрикс24
Содержание
Обмен между 1С и Битрикс24 настраивается через штатный механизм «Обмен с сайтом» по стандарту CommerceML: на стороне 1С создаётся узел обмена и расписание выгрузки, на стороне портала — точка приёма данных с логином и паролем. Товары, цены и остатки уходят из 1С в Битрикс24, заказы приходят обратно в учётную базу.
Начинать интеграцию нужно с выбора схемы — от этого зависит, что вообще настраивать. Для интернет-магазина внутри портала хватает встроенного CommerceML: он входит в типовые конфигурации (Управление торговлей, УНФ, Бухгалтерия, Розница, ERP) и отдельно не оплачивается. Для синхронизации CRM-сущностей (сделки, счета, контакты, компании) обмена каталогом мало — там работает коннектор из Битрикс24.Маркет или интеграция по REST API.
Какую схему обмена выбрать под свою задачу
Сначала ответьте на один вопрос: что синхронизируете — каталог магазина или данные CRM. Схемы не взаимозаменяемы, и часть проектов использует обе сразу.
🔹 Каталог интернет-магазина (номенклатура, цены, остатки, заказы). Работает штатный обмен по CommerceML 2.x. Настраивается без программиста, расписанием. Это основной сценарий для связки «1С + витрина Битрикс24».
🔹 CRM-обмен (контрагенты ↔ контакты и компании, счета, сделки, оплаты). Делается приложением-коннектором из Битрикс24.Маркет либо обменом по REST API через вебхуки портала. Часть приложений платные — ориентировочно от 0 до 3–5 тыс. ₽ в месяц за тариф, зависит от разработчика и числа сущностей.
🔹 Гибрид — каталог по CommerceML, а клиентов и оплаты через коннектор. Так чаще всего и делают у b2c-магазинов с менеджерским сопровождением сделок.
REST-обмен стоит особняком: он не про готовую кнопку, а про разработку. Через вебхуки портала можно синхронизировать почти любые сущности и настроить правила под себя, но это уже работа программиста и поддержка собственного кода. Для типового магазина он избыточен — начинайте с CommerceML и переходите к REST, только когда штатных возможностей реально не хватает.
| Что нужно синхронизировать | Механизм | Нужно платить отдельно |
|---|---|---|
| Товары, цены, остатки, картинки | CommerceML (встроен) | Нет |
| Заказы покупателей | CommerceML (встроен) | Нет |
| Сделки, контакты, счета CRM | Коннектор из Маркета / REST | Чаще да |
Если вы пока не уверены, что именно обменивать, включите только выгрузку каталога. Её можно запустить за полчаса, а обмен заказами и CRM добавить позже — они настраиваются отдельными галочками.
Что подготовить до начала настройки
Обмен падает чаще всего из-за мелочей, которые не проверили заранее. Пройдите короткий список до того, как открывать настройки.
Отдельный пользователь для обмена — не формальность. Через него идёт автоматическая выгрузка по расписанию, и по нему же в журнале регистрации видно, что именно обмен записал в базу. Не используйте для этого учётку живого сотрудника.
Сделайте резервную копию базы 1С перед первым полным обменом. Если в сопоставлении полей ошибётесь, встречная загрузка заказов может создать дубли контрагентов и номенклатуры, и чистить их потом дольше, чем поднять копию.
Настройка обмена на стороне 1С
Выгрузку каталога включают в разделе администрирования. В Бухгалтерии это Администрирование, в Управлении торговлей — НСИ и администрирование, в УНФ — раздел с настройками компании и интеграций. Внутри ищите группу настроек интеграции и пункт обмена с сайтом (в разных конфигурациях формулировка отличается — это один из тех случаев, где название может слегка меняться от релиза к релизу).
Порядок действий общий для всех типовых:
- Включите флаг обмена с сайтом в настройках интеграции.
- Создайте узел обмена (настройку обмена с сайтом) — это объект, который хранит параметры подключения к конкретному порталу.
- Укажите адрес точки обмена Битрикс24, логин и пароль пользователя портала, через которого идёт приём.
- Выберите тип выгрузки: только каталог, каталог + заказы, одностороннюю или двустороннюю.
- Отметьте, что выгружается: группы номенклатуры, виды цен (один или несколько), склады для остатков, картинки и характеристики.
- Настройте расписание — регламентное задание запуска обмена (например, каждые 15–30 минут).
Один важный момент про расписание. В файловой базе регламентные задания выполняются, только пока открыт сеанс или запущено отдельное задание обмена. В клиент-серверной базе их отрабатывает сервер сам. Если каталог не обновляется «по ночам» — почти всегда дело в том, что база файловая и ночью 1С просто закрыта.
Права пользователя обмена задавайте по принципу минимума: чтение номенклатуры и цен, запись заказов. Полный доступ узлу обмена не нужен и опасен — через него в базу пишет внешняя система.
Приём данных на стороне Битрикс24
Задача портала — принять выгрузку 1С по тому же протоколу CommerceML и отдать обратно заказы. Технически это одна точка обмена, адрес которой вы подставляете в узел обмена 1С.
В коробочной версии (1С-Битрикс: Управление сайтом) точка обмена стандартная — скрипт 1c_exchange.php в разделе магазина, а настройки лежат в Магазин → Настройки → Интеграция с 1С. Там включается обмен, задаётся тип данных (каталог, заказы) и создаётся пользователь с правом на обмен.
В облачном Битрикс24 интеграция с 1С включается в разделе магазина/интернет-магазина портала. Облачный интерфейс обновляется чаще коробки, поэтому надёжнее искать по разделу «Интернет-магазин» или «Магазин» и пункту интеграции с 1С, чем запоминать точный путь. После включения портал покажет адрес обмена и предложит задать логин и пароль — именно их вы переносите в узел обмена 1С.
Проверьте три вещи на стороне портала:
- 🔸 адрес обмена доступен снаружи (портал по https, не за закрытым VPN от сервера 1С);
- 🔸 у пользователя обмена есть право записывать каталог и читать заказы;
- 🔸 кодировка и версия CommerceML на портале совпадают с тем, что отдаёт 1С (обычно согласуется автоматически при первом сеансе).
Выгрузка товаров, цен и остатков: что с чем сопоставляется
Каталог 1С выгружает двумя пакетами: номенклатура и свойства идут одним файлом (import.xml), торговые предложения с ценами и остатками — другим (offers.xml). На портал они попадают в один инфоблок каталога, а характеристики товара становятся торговыми предложениями (SKU).
Ключ сопоставления — не название, а идентификатор. Если один и тот же товар в разных выгрузках получает разный ID, портал создаст дубль. Поэтому раз выбранный признак (внутренний код номенклатуры 1С или артикул) менять нельзя.
Несколько практических правил по каталогу:
- Цены. На сайт уходят только те виды цен, что отмечены в узле обмена. Если на витрине «0 ₽» — почти всегда вид цены не выбран или по товару он не заполнен.
- Остатки. Выгружаются по складам, указанным в настройке. Хотите показывать общий остаток — оставьте все розничные склады; хотите только магазинный — один конкретный.
- Картинки. Передаются файлами и «тяжелят» первый обмен. Большой каталог первый раз выгружайте вручную и в нерабочее время.
- Характеристики. Цвет/размер станут вариациями товара, только если в 1С они оформлены как характеристики номенклатуры, а не как отдельные позиции.
- Единицы измерения. Передаётся базовая единица; если продаёте в упаковках и коробках, коэффициенты упаковок надо заполнить в 1С, иначе на сайте останется только штука.
Не выгружайте на сайт весь справочник номенклатуры. В большинстве баз 1С кроме товаров витрины лежат услуги, тара, материалы и снятые с продажи позиции. В узле обмена ограничьте выгрузку конкретными группами (папками) номенклатуры или отбором по признаку — так первый обмен пройдёт быстрее, а на витрину не попадёт лишнее.
Отдельно про НДС и валюту. Ставка НДС уходит вместе с ценой, но цена на витрине показывается в той валюте и с тем включённым/выделенным НДС, как настроен вид цены в 1С. Если на сайте сумма отличается от ожидаемой — проверьте, с НДС или без него задан выгружаемый вид цены, и в какой он валюте.
Обмен заказами и статусами
Обратный поток — заказы с портала в 1С. Когда покупатель оформляет заказ в Битрикс24, при очередном сеансе обмена 1С забирает его и создаёт документ: в Управлении торговлей это заказ клиента, в Бухгалтерии — заказ или реализация в зависимости от настройки, в УНФ — заказ покупателя.
Контрагент по заказу ищется по заданному признаку (чаще email или телефон, для юрлиц — ИНН). Не найден — создаётся новый. Здесь и возникают дубли клиентов, если признак поиска выбран неудачно: один человек оформляет заказы с разных адресов и каждый раз заводится заново.
Статусы ходят в обе стороны. Покупатель меняет статус на сайте — 1С это видит; менеджер проводит оплату или отгрузку в 1С — статус заказа на портале обновляется при следующем сеансе. Чтобы это работало, статусы заказа в 1С и на портале надо один раз сопоставить в настройках обмена.
| Событие в 1С | Что происходит в Битрикс24 |
|---|---|
| Заказ оплачен (поступление на счёт/кассу) | Статус заказа → «Оплачен» |
| Заказ отгружен (реализация) | Статус → «Отгружен»/«Выполнен» |
| Заказ отменён | Статус → «Отменён» |
Если обмен заказами двусторонний, определите «ведущую» систему для статуса. Когда и портал, и 1С правят один заказ наперегонки, выигрывает тот, кто записал последним — и менеджер видит «скачущий» статус.
Что делать, если обмен не идёт
Сначала посмотрите, на чьей стороне сбой: 1С не смогла отправить или портал не принял. В 1С это видно по журналу регистрации и протоколу обмена узла, в Битрикс24 — в журнале обмена с 1С. Дальше — по симптому.
Полная выгрузка против обмена изменениями — ещё один частый источник путаницы. Штатно 1С после первого полного обмена шлёт только изменения. Если данные на сайте «застыли», принудительно запустите полную выгрузку в узле обмена — она перезальёт каталог целиком и выровняет расхождения.
Перед принудительной полной выгрузкой большого каталога выбирайте нерабочее время: сеанс нагружает и 1С, и портал, а на витрине в этот момент возможны временные расхождения по остаткам.