После обмена 1С с Битрикс остатки на сайте показывают общее количество, хотя на складах в 1С учёт ведётся раздельно. Покупатель из Ростова-на-Дону видит товар «в наличии» на московском складе, заказывает, а доставка стоит как межгород — 5 дней и 800 рублей. Знакомая ситуация? Мы сталкивались с этим десятки раз. Настройка мультискладового обмена — рутинная, но критичная задача, без которой интернет-магазин теряет деньги на неверной логистике и возвратах.
Мы — команда сертифицированных инженеров с 10+ годами опыта в Битрикс. За это время мы реализовали мультискладовой обмен для 50+ проектов — от небольших региональных сетей до федеральных ритейлеров с десятками складов. Настраиваем всё: от XML-идентификаторов до автоматической привязки доставки по региону.
Предварительные условия
Для работы мультискладового учёта в Битрикс требуется редакция «Малый бизнес» или выше. В «Старте» управление складами недоступно — есть только один виртуальный склад.
В 1С должен быть включён учёт по складам:
- УТ 11:
Администрирование → Склад и доставка → Несколько складов: Да - УТ 10:
Сервис → Настройка параметров учёта → Складской учёт → Вести учёт по складам
Настройка складов и XML-идентификаторов
В 1С каждый склад имеет уникальный идентификатор (GUID). В Битрикс каждый склад имеет поле «Внешний код (XML ID)». Совпадение этих значений — условие корректного распределения остатков:
Каталог → Склады → [склад] → Внешний код (XML ID) = GUID склада из 1С
Получить GUID склада из 1С можно в конфигураторе, либо через запрос ВЫБРАТЬ Ссылка.УникальныйИдентификатор ИЗ Справочник.Склады. Также можно взять из XML-файла обмена в теге <ИдСклада>. Согласно стандарту CommerceML «CommerceML — формат обмена данными между 1С и интернет-магазинами», идентификаторы должны быть уникальными.
Показ остатков по конкретному складу в карточке товара
Если покупатель должен видеть «в наличии в Москве: 5 шт., в Екатеринбурге: 12 шт.» — кастомная доработка компонента карточки товара. Данные берутся из \Bitrix\Catalog\StoreProductTable, описанного в официальной документации:
$storeRests = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['=PRODUCT_ID' => $productId], 'select' => ['AMOUNT', 'STORE_ID', 'STORE.TITLE', 'STORE.ADDRESS'], 'order' => ['STORE.TITLE' => 'ASC'], ])->fetchAll(); foreach ($storeRests as $rest) { if ($rest['AMOUNT'] > 0) { echo $rest['STORE_TITLE'] . ': ' . $rest['AMOUNT'] . ' шт.'; } } Как привязать склад к доставке?
Связка «склад → зона доставки» решает вопрос откуда везти. Если покупатель из Екатеринбурга — предложить доставку с екатеринбургского склада с коротким сроком, а не с московского с 5-дневным транзитом.
Реализация в двух вариантах:
- Автоматически по региону покупателя — при определении региона по IP или выбору покупателем города, приоритетный склад берётся из справочника «склад → регионы обслуживания»
- Через выбор пункта самовывоза — каждый пункт = склад, покупатель явно выбирает откуда забрать
Первый вариант удобнее для интернет-магазинов с доставкой по всей стране: покупателю не нужно думать, система сама назначает ближайший склад. Второй — для сетей с самовывозом, когда важна прозрачность. При правильной настройке компания экономит до 500 000 рублей в год на неверных отгрузках.
Почему не синхронизируются остатки?
Типичная причина — несовпадение XML-идентификаторов. Проверьте: GUID в 1С должен быть точно равен «Внешнему коду (XML ID)» склада в Битрикс. Даже лишний пробел или регистр ломают привязку. Вторая по частоте причина — отключён учёт по складам в 1С (см. предварительные условия). Третья — ошибки в правилах обмена CommerceML, когда выгружаются остатки без указания склада.
Как настроить мультискладовой обмен: пошаговая инструкция
- Проверьте редакцию Битрикс и включение учёта по складам в 1С.
- Получите GUID складов из 1С и пропишите их в XML ID складов Битрикс.
- Настройте привязку складов к зонам доставки (автоматически или через выбор пункта самовывоза).
- Протестируйте обмен: создайте заказ с разными регионами и проверьте остатки.
Отчётность по мультискладу
Менеджерам часто нужен сводный отчёт: какие товары есть только на одном складе, каких нет нигде. Базовый запрос:
SELECT e.ID, e.NAME, SUM(sp.AMOUNT) as total_amount, COUNT(DISTINCT sp.STORE_ID) as stores_count FROM b_iblock_element e LEFT JOIN b_catalog_store_product sp ON sp.PRODUCT_ID = e.ID WHERE e.IBLOCK_ID = :iblock_id GROUP BY e.ID, e.NAME ORDER BY total_amount ASC; Этот запрос можно использовать в отчёте «Остатки на складах» через создание HL-блока или интеграцию с BI-системами.
Типичные ошибки и их решение
| Ошибка | Решение |
|---|---|
| Остатки не разделяются по складам | Проверить совпадение GUID и XML ID |
| Доставка назначается не с того склада | Настроить привязку складов к регионам |
| В карточке товара не видны остатки по складам | Кастомизировать компонент с использованием StoreProductTable |
Что входит в работу?
| Этап | Описание | Срок |
|---|---|---|
| Аудит текущих настроек 1С и Битрикс | Проверяем редакцию, включён ли учёт по складам, корректность XML-идентификаторов | 0.5 дня |
| Настройка XML-идентификаторов | Сопоставляем GUID складов 1С с полями «Внешний код» в Битрикс | 0.5 дня |
| Привязка складов к доставке | Реализуем автоматическое определение региона или выбор пункта самовывоза | 1–2 дня |
| Кастомизация вывода остатков | Дорабатываем компонент карточки товара и оформления заказа | 1–2 дня |
| Тестирование и исправление ошибок | Проверяем обмен по нескольким складам, исправляем расхождения | 0.5–1 день |
| Документация и обучение | Передаём описание настроек, инструктируем менеджеров по работе с отчётами | 0.5 дня |
Итоговый срок — от 1 до 4 дней в зависимости от сложности кастомизаций. Стоимость рассчитывается индивидуально после аудита — свяжитесь с нами для оценки.
Пример кода для вывода остатков в карточке товара (подробнее)
$storeRests = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['=PRODUCT_ID' => $productId], 'select' => ['AMOUNT', 'STORE_ID', 'STORE.TITLE', 'STORE.ADDRESS'], 'order' => ['STORE.TITLE' => 'ASC'], ])->fetchAll(); foreach ($storeRests as $rest) { if ($rest['AMOUNT'] > 0) { echo $rest['STORE_TITLE'] . ': ' . $rest['AMOUNT'] . ' шт.'; } } Наш опыт
Мы работаем с мультискладовыми конфигурациями уже более 10 лет. Участвовали в запуске обмена для сети из 30 складов по всей России — тогда вручную прописывали XML-идентификаторы через SQL-запросы. Сейчас процесс автоматизирован, но ручная верификация остаётся обязательной: одна ошибка в GUID — и остатки «съезжают». Мы гарантируем точность привязки и предоставляем документацию по всей конфигурации. Получите консультацию — мы поможем настроить обмен без потерь.
Сроки настройки
Настройка мультискладового обмена с привязкой XML-идентификаторов — 1 день. С кастомным показом остатков по складам и привязкой к зонам доставки — 2–4 дня. Ориентируйтесь на верхнюю границу, если требуется интеграция с нестандартными службами доставки или собственной логистикой.
Если у вас уже есть настройки, но остатки не синхронизируются, — пишите, проведём аудит бесплатно. Оценим проект в течение дня.







