К статье
Практический материал

Торговля и Склад · 13 мин

Как выгрузить остатки из 1С в Битрикс

Как настроить выгрузку остатков товаров из 1С в Битрикс: типовой обмен, CommerceML, настройка склада, расписание, проверка результатов и типичные ошибки.

Выгрузка остатков из 1С в Битрикс — стандартная задача интеграции интернет-магазина с учётной системой. В большинстве конфигураций (Управление торговлей 11, Комплексная автоматизация, ERP, УНФ) она решается типовым модулем обмена с сайтом, который передаёт данные по протоколу CommerceML. Остатки уходят на сайт вместе с ценами в составе предложений каталога либо отдельным пакетом при настройке выгрузки только изменений.

Прежде чем настраивать обмен, определите, что именно считается «остатком» для сайта: свободный остаток (складской минус резерв), остаток по конкретному складу, сумма по нескольким складам или доступное к продаже количество. От этого выбора зависит, какие склады включать в выгрузку и нужно ли вычитать резервы. Ошибка на этом этапе — самая частая причина расхождений между 1С и витриной.

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

Какие способы выгрузки остатков существуют

Есть три рабочих подхода. Первый — типовой обмен через модуль «Обмен с сайтом» в 1С и штатный приём данных в Битриксе. Он покрывает большинство сценариев: передаёт номенклатуру, цены, остатки, свойства, заказы. Второй — выгрузка через файл (CommerceML, CSV, XML) вручную или по расписанию с последующим импортом на сайте. Третий — собственная интеграция через REST API Битрикса или HTTP-сервисы 1С, когда типовой обмен не покрывает логику (например, сложный расчёт доступного остатка по нескольким каналам продаж).

Для большинства магазинов достаточно типового обмена. Файловая выгрузка подходит как временное решение или для разовой миграции. Собственную разработку оправдывают только нестандартные требования: многоскладская логика с приоритетами, интеграция с маркетплейсами параллельно с сайтом, обмен в реальном времени при больших объёмах.

Сравнение способов выгрузки

Типовой обмен с сайтом

Подходит большинству магазинов на УТ 11, КА, ERP, УНФ. Ограничение: логика расчёта остатка задаётся настройками модуля, глубокая кастомизация требует доработки.

Выгрузка файлом (CommerceML/CSV)

Подходит для разовой загрузки или слабого канала связи. Ограничение: нет автоматики, ручной контроль каждой выгрузки.

Собственная интеграция через API

Подходит при нестандартной логике остатков и высоких требованиях к скорости. Ограничение: нужна разработка и поддержка с обеих сторон.

Подготовка: что проверить в 1С и на сайте

В 1С убедитесь, что установлен актуальный модуль обмена с сайтом. В УТ 11, КА 2 и ERP он встроен в конфигурацию (раздел «Администрирование» → «Синхронизация данных» → «Обмен с сайтами»). Для старых версий УТ 10.3 или УПП модуль устанавливается отдельно. Проверьте, что ведётся складской учёт и остатки в 1С корректны: проведите инвентаризацию или сверку, иначе на сайт уйдут ошибочные данные.

На стороне Битрикса нужна редакция с модулем интернет-магазина (обычно «Малый бизнес» или «Бизнес»). В административном разделе откройте «Магазин» → «Интеграция с 1С» и проверьте настройки приёма данных: какой инфоблок является каталогом, какой тип цены основной, разрешена ли загрузка. Также убедитесь, что пользователь, под которым 1С будет подключаться, имеет права на импорт каталога.

Отдельно проверьте сетевую доступность: сайт должен быть доступен с компьютера или сервера, где работает 1С, по протоколу HTTPS (или HTTP в тестовой среде). Если сайт защищён дополнительной авторизацией на уровне веб-сервера, обмен может обрываться на этапе аутентификации.

Настройка узла обмена в 1С

В разделе «Обмен с сайтами» создайте новый узел обмена. На первой вкладке укажите адрес сайта вида https://site.ru/bitrix/admin/1c_exchange.php, логин и пароль пользователя Битрикса с правами на обмен. Нажмите «Проверить соединение» — при успешной авторизации 1С получит от сайта параметры сессии.

