Практика +7 930 830 1101
Все статьи

Почему цены и остатки на сайте расходятся с 1С: карта причин и проверки

дата публикации
20.06.2026

В 1С цена 2 400 ₽, на сайте — 2 200 ₽. Или последнюю единицу уже продали, а кнопка покупки осталась. Начните с карточки товара в административной части Битрикс: если там значение правильное, проверять нужно вывод и условия покупки. Если оно старое — найдите этот товар в файле обмена и проверьте, завершился ли импорт.

Ниже — действия для «1С-Битрикс: Управление сайтом». Пути в 1С показаны для УТ 11.5 с модулем обмена Битрикс 8.1.x; отличия старой ветки указаны отдельно. В УНФ, ERP и собственном обмене формы другие. Числа и идентификаторы взяты для примера.

Откройте нужное предложение в Битрикс

  1. В админке откройте Магазин → Каталог товаров → ваш каталог. Найдите позицию по артикулу или названию и откройте редактирование. Каталог также может находиться в разделе «Контент» под своим названием.
  2. Если у товара есть размер, цвет или другая характеристика, перейдите в «Торговые предложения» и откройте именно выбранный на витрине вариант. Запишите его ID и внешний код. Цена родительской карточки не заменяет цену предложения.
  3. В торговом каталоге откройте «Цены»: запишите сумму, тип цены и валюту. В «Параметрах» — доступное количество. Если передаются остатки по складам, посмотрите и вкладку «Склады». В разных формах эти вкладки могут быть вложены в блок торгового каталога.
  4. Откройте тот же вариант на витрине. Для цены сравните одинаковое количество товара и одну группу покупателя, без купона. Запишите время проверки: заказ между замерами может изменить остаток.

Названия товарных полей приведены в справке Битрикс. Не нашли внешний код? Администратор может включить его показ: Настройки → Настройки продукта → Настройки модулей → Информационные блоки → «Показывать код загрузки из внешних источников». Вернитесь в карточку. Это поле связи с 1С; не путайте его с числовым ID сайта или символьным кодом URL. Описание поля.

ВИЛКАКуда идти после проверки карточки
Что получилосьСледующее действие
В админке 2 400 ₽, на витрине или в корзине 2 200 ₽Перейдите к шагу 5: тип цены, права покупателя и скидки. Кэш проверяется после них.
В админке старые цена или количествоВ разделе 2 найдите эту позицию в XML, затем проверьте результат импорта по разделу 3.
В админке 0, товар всё ещё можно купитьОткройте пункт «Ноль записан, но покупка разрешена» в разделе 6.
Сразу после обмена верно, позже снова староеЗафиксируйте оба времени и перейдите к разделу 8: ищем следующий сеанс или другую запись.

Получите файл обмена и найдите в нём товар

Как выгрузить XML на диск в модуле 8.1.x

  1. Откройте в 1С 1С-Битрикс: Управление сайтом → Настройки обмена с сайтами. Найдите настройку, которая отправляет нужный каталог.
  2. Для диагностики используйте её копию без автоматического запуска либо тестовую базу. В разделе назначения выберите «Выгружать в каталог на диске» и укажите папку. В серверной базе это путь, доступный службе 1С, а не обязательно диск вашего компьютера.
  3. Запустите выгрузку из диагностической настройки. Если копия не содержит истории изменений, сформируйте полный пакет только на диск. Такая выгрузка проверит текущие данные и отборы, но не докажет, что рабочий обмен зарегистрировал прежнее изменение.
  4. Сохраните полученные XML. Рабочую настройку оставьте направленной на сайт. Для проверки сбоя конкретного сеанса нужны именно отправленные им файлы: запросите их сохранение у администратора до следующего обмена.

Назначение выгрузки и режимы модуля 8.1.x. Не отправляйте на рабочий сайт полный пакет, ограниченный одним товаром: при соответствующих настройках остальные позиции могут деактивироваться. Для проверки такого пакета нужен стенд.

Что искать внутри файла

Откройте копии XML в текстовом редакторе и найдите внешний код предложения через поиск. В старых схемах цены и количество находятся в offers.xml, в новых — в отдельных prices.xml и rests.xml, иногда в подпапках и нескольких частях. Состав файлов в документации. Если позиция не нашлась, ищите во всём пакете; название и артикул могут отсутствовать в файле цен.

