AI · 9 мин чтения

1С интеграция API: когда она лучше файлового обмена

1С интеграция API - шаг, к которому я подвожу клиента каждый раз, когда файловый обмен по CommerceML перестаёт успевать за изменениями на складе. Пока у магазина полсотни позиций и цены обновляются раз в неделю, выгрузка XML по расписанию работает годами без нареканий. Но стоит подключить несколько складов, эквайринг T‑Bank с мгновенным списанием остатка при оплате и менеджера, который меняет цену с телефона через мобильное приложение 1С, файловый обмен начинает опаздывать на часы. Я проходил через это и на магазинах на WooCommerce, и на Tilda-магазинах: в обоих случаях переход на HTTP-сервисы 1С закрывал именно ту проблему, которую выгрузка раз в четыре часа решить не могла. Дальше по пунктам: чем один способ отличается от другого на уровне механики, а не маркетинговых обещаний, и когда каждый оправдан деньгами и сроками.

Файловый обмен 1С: как работает выгрузка через CommerceML

Файловый обмен строится на протоколе CommerceML 2.x. 1С формирует набор XML-файлов, offers.xml с остатками и ценами, import.xml со справочником товаров, и кладёт их в папку обмена: локальную сетевую, FTP-каталог на хостинге или /bitrix/1c_exchange, если сайт на Битриксе. На стороне сайта скрипт по расписанию, обычно через cron, забирает файлы и раскладывает данные по базе. Для WooCommerce есть готовые плагины вроде 1C-Exchange, которые понимают этот формат из коробки.

У Tilda тоже есть штатный обмен по CommerceML, и это не общеизвестный факт: справка платформы прямо описывает его в разделе «Товары», который открывается после подключения модуля «Каталог товаров». Там включается синхронизация, которая забирает у 1С:Управление торговлей карточки, цены и остатки и отправляет заказы обратно в 1С, без единой строчки кода со стороны сайта. Но у этого штатного канала есть реальные границы. Тильда прямо пишет, что инструкция составлена на примере 1С:Управление торговлей 11, заявленный диапазон совместимости - версии от 10.3.4 и выше, а версии после 11.2 не тестировались. И слот один на всех: если склад клиента уже подключён к МойСкладу по тому же протоколу CommerceML, второй сервис туда не встанет, Тильда пускает одновременно только один источник. Вот в этих случаях, а также когда версия 1С не попадает в протестированный диапазон или нужна логика сложнее, чем простое обновление цен и остатков, я пишу отдельный PHP или Node скрипт, который раз в час-два скачивает файл по FTP и готовит его в формате, понятном штатному импорту Tilda. Писать напрямую в карточки товаров через Tilda API не получится в принципе: этот API даёт только методы на чтение опубликованных страниц проекта, ни одного метода для записи цены, остатка или заказа в нём нет.

Плюс такой схемы в том, что 1С не нужно превращать в веб-сервер: она может стоять на одном компьютере в бухгалтерии без статического IP и белого адреса, обмен идёт через промежуточную папку или FTP, которые настраиваются один раз и потом годами не требуют внимания.

Интеграция 1С через API: HTTP-сервисы и OData

Интеграция 1С через API устроена иначе. В 1С публикуется HTTP-сервис, либо используется встроенный интерфейс OData по адресу вида /odata/standard.odata/, и это уже требует, чтобы база 1С работала в клиент-серверном режиме и была доступна снаружи: через статический IP, домен или туннель до сервера с 1С. Сайт обращается к этому сервису напрямую, получает актуальный остаток в момент запроса и в том же запросе может создать заказ или зарезервировать товар.

На практике я собираю такие интеграции для WooCommerce-магазинов с оплатой через эквайринг T‑Bank: после успешной оплаты плагин сразу дёргает HTTP-сервис 1С, резервирует позицию и создаёт документ заказа, вместо того чтобы ждать следующей выгрузки. Отдельно часто ставлю n8n прослойкой между 1С и остальными системами: сценарий опрашивает OData каждые пять минут и раскидывает изменения в CRM и в aiogram-бота, который уведомляет менеджера о новом заказе или о том, что товар закончился.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Сравнение файлового обмена и API-интеграции с 1С

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

Критерий Файловый обмен CommerceML Интеграция через API
Скорость появления изменений на сайте Раз в 1-4 часа, по расписанию Секунды-минуты, по запросу
Нагрузка на сервер 1С Низкая, разовая выгрузка за цикл Постоянные запросы, зависит от частоты опроса
Требования к базе 1С Файловая или клиент-серверная, без внешнего доступа Клиент-серверная, доступна снаружи по IP или домену
Поведение при обрыве связи Догонит на следующем цикле выгрузки Нужна очередь и повторные попытки на стороне сайта
Срок первичной разработки 3-5 дней, готовые плагины или штатная синхронизация 2-6 недель, кастомный HTTP-сервис

Разработка HTTP-сервиса 1С требует доступа программиста к самой базе, знания конфигурации и часто привлечения штатного 1С-специалиста клиента для публикации веб-сервиса на сервере. Я обычно беру на себя часть с сайтом и внешней логикой, а публикацию сервиса на стороне 1С без доступа делает тот, кто её администрирует, это стоит учитывать в сроках заранее, а не выяснять на середине проекта.

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

Как проверить, что 1С готова к API-интеграции

