Ремонт интеграции · 1С ↔ Битрикс
Диагностика и исправление обмена 1С с 1С-Битрикс
Обмен товарами и остатками между 1С и сайтом на Битрикс сломался, задваивает карточки или молча перестал обновлять цены. Сначала разбираем лог и файлы обмена, потом говорим, что чинить и сколько это стоит.
Пришлите доступ к логу обмена и файлам выгрузки из 1С — посмотрим, где встаёт процесс.
CommerceML · HTTP
Диагностика раньше правок
Семь шагов, по которым разбираем сломанный обмен: от лога до контрольного прогона. Выберите шаг — покажем, что именно смотрим.
Шаг 1 · Обмен обрывается по таймауту
Первым делом смотрим, где именно обрывается сессия: лимиты веб-сервера чаще всего убивают длинную выгрузку.
POST /bitrix/admin/1c_exchange.php?type=catalog&mode=import … import progress: 42% import progress: 57% FastCGI: comm with server aborted: read timeout (30s) HTTP 504 Gateway Time-out → проверяем max_execution_time, лимиты прокси и шаг сессии обмена
Шаг 2 · Разбираем import.xml
Сверяем структуру каталога: группы, товары, идентификаторы. Дубли и «потерянные» разделы почти всегда видны уже здесь.
import.xml · Классификатор / Каталог <Группы> … 629 узлов ok <Товары> … 12 737 позиций ok <Ид>c69e…-42a1</Ид> ↔ XML_ID совпадает → фиксируем эталонные идентификаторы до правок
Шаг 3 · Проверяем offers.xml
Цены и остатки идут отдельным файлом. «Цены не обновляются» чаще всего означает сбой именно на этом шаге.
offers.xml · Пакет предложений <Предложения> … 12 629 позиций <Цены><Цена><ИдТипаЦены>b8c1… не найден на сайте price type mismatch: «Розничная» ≠ BASE → сверяем типы цен 1С ↔ Битрикс и валюту
Шаг 4 · XML_ID и соответствие карточек
Дубли появляются, когда идентификаторы разъехались: сайт перестаёт узнавать товар и создаёт его заново.
SELECT ID, XML_ID FROM b_iblock_element WHERE … 1204 строк ID 8812 · XML_ID c69e…-42a1 ok ID 9145 · XML_ID c69e…-42a1 (дубль) → восстанавливаем маппинг, дубли сливаем без потери ссылок
Шаг 5 · Блокировка параллельных обменов
Два обмена одновременно портят данные незаметно. Ставим блокировку: новый запуск ждёт, пока закончится предыдущий.
cron: */30 * * * * exchange.sh 08:00:01 exchange started (pid 4312) 08:30:00 exchange started (pid 5127) — предыдущий ещё работает + flock: second run skipped, lock held by 4312 → обмены больше не пересекаются
Шаг 6 · Расписание и журналирование
Обмен должен запускаться сам и оставлять след: когда прошёл, сколько объектов, какие предупреждения.
exchange.log 08:00 запуск по расписанию ok 08:01 выгрузка из 1С: 12 737 товаров ok 08:01 предупреждений: 0 · ошибок: 0 → журнал доступен заказчику, сбой виден сразу
Шаг 7 · Контрольный прогон
Финальная проверка на полном каталоге: цифры сходятся с 1С, ошибок нет — только после этого передаём работу.
контрольный прогон · полный каталог товаров: 12 737 ok с ценами: 12 629 ok разделов: 629 ok время: ~1,5 мин · ошибок: 0 ok → скорость зависит от объёма и хостинга — результат конкретной работы
Как выглядит сломанный обмен
Если узнали свою ситуацию хотя бы в одном пункте — обмен чинится. Вопрос только в том, где именно он падает.
Падает по таймауту
Выгрузка доходит до середины и обрывается; в логе — timeout или 504.
Товары без цен и остатков
Позиции на сайте есть, но offers.xml не применяется или применяется частично.
Разделы дублируются
После каждой выгрузки каталог обрастает копиями категорий.
Заказы не уходят в 1С
Менеджеры перебивают заказы с сайта руками.
Картинки не доходят
import.xml ссылается на файлы, которые до сайта не добираются.
Обмены накладываются
Ночная выгрузка ещё идёт, утренняя стартует поверх — данные бьются.
Диагностика раньше правок
Не трогаем работающее и не «переустанавливаем всё». Сначала находим точку падения, потом чиним её.
-
01
Логи обмена
Читаем журнал на стороне сайта и в 1С: на каком шаге и с какой ошибкой обрывается сессия.
-
02
Воспроизведение
Запускаем обмен вручную на копии и ловим падение в контролируемых условиях.
-
03
Причина, а не симптом
Таймаут, нехватка памяти, битые данные или конфликт шагов — причину фиксируем письменно до правок.
-
04
Исправление
Чиним обработку, ставим лок от параллельных запусков, настраиваем cron и логирование.
-
05
Контрольный прогон
Полная выгрузка со сверкой счётчиков по каждой сущности: товары, разделы, цены, остатки.
Сущности и направления обмена
Полный двусторонний обмен нужен не всегда. Разбираем по сущностям, что и куда должно идти, и фиксируем в ТЗ.
| Товары (1С) | ⇄ | Каталог сайта | CommerceML, import.xml |
| Разделы и категории | → | Структура каталога | без дублей |
| Цены | → | Цены на сайте | offers.xml |
| Остатки | → | Наличие на сайте | offers.xml |
| Характеристики | → | Свойства товаров | |
| Изображения | → | Галереи товаров | |
| Заказы с сайта | ← | Документы в 1С | направление зависит от сущности |
Схема из реального проекта: направления для разных сущностей отличаются — это нормально и настраивается.
Контрольный прогон флагманского проекта
- 12 737
- товаров прошло выгрузку
- 12 629
- позиций с ценой
- 629
- разделов каталога
- ~1,5 мин
- импорт на стороне сайта
- 0
- ошибок в контрольном прогоне
Цифры контрольного прогона одного проекта (1С-Битрикс, полный обмен). Скорость зависит от объёма и хостинга — это результат конкретной работы, а не универсальная гарантия.
Флагманский кейс
Обмен 1С с интернет-магазином: от падений по таймауту до стабильной синхронизации Принят без замечаний
Полный обмен в обе стороны с направлениями по сущностям: товары, разделы, цены, остатки, характеристики, изображения. Приём CommerceML, обработка import.xml и offers.xml, снятие таймаута, cron, лок от параллельных запусков, логирование, попутные исправления корзины и структуры каталога.
- 12 737
- товаров в каталоге
- 629
- разделов
- ~1,5 мин
- контрольный импорт на стороне сайта
- Без замечаний
- приёмка заказчиком
Как заказать
-
Заявка
Опишите, как проявляется сбой, и какая версия Битрикс — этого достаточно для старта.
-
Диагностика
По логам и копии находим точку падения и называем причину письменно.
-
ТЗ и цена
Фиксируем объём правок и стоимость до начала работ.
-
Ремонт и прогон
Чиним, ставим защиту от повторения, делаем контрольный прогон со сверкой.
После согласования ТЗ отправим персональную ссылку на оплату.
Стоимость
Диагностика и исправление обмена — от 25 000 ₽, типовой проект около 30 000 ₽. Точную стоимость называем после разбора лога обмена и файлов выгрузки: она зависит от объёма и характера сбоя.
от 25 000 ₽
Узнать цену своей задачиПосле согласования ТЗ отправим персональную ссылку на оплату.
Частые вопросы
Нет. Работаем на стороне сайта и интеграции — с файлами обмена, логами и настройками CMS. Доработку конфигурации 1С не делаем и сертификаты 1С не заявляем; если проблема внутри конфигурации, скажем прямо и это будет отдельная граница работ.
Обычно 1–2 рабочих дня после того, как получили доступ к логу обмена и файлам выгрузки. Если файлов не хватает — сначала попросим их у вас или у того, кто ведёт 1С.
До диагностики — нет. Сначала смотрим лог и файлы, потом называем причину и вариант исправления со сметой. Обещать результат вслепую по описанию симптомов не будем.
Доступ к логу обмена CommerceML на сайте, файлам выгрузки из 1С (import.xml/offers.xml) и, если нужно, к административной панели Битрикс. Доступ к самой базе 1С не обязателен на этапе диагностики.
Да, частый случай — после обновления модуля обмена или ядра CMS меняется обработка файла, и старая связка перестаёт стыковаться. Разбираем именно такие ситуации.
Скажем это прямо в разборе диагностики и укажем, что требуется специалист по 1С со стороны конфигурации — не будем выдавать это за свою доработку.
Проверить ошибку обмена
Пришлём предварительную оценку после уточнения. Финальные цену и срок подтверждает специалист.