Почему не отображаются остатки и цены при выгрузке из 1С на Bitrix и как это исправить?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

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

Проблема сопоставления идентификаторов (XML_ID)

Разберем основной механизм, по которому Bitrix понимает, к какому товару, складу или типу цены относятся данные из XML-файла. Для системы управления сайтом название склада или типа цены (например, «Розничная на Смольном») является лишь человекочитаемым заголовком. Внутренняя логика обмена строится на использовании внешних кодов (они же XML_ID).

Проанализируем типичную ошибку: пользователь вручную меняет название типа цены на сайте на то, которое указано в 1С. Это не помогает, потому что 1С при выгрузке передает уникальный идентификатор (GUID) объекта. Рассмотрим, как это работает:

  1. В 1С каждый объект (склад, тип цены, товар) имеет свой уникальный идентификатор.
  2. При выгрузке в файл offers.xml этот идентификатор помещается в тег Ид.
  3. Bitrix при импорте ищет у себя объект, у которого поле «Внешний код» совпадает с этим идентификатором.

Важный вывод: Чтобы цены и остатки «привязались», в поле «Внешний код» в настройках Bitrix нужно вставлять не название, а именно UID (УИД) из 1С. В последних версиях модулей обмена от Битрикс для 1С существует специальный реквизит Б_Идентификатор, который по умолчанию совпадает с UID.

Настройка типов цен и складов на стороне Bitrix

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

Для типов цен: Перейдем в раздел Магазин -> Настройки -> Типы цен. Найдем нужный тип цены и проверим поле «Внешний код». Если там указано BASE или произвольное название, а 1С передает GUID, данные не загрузятся. Необходимо скопировать UID из 1С (его можно найти в ссылке объекта или через консоль запросов) и вставить в это поле.

Для складов: Аналогично перейдем в Магазин -> Складской учет -> Склады. В карточке склада поле «Внешний код» должно строго соответствовать идентификатору магазина/склада в 1С. Если вы используете расширение для обмена, проверьте вкладку настройки складов — там часто есть таблица сопоставления, где можно явно указать, какой склад 1С соответствует складу на сайте.

Проверка настроек количественного учета в Bitrix

Иногда данные физически попадают в базу данных сайта, но не отображаются в публичной части. Проанализируем настройки модуля «Торговый каталог».

Рассмотрим по шагам, что нужно проверить в настройках инфоблока каталога:

  1. Убедимся, что инфоблон помечен как «Торговый каталог».
  2. В настройках модуля «Торговый каталог» проверим опцию «Включить количественный учет». Если она выключена, система может игнорировать данные об остатках.
  3. Проверим параметр «Разрешить покупку при отсутствии товара». Если остаток равен 0, а эта галочка снята, товар может автоматически скрываться или цена на него может не выводиться в зависимости от шаблона компонента.
  4. Обратим внимание на режим многоскладовости. Если у вас редакция «Малый бизнес», она поддерживает только один склад. При попытке выгрузить данные по нескольким складам из 1С, Bitrix может либо суммировать их в один, либо игнорировать, если внешний код не совпадает с кодом единственного активного склада.

Особенности настройки на стороне 1С

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

Разберем основные моменты в настройках расширения или стандартного модуля:

  1. Соглашения и типы цен: В настройках обмена на вкладке «Цены» необходимо не только выбрать нужные виды цен, но и убедиться, что для них заполнен «Идентификатор на сайте». Если поле пустое, модуль может сгенерировать новый GUID, который не совпадет с тем, что вы уже прописали на сайте вручную.
  2. Остатки по складам: Убедимся, что в настройках выбраны конкретные склады, по которым должна идти выгрузка. Если выбрана опция «Выгружать остатки в целом по фирме», то информация о конкретных складах в XML не попадет, и Bitrix не сможет распределить их по своим складским позициям.
  3. Версия протокола: Проанализируем версию CommerceML. Наиболее стабильной и рекомендуемой для работы с современными версиями Bitrix является версия 2.07 или выше. В старых версиях (например, 2.05) структура передачи остатков по складам отличается, что может приводить к ошибкам парсинга на стороне сайта.

Диагностика через анализ XML-файла

Если настройки кажутся верными, но результат не достигнут, перейдем к «тяжелой артиллерии» — анализу логов и файлов обмена. Это самый надежный способ выяснить причину проблемы.

Выполним выгрузку из 1С не напрямую на сайт, а в локальный каталог на диске. Найдем файл offers.xml и откроем его любым текстовым редактором. Поищем в файле конкретный товар по его артикулу или наименованию. Нас интересует структура внутри тега товара:


<Цены>
    <Цена>
        <ИдТипаЦены>fa389865-6490-11e8-80db-00155d013e02</ИдТипаЦены>
        <ЦенаЗаЕдиницу>1500</ЦенаЗаЕдиницу>
        <Валюта>RUB</Валюта>
    </Цена>
</Цены>
<Склады>
    <Склад>
        <Ид>b2c5e533-552d-11e7-80c3-00155d013e02</Ид>
        <Количество>10</Количество>
    </Склад>
</Склады>

Проанализируем полученные данные. Если в файле ИдТипаЦены или Ид склада не совпадают с тем, что вы ввели в поле «Внешний код» на сайте — это и есть причина проблемы. Если же данных <Цены> или <Склады> в файле вообще нет, значит, проблему нужно искать в настройках фильтров выгрузки на стороне 1С (например, цена не установлена документом «Установка цен номенклатуры» или товар не входит в остатки по выбранным складам).

Кэширование и индексация

Напоследок рассмотрим ситуацию, когда в административной панели сайта данные появились (вы видите цифры в карточке товара), а в самом интернет-магазине — нет. В этом случае выполним следующие действия:

  1. Сбросим кэш Битрикса (Настройки -> Настройки продукта -> Автокеширование -> Очистка файлов кеша).
  2. Переиндексируем поиск (Настройки -> Поиск -> Переиндексация).
  3. Проверим настройки компонента каталога. Убедимся, что в параметрах компонента выбран правильный тип цены для отображения и разрешен показ остатков.

Таким образом, последовательная проверка цепочки «Данные в 1С -> Настройки выгрузки -> Файл XML -> Внешние коды в Bitrix -> Настройки каталога на сайте» позволяет гарантированно решить проблему пустых остатков и цен.

← На главную