Интеграция сайта с 1С: как устроен обмен и что в нём ломается
Интеграция сайта с 1С — это три потока данных, а не кнопка «настроить обмен»: из учёта на сайт уезжают номенклатура и цены, отдельно и чаще — остатки, обратно приезжают заказы и их статусы. Технически это либо файловый обмен по формату CommerceML, либо запросы к 1С через OData и HTTP-сервисы. Ломается всё почти всегда в одних местах: ключ сопоставления товара, размер шага выгрузки, права на папку обмена. Ниже — как это устроено, что чинить первым и когда обмен вам не нужен.
Что именно связывают, когда делают интеграцию сайта с 1С
Прежде чем выбирать технологию, распишите сущности и направления. Половина проблем в обменах — не про код: у одной и той же сущности оказалось два хозяина, цену правят и в 1С, и в админке сайта, а потом выясняют, чья версия верная.
| Что передаём | Направление | Как обычно | Периодичность |
|---|---|---|---|
| Разделы и номенклатура | 1С → сайт | Полная или частичная выгрузка каталога | Раз в сутки или по изменению |
| Цены и торговые предложения | 1С → сайт | Отдельный файл предложений или запрос к 1С | Раз в час — раз в сутки |
| Остатки | 1С → сайт | Лёгкая выгрузка только количеств или запрос по требованию | От 15 минут до онлайн |
| Заказы покупателей | Сайт → 1С | 1С забирает заказы запросом и подтверждает приём | Раз в 5–30 минут |
| Статус заказа, оплата, отгрузка | 1С → сайт | Обратная выгрузка статусов и номеров документов | Раз в 15–60 минут |
Первое решение проекта — источник истины по каждой строке таблицы. Пока это не зафиксировано письменно, обмен будет периодически «терять» правки: их перезатрёт следующая выгрузка.
Три способа обмена и когда какой брать
Вариантов по сути три, и выбор определяется не бюджетом, а тем, нужны ли данные онлайн.
- Файловый обмен по CommerceML. Стандарт 1С для обмена с интернет-магазином: товары уезжают одним XML, цены и предложения — другим, заказы забираются с сайта тем же протоколом. Самый дешёвый старт: на 1С-Битрикс, UMI.CMS, InSales, HostCMS настраивается мастером. Плата — задержка: обмен идёт по расписанию, типично раз в 15–60 минут.
- Стандартный интерфейс OData. Платформа сама публикует справочники и документы как REST-ресурсы, код в 1С писать не нужно. Требуется публикация базы на веб-сервере и роль `RemoteAccessOData` у пользователя. Хорош для точечного чтения, плохо переносит выгрузку больших регистров целиком.
- HTTP-сервис в конфигурации 1С. Свой эндпоинт, отдающий готовый ответ: остаток по конкретному складу одной строкой, цена со скидкой, приём заказа с проверкой. Дороже в разработке, но нагружает базу в разы меньше и даёт остаток в момент, когда клиент нажимает «купить».
- Готовые модули. У 1С:УНФ мастер интеграции живёт в разделе «CRM — Интернет-магазин», у Битрикса есть штатный модуль обмена. Типовой сценарий начинают с них.
| Критерий | Файловый обмен | Обмен через API |
|---|---|---|
| Настройка | Мастером, без программиста | Публикация базы и разработка |
| Актуальность | Задержка 15–60 минут | Цена и остаток в момент запроса |
| Гибкость | Только стандартные поля | Отдаёте ровно то, что нужно сайту |
| Большой каталог | Выгрузка идёт долго | Нагрузка зависит от числа запросов |
| Отладка | По логам и XML-файлам | По кодам ответов и трассировке |
На практике это комбинация: каталог файлами по расписанию, а остаток и резерв — запросом в момент оформления заказа.
Если рядом с сайтом в схеме появляется CRM, граница ответственности между системами — отдельная тема, она разобрана в материале про интеграцию с CRM.
Как работает штатный обмен 1С с сайтом на Битрикс
Битрикс сайт интеграция с 1С сделана по протоколу обмена с сайтом: 1С сама ходит на сайт HTTP-запросами к скрипту `1c_exchange.php` и проходит несколько режимов подряд. Последовательность стоит знать и нетехническому владельцу — по ней видно, на каком шаге всё встало.
- checkauth. 1С представляется сайту, сайт отвечает признаком успеха и данными сессии, которые дальше идут в каждом запросе. Ошибка здесь — почти всегда логин, права пользователя или закрытый доступ к скрипту.
- init. Сайт чистит каталог обмена и сообщает, поддерживается ли zip и какой размер файла принимается. Отсюда растут проблемы с большими архивами картинок.
- file. Файлы передаются в теле запроса и складываются в каталог обмена — на Битриксе это `/upload/1c_catalog/`. Нет прав на запись или места на диске — обмен встанет тут.
- import. Сайт разбирает файлы порциями и просит продолжить, пока не закончит. Порядок важен: сначала картинки, затем каталог, затем предложения с ценами и остатками.
- query и success. Для заказов направление обратное: тип обмена меняется на документы, 1С запрашивает заказы с сайта и подтверждает приём.
Вывод практический: обмен — не одна операция, а серия шагов с общей сессией. Если он «просто не идёт», начинают с журнала обмена и последнего успешного режима, а не с перенастройки всего подряд.
Остатки и цены: почему цифра на сайте не совпадает с 1С
Самая частая претензия после запуска — «на сайте есть, в 1С нет». Сломанный обмен тут почти ни при чём, обычно причина одна из пяти.
- Задержка выгрузки. Между продажей в магазине и обновлением карточки проходит цикл обмена. На штучном товаре лечится не ускорением обмена, а запросом остатка при оформлении заказа.
- Резерв не учтён. Остаток в 1С уменьшается в момент отгрузки, а не заказа: сайт показывает количество, которое уже обещано другому клиенту.
- Несколько складов. Сайт торгует с одного склада, а выгружается сумма по всем — или наоборот. Клиент оформляет то, чего в его городе нет.
- Тип цены не тот. Цены не выгружаются или приходят нулевыми, если в 1С не выбран тип цены для обмена или у товара нет цены этого типа. Смотреть в настройках выгрузки, а не в коде сайта.
- Кэш сайта. Каталог отдаётся из кэша, и цифра обновится только после сброса. Расхождение проверяют и на витрине, и в админке.
Правило, снимающее половину споров: витринный остаток справочный, обязательство возникает при оформлении заказа. Сайт показывает «в наличии» из выгрузки, а перед подтверждением делает точечный запрос в 1С.
Пока читаете — можно сразу проверить свою задачу. Опишите процесс, и я скажу, решается ли он и во сколько обойдётся.
Что ломается в обменах и как это чинится
Набор поломок конечен и хорошо известен. Ниже — самые частые и то, что реально помогает.
Дубли номенклатуры
Товары сопоставляются не по названию и не по артикулу, а по внешнему коду — GUID объекта 1С, который сайт хранит в отдельном поле. Дубли появляются, когда ключ теряется: базу развернули заново, товар пересоздали, каталог залили из Excel без внешних кодов. Лечение нудное и единственное: сопоставить позиции по артикулу, проставить внешние коды и только потом запускать обмен. Чистка дублей без восстановления ключей даёт тот же результат через неделю.
Обмен зависает или отдаёт ошибку сервера
Классика: без картинок обмен проходит, с картинками падает. Три точки проверки. Ограничения PHP: время выполнения, лимит памяти, максимальный размер загружаемого файла. Размер порции: шаг выгрузки уменьшают до сотен или единиц позиций. Время шага обмена: интервалы в 1–5 секунд дают скрипту завершиться и продолжить с того же места вместо упора в таймаут.
Данные выгружаются, но на сайте не меняются
Обычно виноват механизм контрольных сумм: 1С считает объект неизменившимся и не включает его в выгрузку — проверяется отключением контрольных сумм на один обмен. Второй кандидат — несовместимые версии модуля обмена и конфигурации после обновления одной из сторон.
Заказы не уезжают в 1С
Три типовые причины: в настройках выгрузки стоит отбор (например, только оплаченные); заказ уже выгружался однажды, а повторно протокол его не отдаёт; заказ не проходит контроль в 1С — не найден контрагент, нет склада или договора. Смотрят журнал обмена, а не пересобирают интеграцию.
Обмен без сверки — это обмен, о поломке которого вы узнаёте от клиента. Минимум: ежедневная сверка количеств позиций и заказов между системами плюс уведомление, если обмен не прошёл дважды подряд. Как собрать это в регулярный отчёт — в материале про отчётность в автоматизации.
Сроки, стоимость и порядок работ
- Карта данных. Таблица из первого раздела под ваш бизнес: сущности, хозяин, ключ, направление, периодичность.
- Доступы и тестовый контур. Пользователь 1С с минимальными правами, копия базы, тестовый сайт. Отладка в боевой базе — способ получить сотню лишних документов.
- Настройка типового обмена. На типовой конфигурации и CMS штатный модуль закрывает большую часть задач.
- Доработка. Только то, чего в типовом нет: свои поля и правила цен, онлайн-остаток, нестандартный сценарий заказа.
- Обкатка и наблюдение. Неделя работы под присмотром, журнал обменов, сверки, алерты.
Ориентир по деньгам: настройка типового обмена на типовой связке 1С и CMS — от 40 000 ₽; доработки под свои поля, склады и правила цен — от 120 000 ₽; онлайн-остаток и приём заказов через HTTP-сервис в 1С — от 200 000 ₽. Множитель цены — не количество товаров, а количество исключений в ваших правилах.
Когда интеграция не нужна
Часть задач, под которые заказывают интеграцию, дешевле закрыть без неё.
- Каталог почти не меняется. Пятьдесят позиций и цены раз в квартал — импорт файла руками дешевле сопровождения обмена.
- Заказов немного. Десять заказов в день переносятся в 1С быстрее, чем разбирается очередной сбой обмена.
- Учёт не наведён. Задвоенная номенклатура, остатки без разреза по складам, невыбранный тип цен — интеграция вынесет этот беспорядок на витрину. Сначала учёт, потом обмен.
- Перенос разовый. Залить каталог один раз — это импорт, а не интеграция.
Честный критерий: обмен окупается, когда одни и те же данные вбиваются руками в две системы каждый день и когда ошибка переноса стоит денег — проданного отсутствующего товара, неверной цены, потерянного заказа.
Частые вопросы
Сколько стоит интеграция сайта с 1С?
Настройка типового обмена на типовой связке 1С и CMS — от 40 000 ₽. Обмен с доработками под свои склады, типы цен и поля — от 120 000 ₽. Онлайн-остаток и приём заказов через HTTP-сервис в 1С — от 200 000 ₽. Цену определяет число исключений в ваших правилах, а не размер каталога.
Как сделать интеграцию 1С с сайтом на Битриксе?
На типовой связке — штатным модулем обмена: 1С по расписанию сама обращается к скрипту обмена на сайте, передаёт файлы каталога и предложений и забирает заказы. Разработка нужна там, где не хватает стандартных полей или требуется остаток в реальном времени.
Почему на сайте и в 1С разные остатки?
Чаще всего из-за задержки обмена, неучтённого резерва, суммирования нескольких складов или кэша каталога. Надёжное решение — считать витринный остаток справочным, а перед подтверждением заказа запрашивать актуальное количество прямо у 1С.
Откуда берутся дубли товаров после обмена?
Из потерянного ключа сопоставления. Товары связываются по GUID объекта 1С, который хранится на сайте во внешнем коде. Если каталог однажды залили без внешних кодов или базу пересоздали, обмен считает позиции новыми. Лечится восстановлением внешних кодов, а не удалением дублей.
Можно ли обойтись без доработки конфигурации 1С?
Часто да. Файловый обмен по CommerceML и стандартный интерфейс OData работают без изменения конфигурации — OData требует публикации базы на веб-сервере и роли RemoteAccessOData у пользователя. Доработка нужна под нестандартные сценарии и тяжёлые запросы, где нужен свой HTTP-сервис.
Почему обмен зависает на выгрузке каталога?
Типично упирается в ограничения сервера или размер порции. Проверяют время выполнения и лимит памяти PHP, права на каталог обмена и свободное место, уменьшают шаг выгрузки и время шага обмена, а первый запуск делают без картинок, чтобы отделить проблему каталога от проблемы файлов.
Читайте дальше
Разобрать ваш обмен с 1С
Опишите, что за конфигурация, какая CMS и что уже расходится — скажу, хватит ли типового модуля, сколько займёт доработка и что можно не автоматизировать.
Обсудить задачу