Пример фрагмента prices.xml — идентификаторы сокращены
<Предложение>
  <Ид>товар-001#вариант-XL</Ид>
  <Цены>
    <Цена>
      <ИдТипаЦены>цена-розница</ИдТипаЦены>
      <ЦенаЗаЕдиницу>2400</ЦенаЗаЕдиницу>
      <Валюта>руб</Валюта>
    </Цена>
  </Цены>
</Предложение>

Из этого фрагмента выпишите три значения: Ид предложения, ИдТипаЦены и ЦенаЗаЕдиницу. Сравнивайте запись одной цены, а не первую попавшуюся сумму файла. Через # может быть указана характеристика товара; точный формат берите из своего пакета. Пример структуры цен.

Пример фрагмента rests.xml — ноль передан явно
<Предложение>
  <Ид>товар-001#вариант-XL</Ид>
  <Остатки>
    <Остаток>
      <Склад>
        <Ид>склад-основной</Ид>
        <Количество>0</Количество>
      </Склад>
    </Остаток>
  </Остатки>
</Предложение>

Здесь ноль относится к одному складу и одному предложению. Другие склады могут иметь остаток. Если предложения или поля количества нет вовсе, файл не сообщает это обновление. Пример структуры остатков.

ВИЛКАЧто показывает файл обмена
РезультатЧто проверять
В файле цена 2 200 ₽ вместо ожидаемых 2 400 ₽Раздел 4: выбранный прайс и данные цены в 1С.
Количество неверно уже в файлеРаздел 6: склады, учёт резерва и отборы в 1С.
Товара нет в пакете измененийРаздел 8: регистрацию изменения. Отсутствие в таком пакете не означает нулевой остаток.
Файл верен, админка сайта — нетСначала раздел 3: доставка и обработка этого файла. Только после этого — внешние коды в разделе 5.

Проверьте, завершился ли импорт файла

В модуле 8.1.x откройте 1С-Битрикс: Управление сайтом → Журнал обменов и выберите время проблемного запуска. Сохраните первую ошибку и имя файла. Описание журнала. В старой ветке 7.x используются узлы обмена и команда «Открыть лог».

Если журнал сообщает только общую ошибку, передайте администратору сайта время сеанса и попросите сопоставить запросы обмена с журналом ошибок PHP/веб-сервера. Вкладка с названием «Лог работы» и полный журнал импорта товаров есть не в каждой установке — искать её бесконечно не нужно.

ВИЛКАКак читать результат файлового обмена
ОтветЗначение
mode=file → successСайт принял файл или его часть. Обработка ещё не подтверждена.
mode=import → progressИмпорт продолжается, нужен результат следующих шагов.
mode=import → successОбработка данного файла завершена; теперь проверьте значение конкретного предложения.
failure или страница с ошибкойСохраните текст ответа. HTTP 200 без проверки содержимого не означает успешный импорт.

Этапы разделены в протоколе Битрикс. Если правильный файл сформировался на диске, это ещё не доказывает, что рабочий сайт его получил.

Что делать с ошибкой

  • Ошибка авторизации. Проверьте адрес обмена и учётную запись в настройке 1С. На сайте администратор сверяет её группу с разрешёнными группами загрузки на странице Магазин → Настройки → Интеграция с 1С → Каталог. Проверка соединения должна пройти до повторного импорта.
  • Превышено время выполнения. Если серверный журнал подтвердил тайм-аут PHP именно на шаге импорта, уменьшите длительность шага в расширенных настройках этой же вкладки. Например, при лимите PHP 30 секунд испытайте шаг 10 секунд. Значение 0 запускает обработку одним шагом. Если зависает одна тяжёлая операция, дробление её не исправит — нужен разбор обработчика.
  • Allowed memory size exhausted. Попросите администратора проверить объём пакета и потребление памяти обработчиком. Уменьшение интервала не заменяет проверку памяти. Общий failure сам по себе не доказывает ни эту ошибку, ни тайм-аут.

