Перейти к содержимому
Статья · Интеграции и API

Обмен 1С с сайтом: как устроен, что ломается и как сделать надёжно

Обмен 1С с сайтом — это регулярная передача данных в обе стороны: из 1С на сайт уходят товары, цены и остатки, с сайта в 1С — заказы и оплаты. Технически это делается тремя способами: типовым протоколом обмена CommerceML (файлы XML по расписанию), обменом через API (веб-сервисы 1С, OData или свой шлюз) и простыми файловыми выгрузками по расписанию. Ломается обмен почти всегда не в самом протоколе, а вокруг него: обмен идёт по расписанию и молча падает, ошибку никто не видит, а по каждому полю не зафиксировано, какая система главная. Ниже — как устроен каждый способ, что именно отказывает и что делает обмен надёжным.

≈ 10 мин чтенияИнтеграции и API

Как устроен обмен данными 1С с сайтом: три рабочих способа

Под «обменом с сайтом» разные люди понимают разное: кто-то — галочку в типовой конфигурации, кто-то — ночную выгрузку CSV, кто-то — постоянный обмен по API. Все три варианта живые, и выбирают их не по моде, а по тому, что умеет ваша 1С и как быстро данные должны появляться на сайте.

1. Типовой протокол обмена (CommerceML)

Классическая схема: 1С формирует XML-пакеты — каталог с номенклатурой и отдельно предложения с ценами и остатками — и по расписанию отправляет их на специальный адрес сайта. Тем же протоколом 1С забирает заказы. Так работает штатный обмен коробочных CMS: со стороны сайта нужен модуль, который умеет принять пакет, со стороны 1С — настроенный узел обмена и регламентное задание.

Плюс — это стандарт, и в типовом магазине он заводится настройкой, а не разработкой. Минус — формат жёсткий: если ваша модель данных отличается от того, что предусмотрено стандартом (свои характеристики, несколько складов, персональные цены по договорам), приходится либо ломать модель под формат, либо дописывать обработку на обеих сторонах.

2. Обмен через API

1С выступает не отправителем файлов, а системой с интерфейсом: HTTP-сервисы, написанные под задачу, или автоматически публикуемый REST-интерфейс. Сайт или интеграционный слой обращается к ним точечно — «дай остатки по этим артикулам», «прими заказ». В обратную сторону 1С может сама вызывать API сайта при изменении данных.

Так строят обмен, когда данные нужны быстро и порционно, а не пакетом раз в час. Требование одно: 1С должна быть опубликована на веб-сервере, а её интерфейсы — реализованы вашим 1С-специалистом. Зато формат данных вы определяете сами, и он ложится на реальную модель, а не наоборот.

3. Файловые выгрузки по расписанию

Самый простой вариант: 1С регламентным заданием кладёт файл (XML, CSV, JSON) в каталог или на FTP, сайт его забирает и разбирает. Выглядит архаично, но это рабочее решение, когда публикация 1С наружу невозможна по требованиям безопасности или когда обмен нужен раз в сутки.

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

Какие данные ходят между 1С и сайтом и кто источник правды

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

Номенклатура и характеристики
Направление
1С → сайт
Источник правды
Частота
Редко: при изменении каталога
Цены, скидки, типы цен
Направление
1С → сайт
Источник правды
Частота
Ежедневно или чаще
Остатки по складам
Направление
1С → сайт
Источник правды
Частота
От нескольких минут до часа
Заказы
Направление
Сайт → 1С
Источник правды
Сайт
Частота
Сразу после оформления
Статусы заказов и отгрузки
Направление
1С → сайт
Источник правды
Частота
По изменению статуса
Оплаты
Направление
Эквайринг → сайт → 1С
Источник правды
Эквайринг
Частота
По вебхуку
Контрагенты и договоры
Направление
1С → сайт
Источник правды
Частота
Редко, для B2B-кабинета

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

Отдельный вопрос — по какому полю системы узнают один и тот же товар и одного и того же клиента. Обычно это артикул и внутренний идентификатор 1С. Если ключ выбран неудачно (например, наименование), обмен будет плодить дубли на любой опечатке.

Что ломается в обмене 1С с сайтом