Перед тем как обещать клиенту сроки на интеграцию 1С через API, я проверяю три вещи. Первое: версия платформы, потому что HTTP-сервисы и OData нормально работают начиная с 1С Предприятие 8.3, на более старых редакциях приходится городить костыли или оставаться на файловом обмене. Второе: режим работы базы, файловая база на несколько пользователей не выдержит постоянных запросов от сайта, нужен клиент-серверный вариант на SQL. Третье: кто на стороне клиента отвечает за 1С и может опубликовать веб-сервис или открыть порт, потому что без этого доступа я могу написать сколько угодно кода на стороне сайта, а достучаться до 1С не получится. Если хотя бы один пункт не выполняется, честнее сразу предложить файловый обмен или его комбинацию с n8n как прослойкой, чем растягивать проект на месяцы из-за инфраструктурных ограничений, которые не в зоне моей ответственности.

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

Когда хватает файлового обмена

Когда файлового обмена достаточно, я не предлагаю API только потому, что это выглядит современнее. Небольшой магазин на Tilda с одним складом и парой сотен товаров, где цены меняются раз в день-два, прекрасно живёт на штатной синхронизации через CommerceML или на выгрузке по расписанию, если версия 1С в неё не попадает. Один из последних таких проектов: каталог на триста позиций, 1С:Управление торговлей 8.3, выгрузка раз в три часа через cron, скрипт доработали под конкретную структуру XML экспорта как обычную точечную правку. Здесь смысла тратиться на HTTP-сервис и держать 1С доступной снаружи просто нет, разница в задержке в час-два для бизнеса незаметна.

Когда переходить на интеграцию 1С через API

Переходить на интеграцию 1С через API стоит там, где задержка в часы стоит денег или нервов. Несколько складов с постоянным движением остатков, эквайринг с мгновенным списанием при оплате, доставка СДЭК, где стоимость и сроки считаются по актуальным габаритам и остаткам из 1С прямо на сайте, несколько точек продаж, синхронизирующихся друг с другом через 1С как единый источник правды. Отдельная история - розница с высоким трафиком, где перепродажа закончившегося товара из-за устаревшей выгрузки превращается в возвраты и испорченные отзывы.

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

Сроки и стоимость подключения 1С к сайту

Стоимость и сроки сильно зависят от того, что уже есть в 1С и что нужно на выходе. Настройка или доработка обмена под Tilda, штатная синхронизация CommerceML там, где она проходит по версии, и скрипт-прослойка там, где нет, стоит от 3 000 рублей и занимает несколько дней. Комплексная интеграция с CRM, эквайрингом и СДЭК через кастомный скрипт стоит от 40 000 рублей. Если нужен отдельный сервис-прослойка на Laravel, который берёт на себя очереди, повторные попытки и логи обмена с 1С, это от 100 000 рублей. Быстрый вариант без написания отдельного бэкенда, когда синхронизацию собираю на n8n со сценариями опроса OData, стоит от 25 000 рублей. По срокам файловый обмен обычно занимает 3-5 дней от старта до продакшена, API-интеграция растягивается на 2-6 недель в зависимости от того, сколько сущностей нужно синхронизировать и сколько нюансов всплывает в конкретной конфигурации 1С.

После запуска обе схемы требуют присмотра, просто в разном объёме. Файловый обмен изредка ломается из-за смены структуры справочников в 1С, обычно раз в несколько месяцев после обновления конфигурации. API-интеграция требует внимания чаще: логи запросов, обработка случаев, когда 1С недоступна, версии OData после обновления платформы. Я не включаю бесконечную поддержку в стоимость разработки: для клиентов, которым нужен постоянный присмотр за интеграцией, веду отдельную техподдержку от 15 000 рублей в месяц, а не закладываю её как автоматический бонус к проекту.

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

Можно ли совмещать файловый обмен и API 1С в одном проекте?

Да, и на практике я так и делаю чаще, чем кажется логичным. Каталог и остатки по несрочным позициям идут через файловый обмен раз в несколько часов, а создание заказа и списание остатка при оплате через эквайринг T‑Bank проведены через отдельный HTTP-сервис 1С, который вызывается только в момент оплаты. Это дешевле полного перехода на API и закрывает главный риск: не продать то, чего уже нет на складе.

Сколько стоит интеграция 1С через API для интернет-магазина?

Комплексная интеграция с CRM, эквайрингом и доставкой СДЭК через кастомный скрипт стоит от 40 000 рублей, отдельный сервис-прослойка на Laravel с очередями и логированием обмена от 100 000 рублей. Итоговая цена зависит от количества сущностей, которые нужно синхронизировать, и от того, насколько аккуратно настроен обмен в самой 1С.

Нужен ли постоянный доступ к серверу 1С снаружи для API-интеграции?

Да, это ключевое отличие от файлового обмена. Базе 1С придётся работать в клиент-серверном режиме и быть доступной по статическому IP, домену или через туннель, иначе сайт не сможет достучаться до HTTP-сервиса или OData в реальном времени. Для файлового обмена такого требования нет: 1С может стоять на обычном компьютере в бухгалтерии без внешнего адреса, а для Tilda штатная синхронизация CommerceML вообще запускается самой 1С по расписанию, без внешнего адреса сайта.

Что делать, если 1С стоит в закрытом контуре без внешнего IP?

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

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно