Коротко
Обмен 1С-Битрикс с 1С:Предприятие работает по протоколу CommerceML. Из 1С на сайт выгружаются товары, свойства, остатки и цены, а с сайта в 1С возвращаются оформленные заказы. Настраивается обмен в 1С (узел «Обмен с сайтом») и в админке Битрикс (модуль «Торговый каталог»). Ломается он чаще всего из-за тайм-аутов на большом каталоге, нехватки памяти и времени выполнения PHP, изменения структуры данных и неверных настроек соединения.
Обмен с 1С — это не «кнопка», а связка настроек на двух сторонах. Проблема почти всегда в лимитах сервера или в рассогласовании свойств.
| Что передаётся | Направление | Как часто обычно обновляют |
|---|---|---|
| Товары, разделы, свойства, изображения | Из 1С на сайт | Реже, при изменениях каталога |
| Цены и остатки | Из 1С на сайт | Несколько раз в день или ежечасно |
| Заказы | С сайта в 1С | По мере поступления |
| Статусы заказов, оплаты, отгрузки | Из 1С на сайт (при двустороннем обмене) | Вместе с обменом заказами |
Основная мысль
Стабильный обмен 1С-Битрикс с 1С держится на трёх вещах: согласованной структуре данных, достаточных лимитах сервера и неизменных внешних кодах товаров — если хоть одна из них нарушена, обмен начинает зависать, терять данные или плодить дубли.
Обмен выглядит простым: в 1С нажали кнопку, на сайте обновились товары. На деле это цепочка шагов, в которой участвуют настройки 1С, сервер сайта, модуль торгового каталога и структура инфоблоков. Сбой на любом шаге останавливает всю цепочку, а ошибка при этом часто видна только в логах.
Второй важный момент — обмен нельзя настроить один раз и забыть. Каталог растёт, в 1С добавляют новые свойства, сайт обновляется, меняется хостинг. Каждое такое изменение может повлиять на обмен, поэтому его проверяют после любых заметных изменений на любой из сторон.
Ниже разберём, как устроен обмен, как его настроить по шагам, почему он ломается и как сделать его быстрым и стабильным.
Как работает обмен
Общая схема
- 1С выгружает каталог в формате CommerceML (файлы import.xml, offers.xml).
- Битрикс принимает файлы и обновляет товары, торговые предложения, цены и остатки.
- Обмен может быть односторонним (только каталог) или двусторонним (плюс возврат заказов в 1С).
- Запускается по расписанию или вручную из 1С.
Что лежит в файлах выгрузки
Файл import.xml описывает каталог: разделы, товары, их свойства и изображения. Файл offers.xml содержит предложения: цены по типам цен, остатки и характеристики, если товары продаются в разных вариантах. Такое разделение удобно: каталог меняется редко, а цены и остатки — постоянно, и их можно выгружать отдельно и чаще.
Как проходит сеанс обмена
1С обращается к сайту по адресу обмена, проходит авторизацию по логину и паролю, передаёт файлы и сообщает сайту, что их можно обрабатывать. Битрикс разбирает файлы и обновляет данные. Если включён пошаговый режим, обработка идёт частями: сайт обрабатывает порцию, отвечает 1С, что нужно продолжить, и так до конца файла. Благодаря этому даже большой каталог обрабатывается без тайм-аутов, а при сбое видно, на какой порции обмен остановился. Обмен заказами идёт в обратную сторону: 1С запрашивает у сайта новые и изменённые заказы и загружает их в учёт.
Односторонний и двусторонний обмен
При одностороннем обмене на сайт выгружается только каталог с ценами и остатками, а заказы обрабатываются на сайте или вручную переносятся в учёт. При двустороннем обмене заказы с сайта автоматически попадают в 1С, а изменения статусов, оплат и отгрузок могут возвращаться на сайт. Для интернет-магазина с учётом в 1С двусторонний обмен — штатный сценарий.
Пошаговая настройка
Порядок действий
- В Битрикс включите модуль «Торговый каталог» и создайте инфоблок каталога.
- В админке Битрикс задайте настройки обмена: URL, логин и пароль для 1С.
- В 1С настройте узел «Обмен с сайтом»: адрес сайта, те же логин и пароль.
- Сопоставьте свойства товаров 1С со свойствами инфоблока Битрикс.
- Запустите пробную выгрузку на небольшой группе товаров.
- Проверьте на сайте: карточки, цены, остатки, изображения.
Подготовка на стороне сайта
Для обмена нужен отдельный пользователь с правами на загрузку данных: не стоит использовать учётную запись администратора. В настройках интеграции с 1С указывают, в какой инфоблок загружать каталог, что делать с товарами, которых нет в выгрузке, нужно ли загружать изображения и включён ли пошаговый режим. Заранее проверяют лимиты PHP и доступное место на диске: файлы выгрузки с изображениями бывают большими.
Подготовка на стороне 1С
В 1С создают узел обмена с сайтом, указывают адрес, логин и пароль, выбирают, какие группы товаров, типы цен и склады выгружать. Здесь же настраивают расписание и режим обмена заказами. Важно заранее договориться, какие данные являются главными в 1С, а какие ведутся на сайте, чтобы обмен не перезаписывал ручные правки контент-менеджеров.
Сопоставление свойств
Свойства товаров в 1С и свойства инфоблока на сайте должны соответствовать друг другу. Бренд, материал, размер, цвет — всё, что участвует в фильтре и карточке товара, сопоставляют заранее. Если свойство появилось в 1С, но не описано на сайте, оно может создаться автоматически с неудобным названием или не попасть в фильтр.
Если магазин только создаётся
Обмен проще всего заложить на этапе разработки: структуру инфоблоков, свойства и фильтр проектируют сразу под данные из 1С. Тогда не приходится переделывать каталог после запуска. Если магазин ещё предстоит сделать, это стоит учесть при разработке интернет-магазина на 1С-Битрикс.
Пробная выгрузка
Первую выгрузку делают на небольшой группе товаров. Так быстро видно, правильно ли легли разделы, свойства, цены, остатки и изображения. Исправить ошибку на десятке товаров проще, чем на всём каталоге. Только после проверки запускают полную выгрузку.
Почему обмен ломается
Частые причины
- Тайм-аут на большом каталоге — нужно включить пошаговый обмен и поднять лимиты.
- Нехватка памяти и времени выполнения PHP (memory_limit, max_execution_time).
- Изменилась структура свойств в 1С — «поехало» сопоставление.
- Проблемы с кодировкой файлов выгрузки.
- Неверные логин и пароль или адрес узла обмена.
- Дубли товаров из-за смены внешнего кода (XML_ID).
Симптомы и решения
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Обмен зависает на середине | Тайм-аут, нехватка памяти | Пошаговый обмен, увеличить лимиты PHP |
| 1С сообщает об ошибке авторизации | Неверный логин, пароль или адрес | Сверить настройки на обеих сторонах |
| На сайте появились дубли товаров | Сменился XML_ID | Восстановить стабильные внешние коды, объединить дубли |
| Пропали значения в фильтре | Изменилась структура свойств | Заново сопоставить свойства |
| Вместо текста непонятные символы | Проблема с кодировкой | Проверить кодировку выгрузки и сайта |
| Обмен перестал работать после обновления | Правка обмена в ядре затёрта | Перенести доработку в обработчики событий |
Лимиты сервера
Большой каталог с изображениями требует много памяти и времени на обработку. Если лимиты PHP малы, скрипт обмена прерывается, а 1С получает ошибку или ждёт ответа до бесконечности. Решение — пошаговый режим и увеличение memory_limit, max_execution_time и допустимого размера загружаемых файлов. На дешёвом хостинге с жёсткими ограничениями эти настройки иногда нельзя изменить, и тогда обмен упирается в тариф.
Изменения в 1С
В 1С регулярно что-то меняют: добавляют свойства, переименовывают группы, перестраивают характеристики. Для обмена это изменение структуры данных. Если его не отразить на сайте, свойства перестают сопоставляться, фильтр теряет значения, а товары могут переехать не в те разделы. Поэтому изменения структуры в 1С согласуют с тем, кто отвечает за сайт.
Кодировка и соединение
Проблемы с кодировкой проявляются как непонятные символы вместо названий или как ошибки разбора файла. Обычно их вызывает несовпадение кодировки выгрузки и сайта или ручная правка файлов. Ошибки соединения чаще всего связаны с неверным адресом узла, сменой пароля пользователя обмена, переездом сайта на другой домен или протокол, а также с защитой сервера, которая блокирует запросы 1С. После переезда сайта настройки обмена проверяют в первую очередь.
Дубли товаров
Каждый товар связан с сайтом через внешний код (XML_ID). Если в 1С товар пересоздали, выгрузили из другой базы или сменили код, сайт воспринимает его как новый и создаёт дубль. Старая карточка остаётся со своими отзывами и позициями в поиске, а новая появляется рядом. Исправлять это дольше, чем предотвращать.
Как ускорить и стабилизировать обмен
Базовые меры
- Включите пошаговый обмен, чтобы каталог выгружался частями и не упирался в тайм-аут.
- Поднимите лимиты PHP: memory_limit, max_execution_time, размер загружаемых файлов.
- Выгружайте отдельно каталог (редко) и цены с остатками (часто) — так обмен легче.
- Фиксируйте стабильные внешние коды (XML_ID), чтобы не плодить дубли товаров.
- Ведите и проверяйте логи обмена — они сразу показывают, на каком шаге сбой.
Разделение потоков
Полная выгрузка каталога с изображениями — тяжёлая операция, и запускать её каждый час нет смысла. Удобная схема: полный каталог — при изменениях или по ночам, цены и остатки — часто, заказы — по мере поступления. Так сайт получает актуальные цены и остатки без лишней нагрузки.
Изображения
Изображения передаются вместе с каталогом и сильно увеличивают объём выгрузки. Их часто выгружают отдельным шагом и заранее оптимизируют размер в 1С или при загрузке на сайт. Это ускоряет обмен и одновременно улучшает скорость загрузки карточек товаров.
Кэш и производительность сайта
После обмена сайт сбрасывает кэш изменённых товаров и разделов. Если обмен при каждом запуске сбрасывает весь кэш, сайт после выгрузки заметно замедляется. Помогает тегированный кэш, который сбрасывает только связанные с изменёнными товарами блоки, и выполнение тяжёлых пересчётов в фоне, а не во время визитов покупателей.
Логи и мониторинг
Логи обмена показывают, какой файл обрабатывался, на каком шаге произошла ошибка и сколько времени занял каждый этап. Их полезно не только читать при сбое, но и периодически просматривать: рост времени обмена — ранний признак будущих проблем. Для важных магазинов настраивают уведомление, если обмен не прошёл вовремя.
Обмен заказами
Что передаётся в 1С
С сайта в 1С передаются заказы: состав, цены, скидки, способ доставки и оплаты, данные покупателя. В 1С по ним создаются документы, с которыми дальше работают менеджеры и склад. Важно, чтобы товары в заказе были связаны с товарами 1С по тем же внешним кодам, иначе заказ не загрузится или загрузится с ошибками.
Статусы и оплаты
При двустороннем обмене изменения статуса заказа, оплаты и отгрузки могут возвращаться из 1С на сайт. Тогда покупатель видит актуальное состояние заказа в личном кабинете, а менеджерам не нужно дублировать изменения вручную. Соответствие статусов на сайте и в 1С настраивают заранее.
Покупатели и контрагенты
Заказы физических и юридических лиц в 1С обычно обрабатываются по-разному. Сайт должен передавать нужные реквизиты, а 1С — правильно находить или создавать контрагентов. Иначе в учёте появляются дубли покупателей и путаница в документах.
Связь с CRM
Если отдел продаж работает в Битрикс24, заказы и заявки удобно передавать и туда, чтобы менеджеры видели всю историю клиента. Такая связка настраивается отдельно от обмена с 1С; подробнее — на странице об интеграции с Битрикс24.
Обмен, доработки и обновления
Не править ядро
Стандартный обмен часто приходится дорабатывать: загружать нестандартные свойства, по-особому обрабатывать характеристики, менять логику создания заказов. Такие доработки делают через обработчики событий и собственный код в /local/, а не правкой файлов модуля. Иначе ближайшее обновление Битрикса затрёт изменения, и обмен сломается.
Тестовая копия
Любые изменения обмена — доработки, обновления Битрикса, изменения конфигурации 1С — сначала проверяют на тестовой копии сайта. Важно, чтобы тестовая копия не выгружала тестовые заказы в рабочую 1С: для неё используют копию базы 1С или отключают обмен заказами.
Сценарий из практики
Магазин обновил Битрикс, после чего перестали загружаться размеры одежды. Выяснилось, что раньше обработку характеристик доработали прямо в файле модуля, и обновление вернуло стандартную версию. Доработку переписали на обработчик события в /local/, после чего обмен снова заработал и больше не зависел от обновлений.
Когда стандартного обмена не хватает
Нестандартные данные
Стандартный CommerceML покрывает товары, свойства, цены, остатки и заказы. Но у магазина могут быть данные, которые в него не укладываются: комплекты, аналоги и сопутствующие товары, индивидуальные цены для конкретных покупателей, сложные характеристики. Их передают через доработку обмена: дополнительные реквизиты в выгрузке и обработчики событий на сайте, которые раскладывают данные по нужным местам.
Несколько источников
Бывает, что каталог приходит не только из 1С: часть товаров загружается от поставщиков, цены конкурентов собираются отдельно, описания готовят контент-менеджеры. В таком случае заранее определяют, какой источник главный для каждого поля, чтобы данные не перезаписывали друг друга при каждом обмене.
Собственный обмен
Если стандартный протокол совсем не подходит — например, нужна мгновенная синхронизация остатков или обмен с несколькими учётными базами, — делают собственную интеграцию через REST API или промежуточный сервис. Это дороже и сложнее в поддержке, поэтому сначала стоит проверить, нельзя ли решить задачу доработкой стандартного обмена.
Типичные ошибки и чек-лист запуска
Ошибки при настройке
- Полная выгрузка без пробной. Ошибка в сопоставлении сразу размножается на весь каталог.
- Обмен под учётной записью администратора. Лучше отдельный пользователь с нужными правами.
- Изменение структуры в 1С без согласования с сайтом. Свойства и фильтр ломаются незаметно.
- Полная выгрузка каталога каждый час. Лишняя нагрузка и сброс кэша.
- Отсутствие контроля логов. Проблемы обнаруживаются по жалобам покупателей.
- Доработка обмена в ядре. Сбой после ближайшего обновления.
Чек-лист запуска обмена
- Включён модуль «Торговый каталог», создан инфоблок каталога.
- Создан отдельный пользователь для обмена, настройки совпадают на обеих сторонах.
- Проверены лимиты PHP и включён пошаговый режим.
- Сопоставлены свойства, участвующие в карточке и фильтре.
- Пробная выгрузка на небольшой группе прошла без ошибок.
- Цены, остатки и изображения на сайте совпадают с 1С.
- Тестовый заказ попал в 1С с правильным составом и покупателем.
- Настроено расписание: каталог реже, цены и остатки чаще.
- Определено, кто и как проверяет логи обмена.
Частые вопросы
Можно ли настроить двусторонний обмен?
Да. Каталог и цены идут из 1С на сайт, а заказы — с сайта обратно в 1С. Это штатный сценарий для интернет-магазина на 1С-Битрикс.
Почему обмен «зависает» на большом каталоге?
Из-за лимитов сервера. Решение — пошаговый обмен (частями) и увеличение memory_limit и max_execution_time. Для десятков тысяч товаров это обязательная настройка.
Как часто запускать обмен?
Остатки и цены обычно обновляют несколько раз в день или ежечасно, полный каталог — реже. Заказы удобно передавать в 1С по мере поступления.
Обмен сломался после обновления — что делать?
Проверьте настройки узла и сопоставление свойств, посмотрите логи обмена. Часто причина — правка обмена в ядре, которую затёрло обновлением. Тестируйте обмен на копии сайта до обновления боевого.
Обмен грузит изображения товаров?
Да, изображения передаются вместе с каталогом. На большом объёме это тяжёлая операция, поэтому картинки часто выгружают отдельным шагом и оптимизируют размер.
Откуда на сайте дубли товаров?
Чаще всего из-за смены внешнего кода (XML_ID) в 1С: сайт считает товар новым и создаёт вторую карточку. Решение — сохранять стабильные коды и при необходимости объединять дубли, перенося на основную карточку нужные данные.
Какая редакция Битрикса нужна для обмена с 1С?
Для интернет-магазина с обменом каталога и заказов нужна редакция с модулем интернет-магазина — начиная с «Малого бизнеса». Если используются несколько складов и типов цен, обычно выбирают «Бизнес».
Можно ли редактировать товары на сайте, если они приходят из 1С?
Можно, но нужно заранее решить, какие поля ведутся на сайте, а какие в 1С. Иначе следующий обмен перезапишет ручные правки. Обычно цены, остатки и основные свойства ведут в 1С, а описания и SEO-поля — на сайте.
Почему цены на сайте не совпадают с 1С?
Возможные причины: выгружается не тот тип цены, обмен предложений не прошёл или завершился с ошибкой, на сайте действуют скидки, которые меняют итоговую цену. Начинать стоит с логов обмена и настроек типов цен.
С какими конфигурациями 1С работает обмен?
Обмен с сайтом по CommerceML поддерживают типовые торговые конфигурации 1С, которые используют магазины для учёта товаров и продаж. Настройки узла обмена в разных конфигурациях немного отличаются, но принцип одинаковый: выгрузка каталога и предложений на сайт и загрузка заказов в учёт.
Почему после обмена пропали товары с сайта?
Обычно дело в настройке, которая определяет, что делать с товарами, отсутствующими в выгрузке: их могут деактивировать или удалять. Если в 1С изменили отбор выгружаемых групп или выгрузка прошла не полностью, часть каталога исчезает с сайта. Настройку стоит проверить до первой полной выгрузки.
Сколько стоит настройка или ремонт обмена?
Зависит от объёма каталога, числа доработок и состояния текущих настроек. Такие работы обычно оцениваются почасово, от 2 000 ₽ в час, а точный объём понятен после разбора логов и настроек обеих сторон.
Итог
Обмен 1С-Битрикс с 1С по CommerceML — штатный инструмент, который надёжно работает при правильной настройке. Из 1С на сайт идут товары, цены и остатки, с сайта в 1С — заказы, а настраивается связка на обеих сторонах: в узле обмена 1С и в модуле торгового каталога Битрикса.
Большинство сбоев объясняется лимитами сервера, изменениями структуры в 1С, сменой внешних кодов и доработками в ядре. Пошаговый режим, разделение потоков, стабильные XML_ID, контроль логов и проверка на тестовой копии делают обмен быстрым и предсказуемым.
Если нужно настроить, ускорить или починить обмен сайта на 1С-Битрикс с 1С, я как частный разработчик могу разобрать логи и настройки, исправить сопоставление и перенести доработки из ядра в безопасное место. Подробнее — на странице услуги доработка сайта на 1С-Битрикс. Работаю напрямую, без посредников.