Обмен редко ломается целиком — обычно он работает «в основном», и это хуже полного отказа: проблему замечают по последствиям. Узнаваемые отказы почти всегда из этого списка:

  • Обмен упал молча. Регламентное задание не выполнилось или обработка прервалась на середине пакета — на сайте остались вчерашние остатки, и никто об этом не знает.
  • Пакет не влезает в один проход. Каталог вырос, выгрузка не успевает за отведённое время и обрывается по таймауту — каждый раз на разном месте.
  • Заказ ушёл дважды. Сайт не получил подтверждения, повторил отправку, и в 1С появились два одинаковых заказа.
  • Заказ не ушёл вообще. 1С была недоступна в момент оформления, повторной попытки не предусмотрено — заказ находят по звонку клиента.
  • Данные расходятся из-за правок с двух сторон. Цену поменяли и в 1С, и на сайте; следующий обмен затирает одну из правок, и это выглядит как «сайт сам меняет цены».
  • Товар задвоился. Ключ сопоставления не совпал — в каталоге две карточки одного товара с разными остатками.
  • Обмен сломался после обновления. Обновили конфигурацию или изменили состав реквизитов — формат уехал, а тесты на обмен никто не гонял.
  • Диагноз один на все случаи: «обмен опять не сработал». Что именно не прошло, на каком шаге и почему — выяснить нечем.

Общее у всех пунктов одно: проблема не в протоколе, а в отсутствии обвязки. Обмен спроектирован как «должно сработать», а не как «что делаем, когда не сработало» — при том что вторая ситуация в интеграциях абсолютно штатная.

Как сделать обмен надёжным: очереди, повторы, журнал

Надёжный обмен отличается от ненадёжного не «правильным» форматом XML, а тем, что у него есть память и голос: он помнит, что не доставил, и умеет об этом сообщить. Практически это несколько механик, которые я закладываю в интеграционный слой:

  • Очередь и фоновая обработка. Заказ или пакет данных сначала принимается и ставится в очередь, а уже потом обрабатывается. Недоступность 1С в момент оформления заказа перестаёт быть потерей данных — становится задержкой.
  • Повторные попытки с нарастающим интервалом. Временный сбой сети или занятая база — не повод терять запись: обмен повторяется автоматически и только после исчерпания попыток попадает в ошибки.
  • Идемпотентность. У каждой передачи есть ключ, по которому повтор распознаётся как повтор. Это то, что закрывает задвоенные заказы раз и навсегда.
  • Порционность. Большой каталог передаётся частями с фиксацией прогресса: обрыв на середине не откатывает всю выгрузку в начало.
  • Журнал обменов. По каждой операции видно время, направление, объём, результат и — при ошибке — конкретную запись и причину отказа. Разбирать журнал должен уметь ваш сотрудник, а не только разработчик.
  • Ручной повтор. Кнопка «повторить обмен» для конкретной записи, чтобы исправленный заказ не требовал вмешательства программиста.
  • Мониторинг и уведомления. Критичный обмен, который не проходил дольше нормы, сам поднимает тревогу — вместо того чтобы ждать, пока это заметит клиент.

Разница видна на первом же инциденте. Без обвязки диагноз звучит как «обмен не сработал» и требует разработчика; с обвязкой — «заказ №… не прошёл, потому что у контрагента не заполнен ИНН» — и это чинит менеджер за минуту.

Как выглядит журнал обменов и карта систем

На странице услуги есть демо-схема на тестовых данных: карта систем и направлений обмена, журнал условных обменов со статусами (успех, повтор, ошибка) и таблица источников правды по типам данных. Реальные клиентские обмены содержат токены и данные покупателей, поэтому публикуется именно демо.

1С, обмен с сайтом: заказы, статусы и оплаты

Заказы — самая чувствительная часть обмена: остатки можно обновить через десять минут, а потерянный заказ означает потерянные деньги и объяснения с клиентом. Поэтому направление «сайт → 1С» проектируется отдельно от каталога, даже если технически едет тем же протоколом.

  1. 1Заказ фиксируется на стороне сайта и получает собственный номер — он существует независимо от того, доехал ли до учётной системы.
  2. 2Передача в 1С ставится в очередь: сбой на стороне учёта не отменяет заказ и не блокирует покупателя.
  3. 3На стороне 1С заказ сопоставляется с контрагентом и номенклатурой по заранее выбранным ключам; несопоставленные позиции попадают в ошибки, а не создают мусор в справочниках.
  4. 4Обратно едут статусы: подтверждён, собран, отгружен, — чтобы клиент видел их в кабинете, а менеджер не отвечал по памяти.
  5. 5Оплаты приходят вебхуком от эквайринга: сначала фиксируются на сайте, потом уходят в учёт. Источник правды по факту оплаты — платёжный сервис, а не менеджер.

