1С-Битрикс

В карточке одна цена, в корзине другая: что проверить в 1С-Битрикс

В карточке товара 4 990 ₽, а в корзине 5 490 ₽? Разбираем варианты товара, типы цен, скидки, кеш и пересчёт корзины — с таблицей диагностики и контрольными примерами.

В карточке товара написано «4 990 ₽». Покупатель выбирает размер, нажимает «В корзину» и видит уже 5 490 ₽. Для него это выглядит как подмена цены. Владельцу магазина нужно выяснить, что произошло: изменились условия покупки, в корзину попал другой вариант или сайт показывает устаревшую сумму.

Ниже — порядок диагностики расхождения цены в карточке и корзине на 1С-Битрикс: от одного контрольного товара до проверки исправления. Все числовые примеры условные.

Разные ценники на товаре и покупательской корзине: метафора расхождения цен в интернет-магазине

1. Зафиксируйте, на каком шаге меняется цена

Начните с одного товара и одной последовательности действий. Сохраните адрес карточки, артикул, выбранные характеристики, количество и время проверки. Если есть доступ к админке, запишите ID товара и конкретного торгового предложения — варианта с нужным размером, цветом или комплектацией. Одного названия недостаточно.

Пройдите путь «каталог → карточка → выбор варианта → добавление → корзина → оформление». На каждом шаге сравнивайте цену за одну и ту же единицу товара. Итог заказа с доставкой и сумма строки за несколько штук — другие величины. Отдельно запишите состояние авторизации, применённый купон и выбранный регион, если он участвует в ценообразовании магазина.

Сначала сохраните исходный проблемный сценарий. Затем повторите его в приватном окне с пустой корзиной. Такой повтор помогает отделить поведение нового посетителя от старой корзины и пользовательской сессии. Проверка под администратором не заменяет проверку под обычным покупателем.

Симптом → направление проверки → контрольный результат
СимптомЧто проверитьЧто должно получиться
После выбора размера цена в карточке не меняется, в корзине — меняетсяВыбранный SKU, ID при добавлении и обновление ценникаДо добавления видна цена выбранного варианта
Гость и зарегистрированный покупатель видят разные суммыГруппы, доступ к типам цен, персональные условияКаждая группа получает предусмотренную для неё цену на всём пути
Расхождение появляется при изменении количестваДиапазоны цен, единицы измерения, упаковку и скидку от количестваЦена за единицу и сумма строки соответствуют выбранному количеству
Сумма меняется после купона или добавления второго товараУсловия акции, применённые правила и статус купонаСкидка появляется и отменяется согласно условиям акции
После импорта в карточке старая цена, в новой корзине — новаяСохранённую цену, данные компонента, HTML и кешСледующее обновление цены корректно проходит до витрины
Новая корзина верна, ранее собранная — нетАктуализацию позиции, провайдер товара и собственную логику ценыСтарая корзина обрабатывается по согласованным правилам магазина

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

2. Сравните вариант товара, количество и тип цены

Минимальная цена модели и цена выбранного варианта

Допустим, у светильника два предложения: белый стоит 4 990 ₽, чёрный — 5 490 ₽. В списке товаров может быть надпись «от 4 990 ₽». Покупатель открывает карточку и выбирает чёрный. Если рядом с кнопкой покупки появляется 5 490 ₽, а в корзине сохраняется эта сумма, сценарий соответствует ценам вариантов.

Если после выбора чёрного варианта карточка продолжает обещать 4 990 ₽, нужно выяснить, какой SKU выбран фактически и откуда шаблон берёт ценник. Возможны разные места сбоя: JavaScript не обновил текст, кнопка сохранила ID предыдущего предложения или в карточке всегда выводится минимальная цена родительской модели. По одной сумме в корзине эти ситуации не различить.

Условный пример: модель от 4 990 рублей, чёрный вариант за 5 490 рублей; цена выбранного варианта должна быть видна до добавления в корзину
Сначала сравните один и тот же вариант. Надпись «от» относится к диапазону модели, а покупатель добавляет конкретный товар.

Цена за штуку, упаковку и диапазон количества

Запишите отдельно количество, цену за единицу и сумму строки. Например, при цене 900 ₽ за штуку две штуки дают 1 800 ₽ до дополнительных скидок. Это не удвоение цены товара. Для товаров, продаваемых упаковками, метрами или дробным количеством, дополнительно проверьте подпись единицы измерения и шаг покупки.

