Настройка агента пересчёта цен по курсу валют в 1С-Битрикс

B2B-портал с 15 000 товаров: цены в евро, контрагенты платят в долларах. Курс меняется ежедневно. Ручное обновление 15 000 позиций занимает 8 часов с вероятностью ошибки 30%. Мы автоматизируем этот процесс — агент пересчёта справляется за 2 минуты, что в 12 раз быстрее ручного ввода. Закажите аудит те
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка агента пересчёта цен по курсу валют в 1С-Битрикс
Простой
~1 день

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

B2B-портал с 15 000 товаров: цены в евро, контрагенты платят в долларах. Курс меняется ежедневно. Ручное обновление 15 000 позиций занимает 8 часов с вероятностью ошибки 30%. Мы автоматизируем этот процесс — агент пересчёта справляется за 2 минуты, что в 12 раз быстрее ручного ввода. Закажите аудит текущей системы — займёт не больше часа.

Почему обычная конвертация не подходит для B2B?

Конвертация на лету через CCurrencyRates::ConvertCurrency() создаёт неопределённость: цена меняется каждый запрос. Для B2B с фиксированными прайс-листами нужен пересчёт хранимых цен через агент. Это даёт стабильную цену на день и на 70% меньше запросов к базе.

Подход Стабильность цен Нагрузка на сервер Контроль
Конвертация на лету Низкая Высокая (каждый запрос) Отсутствует
Агент пересчёта Высокая (фиксация на день) Низкая (пакетная обработка) Полный лог

Как защитить данные от аномалий курса?

Курсы из публичных API не идеальны: могут прийти нули, устаревшие значения или временные скачки. В агент пересчёта встроен механизм защиты от аномалий: если новый курс отличается от предыдущего более чем на 5%, обновление блокируется. Администратор получает уведомление через \Bitrix\Main\Mail\Event::send(), а в лог записывается событие с исходными и отклонёнными значениями. Это предотвращает убытки от ошибочного ценообразования — в нашей практике спасло клиента от потери значительной суммы за один день.

Как настроить автоматический пересчёт цен по курсу валют?

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

Выбор провайдера курсов

Для BYN используем API НБ РБ, для EUR/GBP — ЕЦБ. Сравнение провайдеров:

Провайдер Валюта Частота обновления Особенности
НБ РБ BYN Раз в сутки Официальный курс, XML
ЦБ РФ USD Ежедневно JSON API, обязателен для РФ
ЕЦБ EUR/USD/GBP Дважды в день Бесплатный, XML

Для стандартных валют используем встроенные провайдеры, для нестандартных — напишем класс на основе \Bitrix\Currency\RateProvider.

Агент пересчёта

Агент разбит на пакеты по 500 товаров, чтобы уложиться в max_execution_time. Пример кода:

// Пример: агент пересчёта цен для типа цены 'Розничная' (ID=1) \Bitrix\Main\Loader::includeModule('catalog'); $factor = CCurrencyRates::GetConvertFactor('EUR', 'BYN'); $prices = \Bitrix\Catalog\PriceTable::getList([ 'filter' => ['=CATALOG_GROUP_ID' => 1, '=CURRENCY' => 'EUR'], 'limit' => 500 ])->fetchAll(); foreach ($prices as $price) { $newPrice = round($price['PRICE'] * $factor, 2); \Bitrix\Catalog\PriceTable::update($price['ID'], ['PRICE' => $newPrice, 'CURRENCY' => 'BYN']); } 

Округление задаётся в настройках валюты. Для BYN — до копеек, для оптовых цен — до целых долларов.

Журнал агента ведётся с помощью FileLogger. Запись содержит: ID цены, старое и новое значение, коэффициент, время. Файл ротируется по размеру 10 MB.

Официальная документация 1С-Битрикс: «Агенты — это функции, которые выполняются по расписанию».

Параметры агента: что настраиваем

Параметр Рекомендация
Интервал запуска 1 раз в сутки (00:00)
Размер пакета 500 товаров
Допустимое отклонение курса 5%
Логирование FileLogger с ротацией

Как мы реализуем пересчёт: компоненты и код

Наша команда настраивает полный цикл: от провайдера курсов до агента с логгированием.

  1. Провайдер курсов. Если нужен нестандартный источник (например, НБ РБ), пишем класс, реализующий \Bitrix\Currency\RateProvider. Для типовых (ЦБ РФ, ЕЦБ) — готовое решение.
  2. Автообновление курсов. Настраиваем cron-задание cron_events.php с вызовом \Bitrix\Currency\CurrencyManager::updateCurrencyRates(). Без cron обновление выполняется только при хитах — на портале с 10 000+ товаров курс может не обновиться до полудня.
  3. Агент пересчёта. Код разбит на пакеты по 500 товаров, чтобы не выходить за лимит max_execution_time. Подробнее о агентах.

Процесс работы: от анализа до поддержки

  1. Анализ. Изучаем структуру каталога: какие типы цен, в каких валютах, какие группы пользователей. Определяем провайдера курсов и правила округления.
  2. Проектирование. Разрабатываем ТЗ на агент: интервал запуска, пакетная обработка, аномалии (отклонение >5% — блокировка и уведомление).
  3. Реализация. Пишем код провайдера (если нужен), агента, логгера. Используем transactions для атомарности.
  4. Тестирование. Проверяем на копии портала: имитируем скачки курса, смотрим логи. Гарантируем, что агент отработает без сбоев.
  5. Деплой и обучение. Разворачиваем на боевом сервере, документируем работу, обучаем администратора.

Типичные ошибки при настройке

  • Отсутствие cron: обновление только по хитам, задержка до нескольких часов.
  • Неправильное округление: цены с большим числом знаков после запятой.
  • Агент без пакетной обработки: тайм-аут на каталогах от 10 000 товаров.

Что входит в услугу

  • Разработка кастомного провайдера курсов (НБ РБ, ЦБ и др.).
  • Агент пересчёта с пакетной обработкой и защитой от аномалий.
  • Настройка cron-заданий и логирования (FileLogger).
  • Документация по интеграции и инструкция для администратора.
  • Гарантия 30 дней на безотказную работу агента.
Чек-лист проверки агента
  • Агент запускается по cron ежедневно в 00:00.
  • Размер пакета — 500 товаров.
  • Допустимое отклонение курса — 5%.
  • Логирование настроено, файл ротируется при 10 MB.
  • Уведомления администратору при аномалиях.

Закажите бесплатный аудит вашего каталога — оценим объём работ. Получите консультацию инженера по Битрикс — это бесплатно. Опыт нашей команды — более 10 лет в разработке на Битрикс. Мы работаем с порталами любого масштаба: от 1 000 до 100 000 товаров.