На вкладке «Выгрузка товаров» задайте отбор: какие номенклатурные группы, категории или склады участвуют в обмене. Именно здесь определяется состав остатков. Если на сайте один склад, а в 1С их пять, включите в отбор только те склады, остатки которых должны суммироваться для витрины. Товары с нулевым остатком по умолчанию выгружаются с количеством 0 — это правильно, чтобы сайт снимал позиции с продажи.

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

Порядок настройки узла обмена
  1. 1
    Откройте «Администрирование» → «Синхронизация данных» → «Обмен с сайтами» и создайте узел.
  2. 2
    Укажите адрес обмена, логин и пароль, проверьте соединение.
  3. 3
    На вкладке «Выгрузка товаров» задайте отбор по номенклатуре и складам.
  4. 4
    Выберите режим остатков: складской или свободный с учётом резервов.
  5. 5
    Настройте соответствие типов цен, если выгружаются и цены.
  6. 6
    Выполните тестовую выгрузку на копию сайта и сверьте остатки.
  7. 7
    Включите обмен по расписанию в режиме «только изменения».

Настройка приёма данных в Битриксе

В настройках интеграции («Магазин» → «Настройки» → «Интеграция с 1С») задайте, как обрабатывать товары, отсутствующие в выгрузке: деактивировать, обнулять остаток или ничего не делать. Для рабочего магазина безопасный вариант — обнуление остатка без деактивации: карточка товара останется на сайте, но купить его будет нельзя до следующего поступления.

Если в Битриксе включён складской учёт, сопоставьте склады 1С со складами магазина. При одном складе на сайте остатки из нескольких складов 1С суммируются в него автоматически, если в 1С они входят в один отбор узла обмена. При многоскладской схеме на сайте проверьте, что идентификаторы складов в выгрузке совпадают с привязкой в Битриксе.

Проверьте настройку «Количество товара, доступное для покупки». В Битриксе доступное количество может уменьшаться на зарезервированные заказы самого магазина. Если остатки приходят из 1С уже с учётом резервов, двойного вычитания быть не должно — определитесь, какая система резервирует, и настройте вторую соответственно.

Расписание и режим «только изменения»

Полная выгрузка всего каталога при каждом обмене — лишняя нагрузка на сайт и 1С. Типовой механизм поддерживает режим «Выгружать только изменения»: 1С регистрирует в узле обмена изменённые товары (движения по складам, смену цен, изменение карточки) и отправляет только их. Для остатков это критично: складские документы меняются постоянно, и передача дельты сокращает время обмена с десятков минут до секунд.

Расписание настраивается в узле обмена через «Настроить расписание обмена». Частота зависит от оборачиваемости: для магазина с десятками заказов в день разумный интервал — 10–30 минут, для редких продаж достаточно 1–2 раз в день. Слишком частый обмен (каждую минуту) при большом каталоге создаёт очереди и блокировки, не давая реального выигрыша в актуальности.

Учтите, что регистрация изменений по остаткам срабатывает на складские движения. Если остаток изменился документом, который не попадает в отбор узла (например, по складу, исключённому из обмена), на сайт это изменение не уйдёт — периодически выполняйте полную выгрузку для сверки, например раз в сутки ночью.

Устойчивая схема на практике: обмен изменениями каждые 15–30 минут в рабочее время плюс одна полная выгрузка ночью. Ночная полная выгрузка устраняет накопленные расхождения и служит самоконтролем обмена.
ПЗ
Практическое замечание

Проверка результата и сверка остатков

После первой выгрузки сверьте данные по выборке товаров. В 1С сформируйте отчёт «Остатки товаров на складах» по отбору, совпадающему с отбором узла обмена, и сравните с остатками в административном разделе Битрикса («Магазин» → «Складской учёт» → «Складские остатки»). Проверяйте не менее 10–15 позиций разных групп, включая товары с резервом и с нулевым остатком.

На витрине проверьте поведение карточек: товар с нулевым остатком должен либо скрываться, либо показывать статус «Нет в наличии» — в зависимости от настроек шаблона. Убедитесь, что оформление заказа блокируется при превышении доступного количества, если это требуется бизнес-процессом.

Контрольные точки

Как проверить результат

Остаток товара на сайте против отчёта 1С
Норма

Количество совпадает с учётом выбранного режима (складской или свободный)