Если действует условие «от десяти штук дешевле», проверьте значения по обе стороны порога: девять, десять и снова девять. Интерфейс должен объяснять, для какого количества показана цена. Особенно легко пропустить ошибку, если карточка выводит оптовый ориентир, а кнопка добавляет одну штуку.

Группа покупателя и настройки компонента

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

Разработчику полезно проверить параметры PRICE_CODE, SHOW_PRICE_COUNT, PRICE_VAT_INCLUDE и настройки конвертации валюты. Их назначение описано в документации компонента карточки товара. В собственном шаблоне нужно дополнительно проверить, используются ли эти настройки при фактическом выводе.

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

3. Проверьте условия скидки и применение купона

Каталог показывает товар отдельно, а корзина учитывает состав покупки. В условной акции «скидка 500 ₽ при покупке двух определённых товаров» окончательное право на скидку можно проверить только после формирования нужного набора. Если карточка заранее показывает уменьшенную цену, рядом должно быть понятное условие её получения.

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

Проверяйте правила по одному, на тестовой копии или в специально подготовленном сценарии:

  1. Один товар без купона: зафиксируйте исходную цену.
  2. Тот же товар с действующим купоном: проверьте статус купона и фактическую скидку.
  3. Удаление купона: убедитесь, что расчёт возвращается к исходным условиям.
  4. Изменение состава или количества: проверьте выполнение и отмену условия акции.
  5. Повторное открытие корзины: сравните сохранённый сценарий после перезагрузки.

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

Отдельный источник расхождений — собственный расчёт скидки в шаблоне. Например, возле товара просто вычитается 10%, а корзина проверяет реальные условия акции. Такой ценник может обещать скидку неподходящему покупателю. Здесь стоит согласовать источник расчёта, затем проверить показ цены и объяснение условий.

4. Найдите место расхождения: данные, кеш или корзина

После обмена с 1С или загрузки прайса

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

Если данные сохранены правильно, а карточка показывает старую сумму, проверяйте путь вывода. Очистка кеша может помочь подтвердить его участие, но однократное совпадение цен не завершает диагностику. Контрольный результат — корректное отображение после следующего изменения цены без постоянной ручной очистки.

Цена после клика отличается от цены после перезагрузки

Разработчик сопоставляет выбранный ID предложения, параметры AJAX-запроса, ответ сервера и текст, который JavaScript записал на страницу. Если ответ содержит верную цену, а виджет — старую, проверка смещается к обновлению интерфейса. Если неверная сумма уже в ответе, нужно разбирать серверный расчёт и переданные условия.

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

Старая корзина, провайдер и собственная цена

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

В документации по корзине D7 описаны актуализация данных через провайдер и поля PRODUCT_ID, PRICE, BASE_PRICE, CURRENCY, QUANTITY, CUSTOM_PRICE, PRODUCT_PROVIDER_CLASS. Разработчик проверяет их вместе с обработчиками добавления и пересчёта.

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

5. Как проверить исправление и подготовить задачу разработчику

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

Пять проверок цены после исправления: вариант товара, покупатель, количество, купон и повторное обновление прайса
Меняйте одно условие за раз и фиксируйте ожидаемую цену до начала проверки.
  • Варианты: простой товар и два SKU с разными ценами; выбранный вариант совпадает в карточке и корзине.
  • Покупатели: гость, обычная учётная запись и специальная группа, если она используется.
  • Количество: одна единица, несколько единиц, значения до и после порога скидки.
  • Акция: без купона, с купоном, после его удаления; отдельно — отмена условия акции.
  • Состояние: новая и ранее собранная корзина, обновление страницы, мобильный экран.
  • Следующий прайс: контрольное изменение цены и повторение исходного сценария.

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

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

Я могу найти место расхождения и выполнить исправление ошибки на сайте. Если причина в устройстве каталога, типах цен или торговых предложениях, задача может потребовать доработки каталога на 1С-Битрикс. Объём работ определяется после проверки воспроизводимого примера.

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

Должна ли цена в каталоге всегда совпадать с корзиной?

Сравнивайте один вариант, одну единицу товара и одинаковые условия покупки. Цена «от» для модели, персональная цена и скидка за состав корзины могут отличаться. Покупатель должен видеть цену выбранного варианта и понимать условия получения скидки до подтверждения заказа.

Можно ли исправить расхождение только очисткой кеша?

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

Почему под администратором всё правильно, а у покупателя — нет?

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

Нужно ли заново подключать обмен с 1С?

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

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

Обсудить доработку

Нужно оценить задачу по сайту?

Опишите, что нужно изменить, приложите ссылку на страницу и удобный способ связи. Я посмотрю задачу и подскажу, с чего лучше начать.