Общая картина
Устойчивость обмена - это не одно решение, а несколько независимых уровней защиты. Каждый закрывает свой класс проблем, и они не заменяют, а дополняют друг друга.
Данные не теряются
Приём каждой выгрузки подтверждается. Пока подтверждения нет, 1С считает выгрузку недоставленной и передаёт её повторно - данные остаются на её стороне.
Файл появляется в очереди только целиком, поэтому обработчик не может прочитать наполовину записанную выгрузку. Выгрузка из нескольких частей ждёт, пока соберутся все части.
Очередь переживает перезапуски
Очередь и статусы выгрузок хранятся в базе данных сайта, а не в памяти работающей программы. Перезапуск сервиса, обновление или сбой сервера ничего не теряют: после запуска работа продолжается с того же места.
Приём выгрузок не зависит от обработки - он продолжает работать, даже когда сервис синхронизации остановлен.
Обработка безопасна для данных
Каждая запись привязана к своему коду из 1С, поэтому повторная обработка обновляет существующие данные, а не создаёт вторые такие же. Это делает безопасными и повторные передачи, и перезапуск обработки после сбоя.
Ошибка в одной записи не останавливает выгрузку целиком. Отметка о завершении ставится только по факту. Два обработчика одновременно работать не могут.
Расхождения устраняются сами
Частые небольшие обновления дают скорость, но со временем могут накапливать расхождения: пропущенное событие, ошибка в отдельной записи. Поэтому 1С периодически присылает полные выгрузки - снимки всех данных.
Полная выгрузка не только добавляет и обновляет, но и убирает с витрины то, чего в 1С больше нет. Любое накопившееся расхождение устраняется при ближайшем полном обмене.
Заказы доходят всегда
Реестр пометок хранит перечень всего, что ещё не передано в 1С. К нему ведут два независимых пути: мгновенное уведомление и плановый опрос со стороны 1С. Отказ любого из них не приводит к потере заказа, а пометка снимается только после фактической передачи.
Ничего не проходит незамеченным
Статус каждой выгрузки виден администратору в панели управления сайтом: обработана, с замечаниями или ждёт очереди. По каждой выгрузке есть подробный протокол, а все выгрузки за всё время работы обмена хранятся в архиве.
Любую выгрузку можно обработать повторно - например, после исправления данных в 1С.
Что это даёт бизнесу
| Свойство обмена | Что это значит на практике |
|---|---|
| Данные не теряются | Заказ покупателя дойдёт до менеджера при любых сбоях |
| Восстановление автоматическое | Простой не превращается в задачу для программиста |
| Дубликаты невозможны | Товары и цены не задваиваются при повторных передачах |
| Расхождения самоустраняются | Данные на сайте не расходятся с 1С со временем |
| Обмен прозрачен | Проблема видна в панели управления, а не по звонку клиента |
| Рост объёмов не требует переделки | Каталог может расти вместе с бизнесом |
Обзорная версия всей серии - в статье про обмен целиком. Что вошло в проект помимо обмена - каталог, персональные цены, дилерский кабинет - в кейсе B2B-платформы.