Тревожный признак

Расхождение на величину резервов или по отдельным складам — проверить отбор узла

Товар с нулевым остатком
Норма

На сайте недоступен к покупке или скрыт

Тревожный признак

Товар продаётся при нуле в 1С — выгрузка не дошла или отбор его исключает

Журнал обмена в 1С и лог импорта Битрикса
Норма

Пакеты приняты без ошибок, время обмена стабильное

Тревожный признак

Ошибки авторизации, обрывы по таймауту, нераспакованные архивы

Типичные ошибки и как их исправить

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

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

Типичные ошибки
01
Выгрузка складского остатка вместо свободного — сайт продаёт зарезервированный товар, возникают отмены заказов.
02
Деактивация товаров, отсутствующих в выгрузке, при неполном отборе — часть каталога исчезает с витрины.
03
Двойной учёт резервов: и 1С вычитает резерв, и Битрикс резервирует под свои заказы — остаток на витрине занижен.
04
Полная выгрузка вместо изменений при каждом обмене — длительная нагрузка на сайт, обмен не успевает за продажами.
05
Первый запуск на боевом сайте без копии — при ошибке настройки каталог повреждается на глазах у покупателей.

Когда типового обмена недостаточно

Типовой модуль передаёт остаток как итоговое число по товару (или по складу при многоскладской схеме). Если нужна логика сложнее — приоритет складов, разные остатки для разных регионов, вычитание заказов маркетплейсов, расчёт «доступно к отгрузке завтра» — потребуется доработка. Варианты: расширение модуля обмена на стороне 1С (подписка на событие формирования пакета) или полностью собственный обмен через REST API Битрикса, где 1С сама вызывает методы обновления количества по конкретным товарам.

При выборе доработки оценивайте не только разработку, но и сопровождение: обновления конфигурации 1С и Битрикса могут менять структуру обмена, и самописный код придётся поддерживать. Часто разумнее адаптировать бизнес-процесс под типовые возможности, чем строить уникальную интеграцию.

Маршрут решения

Как выбрать действие

Один склад, стандартный каталог, резервы не используютсяНастройте типовой обмен с выгрузкой складского остатка — этого достаточно.
В 1С активно резервирование под заказыПереключите выгрузку на свободный остаток и сверьте поведение резервов в Битриксе.
Несколько складов и разные витрины по регионамРассмотрите многоскладскую схему в Битриксе или доработку пакета выгрузки.
Нужен обмен в реальном времени при больших объёмахПланируйте собственную интеграцию через REST API с передачей точечных изменений.
Итог

Что важно запомнить

Остатки выгружаются типовым обменом с сайтом: узел обмена в 1С, отбор по складам, режим складского или свободного остатка, приём в Битриксе через «Интеграцию с 1С». Рабочая схема — изменения каждые 15–30 минут плюс полная выгрузка ночью. Первый запуск — только на тестовой копии, с последующей сверкой по отчёту остатков.

Частые вопросы

Можно ли выгрузить остатки без цен и товаров?

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

Почему на сайте остаток меньше, чем в 1С?

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

Как часто нужно выгружать остатки?

Ориентируйтесь на скорость продаж: если товар заканчивается в течение дня, интервал 10–30 минут в режиме изменений оправдан. При медленном обороте достаточно 1–4 выгрузок в сутки. Чаще, чем раз в несколько минут, типовой обмен запускать не стоит — выигрыша в актуальности почти нет, а нагрузка растёт.

Что делать, если обмен обрывается по таймауту?

Уменьшите размер пакета в настройках интеграции Битрикса, включите пошаговую выгрузку, проверьте лимиты хостинга (время выполнения скрипта, память). Если каталог очень большой, разбейте обмен на несколько узлов по товарным группам и запускайте их в разное время.

Обнулятся ли остатки, если товар не попал в выгрузку?

Зависит от настройки «Интеграция с 1С» в Битриксе: для отсутствующих в файле товаров можно выбрать «деактивировать», «обнулить остаток» или «ничего не делать». Для безопасности при нестабильном отборе выбирайте «ничего не делать» и контролируйте состав выгрузки в 1С отдельно.

Можно ли выгружать остатки из 1С:Розница или УНФ?

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