Параметры импорта каталога. После исправления нужен завершённый импорт и новое значение в карточке, а не только зелёный статус соединения.

Неверная цена уже в XML: исправьте источник

Пример: менеджер ожидает розницу 2 400 ₽, но в файле у этого предложения 2 200 ₽. Повторный импорт сайта передаст те же 2 200 ₽.

  1. В УТ откройте CRM и маркетинг → Цены (прайс-лист). Выберите проблемный товар, его характеристику и нужный вид цены. Сверьте дату действия, валюту и единицу продажи. Если там тоже 2 200 ₽, сначала исправляется цена в учёте, а не обмен.
  2. Если прайс показывает 2 400 ₽, откройте настройку обмена 8.1.x: «Выгрузка информации о номенклатуре» → «Настроить». Выберите каталог слева, затем вкладку «Цены». Сверьте состав прайсов: должен передаваться тот, по которому продаёт сайт.
  3. Если выбран оптовый прайс вместо розничного, исправьте именно это соответствие. Сохраните настройку и сформируйте новый диагностический пакет. У нужного предложения должны появиться ожидаемые 2 400 ₽ и идентификатор нужного типа цены.
  4. После штатной отправки проверьте 2 400 ₽ в карточке того же предложения в Битрикс. Если XML верен, а карточка осталась прежней, переходите к разделу 5.

Проверка цен в УТ; Настройки выгрузки 8.1.x. Если в прайсе нет ожидаемой цены, проверьте документ её установки: нужные товар и характеристику, вид цены, начало действия и проведение. Не перепроводите задним числом документы ради эксперимента на рабочей базе.

XML верен, но цена на сайте другая

Админка не получила новую цену: сверьте внешние коды

  1. Сравните Ид предложения из файла с внешним кодом открытого предложения сайта. Не сравнивайте его только с родительским товаром и не используйте артикул вместо идентификатора.
  2. Откройте Магазин → Настройки → Цены → Типы цен. В меню нужного типа выберите «Изменить тип цен». Сравните поле внешнего кода с ИдТипаЦены из XML. Внутренний «Код» типа цены — другое поле.
  3. Если у единственного розничного типа неверный внешний код, сначала убедитесь, что другой тип уже не связан с нужным идентификатором. Если соответствие однозначно и подтверждено настройкой 1С, сохраните прежнее значение, исправьте внешний код и повторите обмен на стенде. Затем проверьте, что обновилась существующая цена, а новая дублирующая запись не появилась.
  4. Если не совпал код самого товара или характеристики, найдите в каталоге запись с кодом из XML. При дублях или переносе базы не подставляйте GUID наугад: разработчику нужна карта соответствий товаров и предложений. Иначе можно обновить чужой вариант или нарушить связи заказов.

Список типов цен и поля их редактирования. Несколько типов цен доступны не во всех редакциях; в «Малом бизнесе» работа ведётся с единственным типом. Если коды совпадают и импорт завершён, а значение не изменилось, передайте разработчику ID предложения, фрагмент XML и время импорта: проверять нужно обработку записи и доработки, а не переименовывать тип цены.

В карточке 2 400 ₽, в корзине 2 200 ₽: проверьте права на цены

Рассмотрим пример. У предложения есть розничная цена 2 400 ₽ и базовая 2 200 ₽. Каталог выводит только розничную, но покупателю разрешена покупка по обеим. В штатном расчёте корзины может примениться более дешёвая доступная цена. Это описанный Битрикс сценарий.

  1. Сначала воспроизведите случай на стенде: права типа цены действуют на все товары. На странице типов цен откройте оба типа и проверьте все группы, в которые входит тестовый покупатель, а не только одну. Если базовая цена служебная и покупатель не должен по ней покупать, уберите эту группу из прав покупки по базовому типу; оставьте её у розничного. Перед сохранением убедитесь, что у продаваемых товаров есть альтернативная цена, по которой эта группа сможет покупать. Не ограничивайте оптовую группу, которой низкая цена положена по правилам магазина. Переносите исправление после проверки групп покупателей.
  2. На странице каталога включите режим правки, откройте параметры компонента каталога и проверьте «Цены» → «Тип цены». Выберите предусмотренный для этой витрины тип. Для стандартного компонента это параметр PRICE_CODE; в собственном шаблоне место настройки уточняет разработчик.
  3. Повторите проверку в новой корзине тестового покупателя без купона, с одной единицей нужного предложения. Ожидаемый результат в нашем примере — 2 400 ₽ в карточке и корзине. Затем отдельно проверьте оптовую учётную запись.

