1. Главная
  2. Блог
  3. 1С-Битрикс
  4. Не отображается кнопка «Оформить заказ» в 1С-Битрикс: причина и решение

Не отображается кнопка «Оформить заказ» в 1С-Битрикс: причина и решение

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

  • Все поля заполнены
  • Доставка выбрана
  • Ошибок в консоли нет
  • Сумма заказа корректно рассчитывается

При этом в HTML кнопка присутствует, но скрыта через display: none !important.

кнопка оформления заказа пропала

В чем была проблема

Причина оказалась в кастомной логике проверки минимальной суммы заказа в файле:

/bitrix/templates/папка_решения/components/bitrix/sale.order.ajax/.default/order_ajax.js

В этом файле используется проверка:

checkMinimumPrice: function () {
  this.switchOrderSaveButtons(
    Number(this.params.MIN_SUM_TO_PAYMENT) <= Number(this.result.TOTAL.ORDER_TOTAL_PRICE)
  );
},

Если параметр MIN_SUM_TO_PAYMENT не передан в компонент, то:

  • Number(undefined) превращается в NaN
  • Сравнение NaN <= сумма всегда возвращает false
  • Вызывается switchOrderSaveButtons(false)
  • Кнопка скрывается через JS

Именно поэтому кнопка «Оформить заказ» не отображалась.

Где нужно править

Файл подключения компонента:

/personal/cart/order/index.php

В параметрах компонента необходимо добавить:

"MIN_SUM_TO_PAYMENT" => "0",

Пример блока с исправлением:

<? $APPLICATION->IncludeComponent(
    "bitrix:sale.order.ajax",
    ".default",
    array(
        "ACTION_VARIABLE" => "soa-action",
        "ALLOW_AUTO_REGISTER" => "Y",
        "DELIVERY_NO_AJAX" => "N",
        "MIN_SUM_TO_PAYMENT" => "0",
        "SHOW_ORDER_BUTTON" => "final_step"
    ),
    false
); ?>

После добавления параметра кнопка начинает корректно отображаться.

Почему это происходит

В шаблоне заказа реализована дополнительная логика контроля минимальной суммы оплаты. Если параметр MIN_SUM_TO_PAYMENT отсутствует, JavaScript считает, что минимальная сумма не достигнута, и принудительно скрывает кнопку.

Это не ошибка ядра Битрикс, а особенность конкретного шаблона.

Альтернативное решение (через JS)

Если по каким-то причинам нельзя менять параметры компонента, можно защититься от undefined в JS:

checkMinimumPrice: function () {
  var min = Number(this.params.MIN_SUM_TO_PAYMENT);
  if (isNaN(min)) min = 0;

  var total = Number(this.result?.TOTAL?.ORDER_TOTAL_PRICE);
  if (isNaN(total)) total = 0;

  this.switchOrderSaveButtons(min <= total);
},

Но, правильнее — передавать параметр в PHP.

Если в 1С-Битрикс не отображается кнопка «Оформить заказ»:

  • Проверьте наличие параметра MIN_SUM_TO_PAYMENT
  • Добавьте "MIN_SUM_TO_PAYMENT" => "0" в компонент
  • Очистите кеш

После этого кнопка будет работать корректно.

До внесения любых правок в файлы сайта убедитесь в наличии резервной копии.
Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий
Нажмите для звонка
+7 (499) 341-00-19
Хотите заказать сайт?
Обращайтесь любым удобным способом и мы поможем подобрать интересный вариант для Вас!