Отдельно стоит договориться, что происходит с заказом, который в 1С принять нельзя: нового контрагента нет в справочнике, товар снят с продажи, цена не совпала. Такой заказ не должен ни теряться, ни ломать обмен — он должен попадать в понятную очередь разбора с указанием причины.

Если заказы приходят не только с сайта, но и от дилеров или менеджеров, тот же интеграционный слой обслуживает и их — например, заказы из B2B-кабинета едут в учёт по одному маршруту с розничными.

Выгрузка товаров из 1С на сайт и синхронизация остатков

Каталог и остатки — данные с принципиально разной динамикой, и обмен для них настраивается по-разному. Товары меняются редко и передаются целыми карточками; остатки меняются постоянно, и передавать вместе с ними весь каталог бессмысленно.

Выгрузка товаров из 1С на сайт
Как обычно
Полный пакет по расписанию, порциями; изображения и характеристики — вместе с карточкой
На что смотреть
Ключ сопоставления, обработка удалённых позиций, время выгрузки на большом каталоге
Цены
Как обычно
Отдельный пакет: тип цены под каждый сегмент покупателей
На что смотреть
Персональные цены B2B стандартный формат покрывает не всегда
Синхронизация остатков 1С и сайта
Как обычно
Частый обмен только изменившимися позициями
На что смотреть
Какой склад показываем, что делать с резервами, допустима ли задержка
Изображения и файлы
Как обычно
Отдельно от данных, по мере появления
На что смотреть
Самая тяжёлая часть пакета — чаще всего именно она рвёт выгрузку по таймауту

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

Второй вопрос — что считать остатком. У учётной системы это может быть несколько складов, резервы под заказы и товары в пути. Сайту нужно одно число, и решение «какое именно» принимает бизнес, а не интеграция: иначе магазин продаёт то, что уже зарезервировано, или прячет доступный товар.

Как настроить обмен 1С с сайтом: этапы и зоны ответственности

Настройка обмена — это не одна работа, а две, и делают их разные люди. Со стороны 1С нужен специалист, который отвечает за конфигурацию, правила обмена и формат выгрузки. Со стороны сайта — бэкенд, который принимает данные, обрабатывает ошибки и ведёт журнал. Моя зона — вторая.

Правила обмена и формат выгрузки
Чья зона
1С-специалист на вашей стороне
Что входит
Настройка узла обмена, состав данных, регламентные задания, корректная отдача и приём данных
Приём и отправка данных
Чья зона
Бэкенд — моя зона
Что входит
Интеграционный слой и API-шлюз, преобразование форматов, авторизация и ограничение доступа
Устойчивость обмена
Чья зона
Бэкенд — моя зона
Что входит
Очереди и фоновые задачи, повторные попытки, идемпотентность, лимиты внешних API
Видимость и контроль
Чья зона
Бэкенд — моя зона
Что входит
Журнал обменов, понятные ошибки вместо «молча не сработало», уведомления, ручной повтор
Решение об источнике правды
Чья зона
Совместно с вами
Что входит
По каждому типу данных одна главная система — это бизнес-решение, а не техническое

Если 1С-специалиста у вас нет, это нужно решить до старта: либо подключить его, либо ограничить интеграцию форматами, которые 1С уже умеет отдавать, — например регламентными выгрузками файлов. Без человека, отвечающего за сторону 1С, обмен упирается в первую же доработку конфигурации.

Дальше работа идёт по шагам: разбор систем и данных → проверка API и ограничений → карта обмена (что, куда, как часто, что делать при ошибке) → разработка интеграционного слоя → тестирование на тестовых данных → запуск и сопровождение. Первые итерации сознательно идут без боевых токенов и доступов — подробнее об этом на странице интеграций и API.

Если у вас 1С:УНФ

