Настройка мультивалютности и курсов в 1С-Битрикс: опыт 50+ проектов

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

Настройка мультивалютности и курсов в 1С-Битрикс: опыт 50+ проектов

Интернет-магазиныПростой~1 день
Часто задаваемые вопросы

Настройка валют Битрикс: где ломается курс

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

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

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

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

Разбираем, как это закрывается: от порядка пересчёта до стыковки с учётной системой.

Что даёт корректный пересчёт цен и остатков

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

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

Синхронизация склада и витрины закрывает вторую половину задачи: остаток списывается в момент оформления, а не по ночной выгрузке, поэтому не возникает продаж «в минус» и отмен из-за отсутствующего товара. Резерв под заказ удерживается до оплаты и снимается при отказе — витрина показывает реальное наличие.

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

Способы обновления курсов: ручной, по расписанию, по событию

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

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

Сравнение режимов

Вариант Когда подходит Ограничения
Ручное обновление курса 2–5 валют, курс фиксируется договором или меняется редко Держится на человеке: пропущенное обновление, нет истории, при частых правках — расхождения между курсом и ценой
Автоматический импорт курсов по расписанию Основные валюты с публичным курсом, каталог от сотен позиций Запаздывание до следующего запуска; при сбое источника цены остаются на старом курсе, нужен контроль выполнения задачи и уведомление об ошибке
Пересчёт по событию Цена должна быть точной в момент оформления заказа или сохранения позиции Нагрузка и повторные пересчёты, сложнее отлаживать; обязательны ограничения на объём и защита от рекурсии

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

Порядок внедрения мультивалютности на сайте

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

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

  2. Проект правил пересчёта: источник и периодичность получения курса, направление пересчёта, правила округления цен — до какого знака, в чью пользу и на каких диапазонах, поведение при отсутствии курса.

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

  4. Регламентное обновление курсов: настраиваем автоматическое обновление, журнал изменений и оповещение при выходе курса за ожидаемый коридор — иначе ошибка в данных всплывёт уже в оформленных заказах.

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

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

Настройки, регламенты и документация по курсам

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

  • Карточки валют — какие валюты участвуют в расчётах, какая назначена базовой, точность округления, форматы отображения цены в каталоге, корзине и письмах.
  • Регламент обновления курсов — источник (ручной ввод, внешний сервис, обмен с учётной системой), периодичность загрузки, поведение при недоступности источника и порядок отката к последнему корректному курсу.
  • Правила пересчёта — в какой валюте фиксируется цена заказа, на каком шаге фиксируется курс, как пересчитываются частичные оплаты, возвраты и задолженности.
  • Схема обмена — какие справочники и документы синхронизируются между сайтом и учётной системой, в каком направлении, с какой периодичностью и по какому признаку определяется расхождение.
  • Документация по обмену — карта соответствия валют, перечень параметров интеграции, описание обработчиков и точек, куда добавлять новую валюту.
  • Роли администратора — кто меняет курсы, кто правит округление, кому доступен ручной пересчёт заказов и полный журнал изменений курса.
  • Инструкция по проверке — чек-лист приёмки: что сверить после смены курса, подключения новой валюты и обновления модуля обмена.

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

Кейс: убрали расхождения цен между учётной системой и витриной

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

Как выглядело до

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

Что перестроили

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

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

Метрики до и после

  • Доля заказов с ручной правкой цены: 18% → 0,6% (остаток — индивидуальные условия клиентов).
  • Реакция на смену курса: до 2 суток → до 15 минут после публикации нового значения.
  • Расхождения в недельной сверке: несколько десятков позиций → единицы, все с объяснением.
  • Отказ от повторной выгрузки каталога ради цены: один прогон вместо трёх.

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

Чем ручное обновление курса отличается от автоматического в Битрикс

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

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

Разница видна на документах. Заказ хранит курс, зафиксированный в момент оформления, и задним числом его не переписывают; ручной режим легко пропускает момент фиксации — выходной, праздник, закрытая админка. Автоматика пишет значение в журнал и оставляет историю: по любой дате видно, какой курс действовал, а обмен можно переиграть без правки заказов вручную.

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

Частые вопросы по курсам, округлению и расчётам с покупателем

Курс валюты в 1С-Битрикс — это не одно значение: курс на дату, курс, зафиксированный в заказе, и курс пересчёта каталога. Расхождение счёта и каталога почти всегда объясняется тем, что заказ хранит курс на момент оформления, а карточка товара показывает цену по текущему. Задача не «подтянуть» одно к другому, а определить, какой источник истины для каждой операции.

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

Заказ оформлен по старому курсу — что с ним делать?

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

Как считать скидки и наценки, если цены в разных валютах?

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

Почему счёт расходится с каталогом?

Типовых причин три: исторический курс в заказе против текущего в каталоге, разный порядок округления, кеш цен каталога. Диагностика занимает минуты — сверяем курс в заказе, курс валюты в настройках и итог после округления.

Обсудим схему ценообразования на вашем проекте

Чтобы оценка опиралась на реальную схему ценообразования, а не на типовой пресет, нам нужен срез текущей конфигурации и несколько ответов по бизнес-логике. От них зависит, трогаем ли мы модуль каталога, механизм скидок, правила округления или обмен с 1С.

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

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

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223