Параметры вывода цены. Если доступны правильные типы, проверьте активные скидки: Маркетинг → Товарный маркетинг → Правила работы с корзиной (описание списка). Например, 2 400 ₽ минус 10% дают 2 160 ₽. При положенной покупателю скидке это верный расчёт; ошибочную скидку исправляют по её условиям на стенде. Не отключайте все акции магазина для проверки одной карточки.

Не сходится количество: склад, резерв или ноль

На складе 10, на сайте 7: сравните состав остатка

  1. В УТ откройте Склад и доставка → Отчеты по складу → Остатки и доступность товаров. Установите отбор по одному товару, характеристике и складу. Запишите физическое количество и резерв отдельно.
  2. В настройке выгрузки номенклатуры 8.1.x откройте вкладку «Остатки». Сопоставьте склады в таблице со складом отчёта; проверьте, учитывает ли выгрузка резерв. Не меняйте это правило, пока не выяснили, какое количество магазин должен продавать.
  3. Если физически есть 10, три единицы зарезервированы, а согласованное правило передаёт свободные 7, то XML с количеством 7 корректен. Если выбран склад брака вместо основного — исправьте состав складов выгрузки и проверьте новый файл.
  4. При передаче по складам сравните идентификатор склада из XML с XML_ID в Магазин → Складской учет → Склады → нужный склад. Затем в карточке предложения проверьте вкладку «Склады». Одно название «Основной» не подтверждает связь записей.

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

После продажи последней единицы на сайте остаётся 1

  1. На стенде временно остановите автоматический обмен. Воспроизведите переход 1 → 0 у одного предложения, проверьте регистрацию изменения до отправки, затем выполните обмен и сохраните пакет. Найдите его внешний код и количество нужного склада.
  2. Если позиции нет, откройте в настройке номенклатуры «Отборы». Найдите условие, исключающее товар при нулевом остатке. Исправьте именно это условие, чтобы ранее выгруженная позиция могла передать ноль; остальные ограничения каталога сохраняйте.
  3. Если отбор не исключает позицию, посмотрите результат проверки формы «Зарегистрированные изменения» перед отправкой. Изменения не было уже тогда — нужна проверка его регистрации в модуле или доработке. После успешной отправки запись могла сняться; пустая форма после обмена не доказывает ошибку. Редактирование названия не заменяет проверку изменения остатка.
  4. Если ноль есть в XML, убедитесь в завершении импорта и проверьте количество в админке Битрикс. Ноль не применился — передайте файл, ID предложения и результат импорта разработчику сайта. Затем повторите обратный переход 0 → 1.
Пример: была 1 единица, стало 0
—В пакете нет позицииНет команды обновить

Старое значение может сохраниться, если схема не определяет иное поведение.

0Передано количество 0Есть новое значение

Проверьте, что импорт принял ноль и применил его к нужному предложению.

Для полной загрузки отдельно проверяются правила обработки отсутствующих товаров. Они не равны правилам пакета изменений.

Ноль записан, но покупка разрешена

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

Проверьте добавление одной единицы в новую корзину при нуле, затем после поступления. Если при нуле стандартные настройки запрещают покупку, а собственная кнопка всё равно добавляет товар, нужен разбор шаблона и обработчика корзины. Включать или выключать весь складской учёт для этого не требуется.

В админке верно, на витрине старое: проверьте кэш

  1. Убедитесь, что сравниваются одно предложение, тип цены и условия покупателя. Режим инкогнито меняет сеанс, но не очищает серверный кэш.
  2. Под администратором откройте проблемную страницу с параметром ?clear_cache=Y. Если в адресе уже есть ?, добавьте &clear_cache=Y. Сравните результат до и после в той же администраторской сессии; затем проверьте обычную страницу под тестовым покупателем.
  3. Если после сброса значение исправилось, откройте Магазин → Настройки → Интеграция с 1С → Каталог. Найдите «Тегированный кеш инфоблока». Если он отключён без специально реализованного сброса, выберите сброс после завершения импорта, сохраните и проверьте следующий обмен.
  4. Измените цену контрольного товара на стенде, дождитесь полного импорта и откройте страницу без параметра очистки. Новая цена должна появиться сама. Если нет, разработчик проверяет зависимость кэша компонента от каталога, композитный кэш и внешний CDN — если эти слои используются.

