Обмен 1С с сайтом и маркетплейсами: почему снимок остатков не работает

06.08.26

Интеграция - WEB-интеграция

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

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

Разберём, где такие обмены рвутся и какая архитектура это переживает.

 

Проблема снимка

Классический обмен устроен как снимок: в момент T выгружаем остатки по всей номенклатуре, отправляем, витрина обновляется. Логика простая и понятная, но у неё есть свойство, которое обнаруживается не сразу.

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

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

Увеличение частоты выгрузки не помогает: вы упираетесь в нагрузку на базу и в лимиты API площадок, а корень проблемы остаётся.

 

Событийная модель

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

Что это меняет по сути:

Во-первых, пересчёт задним числом перестаёт быть проблемой — он сам по себе является событием и уходит в очередь наравне с остальными.

Во-вторых, объём трафика падает на порядок: вы передаёте изменения, а не всю номенклатуру каждый цикл.

В-третьих, появляется возможность приоритизации. Событие «позиция ушла в ноль» можно отправлять вне очереди, потому что цена ошибки здесь выше, чем у обычного изменения количества.

Дополнение, без которого модель неполна: staging сырых данных. Все ответы 1С и площадок стоит сохранять как есть, а витрины пересчитывать из них. Тогда при расхождении вы разбираете сохранённые данные, а не пытаетесь воспроизвести состояние, которого больше нет.

 

Как не открывать 1С наружу

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

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

Обратное направление — приём заказов — работает так же: внешний слой кладёт заказ в очередь, обработчик на стороне 1С забирает и проводит документ.

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

 

Лимиты частоты у площадок

Отдельная тема, которую обычно обнаруживают на проде.

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

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

То есть буфер не просто сглаживает нагрузку, а разделяет поток по приоритетам.

 

Сопоставление артикулов — не деталь, а ядро

У 1С, сайта и каждой площадки свой идентификатор номенклатуры. Пока позиций немного, сопоставление живёт в голове менеджера или в его же Excel-файле, и это работает.

Ломается это в момент, когда менеджер уходит в отпуск, а новую позицию нужно вывести на четыре витрины. Без явной таблицы соответствия «1С ↔ сайт ↔ площадка 1 ↔ площадка 2» любая автосинхронизация раскладывает мусор по всем каналам сразу.

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

 

Сверка обязательна

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

Причина простая: события теряются. Брокер перезапустился, обработчик упал на конкретном сообщении, площадка приняла запрос и не применила его. Без регулярной сверки вы узнаете об этом от покупателя.

Сверка — это ещё и способ измерить качество обмена. Число расхождений за сутки — метрика, по которой видно деградацию до того, как она станет заметной в деньгах.

 

Наблюдаемость

Минимальный набор, без которого интеграцию нельзя считать законченной:

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

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

 

Итог

Обмен 1С с внешними витринами ломается не там, где кажется на старте. Файловые выгрузки и снимки остатков выглядят проще, но не переживают корректировок задним числом — а они в реальном учёте есть всегда.

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

Николай Мазур, MZR Digital.

Вступайте в нашу телеграмм-группу Инфостарт

интеграция обмен данными маркетплейсы HTTP-сервисы очередь сообщений OData остатки синхронизация интернет-магазин наблюдаемость

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Маркетплейсы 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Подключите маркетплейсы Ozon, WB, АлиЭкспресс и ЯндексМаркет к 1С. Удобное управление заказами, остатками и синхронизация данных из одного окна 1С для УНФ, УТ, КА, ERP. Единый интерфейс работы для всех площадок. Отправка остатков по сопоставленным товарам по расписанию, гибкая настройка отправки. Парсинг цен СПП для Озон и Вайлбериз доступен в версии модуля 3.0.5.10

32930 руб.

23.01.2023    77971    718    212    

268

Маркетплейсы Программист Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Интеграция маркетплейсов с 1С:УТ 10.3, КА 1.1, УПП 1.3. Автоматизация по FBS/FBO, управление заказами и синхронизация остатков для старых конфигураций. Поддержка RICH-контента OZON

28800 руб.

12.05.2021    120948    1028    274    

396

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, ЛаМода, Мегамаркет, Aliexpress, Детский мир, Магнит Маркет (быв.МагнитЭкспресс), Лемана про, ЭНФАНТА (Акушерство), Летуаль, Твой дом, Золотое Яблоко, Каспи, Авито, Аптеки+ в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:ERP.

5490 руб.

12.08.2021    47152    612    71    

223

Маркетплейсы Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Полноценный обмен со всеми маркетплейсами: МегаМаркет, Wildberries, Яндекс.Маркет, OZON, VK, ALI, Авито, МагнитМаркет, Детский мир. Так же подключили сервис Dostavista, автоматическая отправка заказов на доставку. Данный модуль позволяет полностью интегрировать 1С:УТ11.4/11.5, 1С:КА 2.4/2.5, 1С:ERP 2.4/2.5, 1С: УНФ 3.1, 1С: Розница 2.3/2.4 по API с Wldberries, Яндекс.Маркет, OZON, ALI, VK, МегаМаркет и МагнитМаркет. Схемы работы: ВИТРИНА + ДОСТАВКА, ЗАКАЖИ И ЗАБЕРИ + ВИТРИНА, ДОСТАВКА СИЛАМИ ПРОДАВЦА, ЭКСПРЕСС-ДОСТАВКА. Модуль зарегистрирован в Реестре программного обеспечения, а также являемся технологическими партнерами МегаМаркет и Wildberries, что говорит о гарантиях использования решения.

60000 руб.

09.10.2020    66823    413    84    

137

Сайты и интернет-магазины 1С:Предприятие 8 1С:Розница 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Интеграция сервиса dolyame.ru с 1С:Розница 2.3 для приема платежей в рассрочку. Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер), поддерживается старый РМК, работа через чек ККМ.

24400 руб.

19.12.2023    13895    79    18    

69
Для отправки сообщения требуется регистрация/авторизация