Автоматизация · 10 мин
Как выгрузить торговые предложения из 1С в Битрикс
Как настроить выгрузку торговых предложений (SKU) из 1С в 1С-Битрикс: подготовка конфигурации, обмен через CommerceML, типовые ошибки и проверка результата.
Подготовка: что нужно проверить перед выгрузкой
Торговые предложения в 1С — это характеристики номенклатуры: размер, цвет, объём и другие варианты одного товара. В 1С-Битрикс они выгружаются как SKU (SKU — stock keeping unit, товарная единица) и привязываются к родительскому товару. Чтобы обмен прошёл корректно, важно заранее согласовать структуру данных в обеих системах.
Во-первых, убедитесь, что в 1С у номенклатуры включено использование характеристик. В «1С:Управление торговлей» и «1С:Комплексная автоматизация» это делается в карточке вида номенклатуры: флаг «Характеристики» должен быть установлен, а сами характеристики — заполнены. Товар без характеристик выгрузится как простой товар без торговых предложений.
Во-вторых, проверьте версию конфигурации 1С и наличие модуля обмена с сайтом. Современные типовые конфигурации содержат встроенный обмен по протоколу CommerceML, для старых версий может потребоваться установка дополнительного модуля обмена. На стороне Битрикса должен быть установлен модуль «Интернет-магазин» и настроен инфоблок каталога.
Как работает обмен между 1С и Битрикс
Обмен строится на файлах формата CommerceML: 1С формирует XML-файлы (обычно import.xml с товарами и offers.xml с предложениями и ценами) и передаёт их на сайт через специальный скрипт обмена. Битрикс принимает файлы, распаковывает и пошагово импортирует данные в инфоблоки.
Ключевой момент: товары и торговые предложения в Битриксе — это два разных инфоблока, связанных свойством привязки. Родительский товар хранится в инфоблоке каталога, а предложения — в инфоблоке торговых предложений, где у каждого элемента есть служебное свойство «Товар» (CML2_LINK). Если эта связь не создалась при обмене, на сайте появятся товары без вариантов выбора или «осиротевшие» предложения.
Сопоставление элементов происходит по внешнему коду (XML_ID), который 1С формирует из GUID номенклатуры и характеристики. Именно поэтому нельзя вручную менять внешние коды в Битриксе — при следующем обмене создадутся дубли.
Настройка обмена на стороне 1С
Откройте раздел настройки обмена с сайтом (в «1С:Управление торговлей» это обычно «Администрирование → Обмен с сайтами» или «CRM и маркетинг → Обмен с сайтом» в зависимости от версии). Создайте новый узел обмена и укажите адрес скрипта обмена вида https://ваш-сайт/bitrix/admin/1c_exchange.php, а также логин и пароль пользователя Битрикса с правами на обмен.
На вкладке отбора товаров задайте условия: какие группы номенклатуры выгружать, по каким типам цен брать цены, с каких складов передавать остатки. Обязательно отметьте выгрузку характеристик — без этого предложения не сформируются. Если у части товаров характеристики не используются, они выгрузятся как простые товары, это нормально.
Проверьте настройку соответствия свойств: свойства характеристик 1С (цвет, размер) должны выгружаться как свойства предложений, а не товара. В типовом обмене это определяется автоматически по тому, где свойство задано — у номенклатуры или у характеристики.
- 1Включите использование характеристик в виде номенклатуры и заполните их у товаров
- 2Создайте узел обмена с сайтом и укажите URL скрипта обмена, логин и пароль
- 3Настройте отбор товаров, типы цен и склады для выгрузки
- 4Убедитесь, что характеристики отмечены к выгрузке как свойства предложений
- 5Выполните тестовую выгрузку на небольшой группе товаров
Настройка приёма данных на стороне Битрикс
В административной панели Битрикса перейдите в «Магазин → Интеграция с 1С» (или «Настройки → Интеграция с 1С» в зависимости от редакции). Здесь задаются параметры импорта: таймаут шага обмена, размер части файла, действия с элементами, отсутствующими в выгрузке (деактивировать, удалить или ничего не делать).
При первом обмене Битрикс сам создаст инфоблоки каталога и торговых предложений по данным из файла импорта. Если каталог уже существует, убедитесь, что инфоблок предложений привязан к инфоблоку каталога через свойство типа «Привязка к элементам» с кодом CML2_LINK — именно по нему строится связь «товар — предложение».
Создайте отдельного пользователя для обмена и включите его в группу с правом «Обмен с 1С». Не используйте учётную запись администратора: при компрометации пароля обмена ущерб будет ограничен. Проверьте, что на сервере хватает ресурсов — импорт больших каталогов чувствителен к лимитам времени выполнения PHP и объёму памяти.
Запуск обмена и проверка результата
Запустите обмен из 1С кнопкой «Выполнить обмен» или настройте регламентное задание для автоматической выгрузки по расписанию. Первый обмен рекомендуется делать полным, последующие — в режиме выгрузки изменений, чтобы сократить нагрузку и время.
После завершения обмена откройте в Битриксе инфоблок торговых предложений и проверьте: предложения созданы, у каждого заполнено свойство привязки к товару, цены и остатки соответствуют данным 1С. На публичной части сайта откройте карточку товара с характеристиками — должен появиться выбор вариантов, а при переключении варианта должны меняться цена и доступность.
Если предложения выгрузились, но на сайте не отображаются, проверьте настройки компонента каталога: он должен работать в режиме с торговыми предложениями, а шаблон — поддерживать выбор SKU.
Как проверить результат
Предложения созданы, у каждого заполнена привязка к товару (CML2_LINK)
Предложения есть, но привязка пустая — товары показываются без вариантов
Совпадают с данными 1С по каждому SKU
Цена нулевая или остаток не выгружен — проверяйте тип цен и склады в отборе
Есть выбор вариантов, цена меняется при переключении
Варианты не выводятся — проблема в шаблоне компонента, а не в обмене
Количество предложений не растёт, данные обновляются
Появляются дубли — нарушены внешние коды XML_ID
Типичные ошибки и способы их устранения
Самая частая проблема — предложения выгружаются отдельными товарами, а не вариантами. Причина обычно в том, что характеристики в 1С заведены не как характеристики номенклатуры, а как отдельные позиции, либо инфоблок предложений в Битриксе не связан с каталогом. Проверьте структуру данных с двух сторон.
Вторая распространённая ситуация — дубли после повторного обмена. Они возникают, если в Битриксе вручную редактировали внешние коды, меняли инфоблок назначения или выгружали из разных узлов обмена. Лечение: очистить дубли, восстановить корректные XML_ID и закрепить один узел обмена как единственный источник данных.
Обрывы обмена на больших каталогах связаны с лимитами хостинга. Уменьшите размер части файла и шаг импорта в настройках интеграции, увеличьте max_execution_time на сервере или перенесите обмен на время минимальной нагрузки сайта.
Ограничения и альтернативные способы
Типовой обмен покрывает стандартные сценарии, но имеет границы: нестандартные свойства, несколько картинок у каждого SKU, сложные правила ценообразования часто требуют доработки на стороне 1С или Битрикса. Также типовой обмен односторонний по товарам — изменения каталога, сделанные вручную в Битриксе, не передаются обратно в 1С и могут быть перезаписаны.
Если типового обмена недостаточно, рассмотрите альтернативы: обмен через REST API Битрикса с собственной выгрузкой из 1С, промежуточную шину данных (файлы CSV/JSON на FTP) или готовые отраслевые модули интеграции. Такие решения гибче, но требуют разработки и сопровождения.
Сравнение вариантов обмена
Подходит для стандартных каталогов; настраивается без программирования, но ограничен типовой структурой данных
Когда нужно добавить пару нестандартных полей; требует программиста 1С и аккуратного обновления конфигурации
Для сложных сценариев и гибкой логики; требует разработки с двух сторон и постоянного сопровождения
Простой вариант для редких выгрузок; нет автоматического контроля дублей и связей, много ручной работы
Независимо от выбранного способа держите инструкцию по обмену в актуальном состоянии: какие узлы используются, какие свойства куда выгружаются, кто отвечает за мониторинг ошибок. Это заметно упрощает диагностику при сбоях.
Что важно запомнить
Выгрузка торговых предложений строится на связке «характеристики в 1С → инфоблок SKU в Битриксе» через обмен CommerceML. Ключевые условия успеха: включённые характеристики, корректная привязка инфоблоков, нетронутые внешние коды и тестовый обмен на малой группе товаров перед полной выгрузкой.
Частые вопросы
Почему после обмена товары есть, а торговых предложений нет?
Чаще всего в 1С у вида номенклатуры не включено использование характеристик или характеристики не заполнены у конкретных товаров. Проверьте также, что в настройках узла обмена характеристики отмечены к выгрузке. Если всё включено, откройте файл offers.xml из обмена — если предложений нет там, проблема на стороне 1С, а не Битрикса.
Можно ли выгружать разные цены для разных предложений одного товара?
Да, цены в 1С назначаются на конкретную характеристику, и обмен передаёт цену каждого предложения отдельно. Убедитесь, что в отборе узла обмена указан нужный тип цен и что цены установлены именно для характеристик, а не только для номенклатуры в целом.
Что делать, если обмен обрывается на большом каталоге?
Уменьшите размер части файла и длительность шага в настройках интеграции с 1С на стороне Битрикса, увеличьте лимит времени выполнения PHP на сервере. Также помогает разбить первый обмен на несколько выгрузок по группам товаров и включить режим выгрузки только изменений для последующих сеансов.
Как удалить дубли предложений после ошибочного обмена?
Найдите дубли по совпадающему набору свойств и привязке к одному товару, оставьте элемент с корректным внешним кодом из 1С, остальные удалите. Перед массовым удалением сделайте резервную копию. После очистки запустите контрольный обмен и убедитесь, что дубли не появляются снова.
Перезапишет ли обмен описания и картинки, добавленные вручную в Битриксе?
Да, если эти данные приходят из 1С, они будут перезаписаны при очередном обмене. В настройках интеграции можно ограничить состав импортируемых полей, а часть контента (например, SEO-тексты) хранить в свойствах, которые не участвуют в обмене.
Можно ли выгружать предложения из нескольких баз 1С на один сайт?
Технически возможно, но рискованно: при совпадении внешних кодов элементы будут перезаписывать друг друга. Если такая схема необходима, разведите каталоги по разным инфоблокам или введите уникальные префиксы кодов на стороне каждой базы, и тщательно протестируйте обмен на копии сайта.