Параметр проверки кэша; настройки его сброса при импорте. Ручная очистка всего сайта не является исправлением причины и не нужна как первый шаг.

Вручную работает, автоматически нет — или значение откатывается

Нет автоматического обновления

  1. В настройке обмена 8.1.x проверьте способ выполнения: если установлен только ручной режим, задайте предусмотренное для каталога расписание. Не путайте его с обменом документами в реальном времени.
  2. Откройте журнал за время, когда запуск должен был состояться. Запуска нет: администратор 1С проверяет исполнение и блокировку регламентных заданий. Запуск есть, но оборвался: исправляется зафиксированная ошибка, а не частота расписания.
  3. При жалобе на одну позицию на стенде остановите автоматическую отправку, измените её цену или остаток и откройте «Зарегистрированные изменения» до запуска обмена. Затем запустите обмен и проверьте «Неотправленные пакеты данных». Если изменение зарегистрировано, но пакет остаётся неотправленным, сохраните ошибку этого пакета. Не удаляйте очередь ради успешного статуса.
  4. После исправления дождитесь запуска по расписанию без ручного вмешательства. Проверьте, что изменение попало в XML и применилось в карточке сайта.

Изменения и пакеты в модуле 8.1.x. В старой ветке 7.x есть «Узлы обмена с сайтами» и флаг «Использовать периодический обмен данными» — это другой интерфейс, не дополнительная обязательная галочка для 8.1.x.

После правильного значения возвращается старое

Запишите время: например, в 12:05 после импорта было 2 400 ₽, в 12:10 стало 2 200 ₽. Сверьте журналы обоих моментов и сохранённые пакеты. Если второй профиль отправил 2 200 ₽, устраните конкурирующую выгрузку цены: оставьте один согласованный источник этого поля. Если второй файл тоже содержит 2 400 ₽, разработчик включает диагностическое логирование записи цены и проверяет обработчики и загрузки прайсов. Само время изменения карточки не всегда показывает отдельную запись цены.

Проверьте исправление на следующем обмене

ВИЛКАПроверки после исправления
Действие на стендеЧто должно получиться
Изменить цену нужного вида, например с 2 400 на 2 450 ₽Новая сумма в XML и админке того же предложения; витрина и корзина рассчитываются для заданного покупателя.
Провести переходы количества 1 → 0 → 1Все три значения передаются и применяются; покупка при нуле соответствует правилам магазина.
Создать и снять резерв на один тестовый заказПри передаче свободного остатка число меняется; при передаче физического может остаться прежним. Доступность покупки следует выбранной модели, резерв не вычитается дважды.
Проверить соседний размер или цветЦена и количество другого предложения не изменились из-за ошибочной связи.
Дождаться двух плановых цикловОбновление работает без ручной выгрузки и очистки кэша; старые значения не возвращаются.

Если ветка привела к ошибке кода, приложите к задаче URL, ID и внешний код предложения, конфигурацию и релиз 1С, версию модуля обмена, время сеанса, фрагмент XML и текст первой ошибки. Формулировка результата должна быть проверяемой: «В prices.xml цена 2 450, импорт завершён в 12:05, у предложения ID 317 в админке осталось 2 400». Уберите из вложений пароли и данные покупателей.

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

Обсудим задачу — от разработки и дизайна до продвижения

Документация и применимость инструкции

Инструкция сверена 8 сентября 2026 года с официальной документацией 1С-Битрикс; ссылки на формы и параметры приведены в соответствующих шагах. Основной пример — УТ 11.5 и модуль 8.1.x. Права пользователя, редакция Битрикс и доработки могут менять доступные формы. XML и суммы приведены для примера; в своей базе подставьте данные нужного товара.