«Управление нашей фирмой» — частый случай у небольших компаний, и у неё есть штатный обмен с сайтом для типовых CMS. Если магазин собран на такой CMS и модель данных не выходит за рамки типовой, задача решается настройкой. Если сайт самописный, каталог сложнее типового или нужен обмен не только каталогом и заказами — обмен строится через опубликованные интерфейсы УНФ или регламентные выгрузки, а логика живёт в интеграционном слое.

Если у вас типовой магазин на коробочной CMS, обычная номенклатура и один склад — почти наверняка хватит штатного модуля обмена и настройки на стороне 1С. Заказная разработка тут не нужна, и я так и скажу на разборе: дешевле оплатить работу 1С-специалиста. Интеграционный слой оправдан, когда систем больше двух, формат не ложится на стандарт, обмен должен быть частым или его сбои уже стоят денег.

Сколько стоит настроить обмен 1С с сайтом

Цена зависит от количества систем, доступности их API, объёма данных и требований к надёжности. Ориентиры по форматам работы — те же, что на странице услуги:

Разбор задачи по интеграции
Когда это нужно
Понять системы, данные, API и риски до старта
Ориентир
от 40–100 тыс. ₽
Отдельная интеграция / шлюз
Когда это нужно
Связать две системы по понятному API
Ориентир
от 100–300 тыс. ₽
Сложный интеграционный слой
Когда это нужно
Несколько систем, очереди, мониторинг
Ориентир
от 300–500 тыс. ₽
Поддержка и развитие обменов
Когда это нужно
Контроль, доработки при изменении API
Ориентир
от 50–150 тыс. ₽/мес

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

Это ориентиры, а не смета: точная цифра появляется после разбора систем и данных. Со стороны 1С работу отдельно оценивает ваш 1С-специалист — эти расходы в ориентиры выше не входят.

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

Как настроить обмен 1С с сайтом, если магазин типовой? +

На типовой связке «коробочная CMS + типовая конфигурация 1С» обмен настраивается, а не разрабатывается: на стороне сайта включается модуль обмена, на стороне 1С — узел обмена и регламентное задание, дальше сверяются справочники и ключи сопоставления товаров. Разработка нужна там, где стандартный формат не покрывает модель данных: свои характеристики, несколько складов, персональные цены, обмен не только каталогом и заказами.

Почему обмен данных 1С с сайтом периодически падает? +

Чаще всего — не из-за протокола. Типичные причины: выгрузка не успевает за отведённое время и обрывается по таймауту, 1С была недоступна в момент передачи и повторной попытки не предусмотрено, изменился состав реквизитов после обновления конфигурации, не совпал ключ сопоставления. Лечится это обвязкой: очередь, повторные попытки, порционная передача и журнал, в котором видно конкретную запись и причину отказа.

Как часто нужна синхронизация остатков 1С и сайта? +

По правилу «чем чаще обмен, тем меньше его объём»: остатки передаются только по изменившимся позициям и могут ходить раз в несколько минут, а полная выгрузка каталога делается раз в сутки. Допустимая задержка — бизнес-решение: для розницы с быстрым оборотом это минуты, для оптового каталога часто достаточно раза в сутки.

Что делать, если заказы с сайта задваиваются в 1С? +

Задвоение почти всегда означает повторную отправку без защиты от дублей: сайт не получил подтверждения и отправил заказ ещё раз. Решение — идемпотентность: у каждой передачи есть ключ, по которому повтор распознаётся как повтор и не создаёт второй документ. Дополнительно помогает очередь с фиксацией статуса доставки каждой записи.

Возможен ли обмен 1С:УНФ с сайтом, если сайт самописный? +

Да. У УНФ есть штатный обмен с сайтом для типовых CMS, но для самописного сайта обмен строят через опубликованные интерфейсы УНФ или регламентные выгрузки файлов, а логику приёма, повторов и журналирования выносят в интеграционный слой на стороне сайта. Публикацию и формат выгрузки со стороны УНФ настраивает ваш 1С-специалист.

Первый шаг

Расскажите, что и куда должно ездить

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

Не присылайте пароли, токены, API-ключи и production-доступы в первом сообщении.

Мы используем cookie: технические — для работы сайта, и аналитические (Яндекс Метрика) — для обезличенной статистики посещений. Аналитика включается только с вашего согласия. Подробнее