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 с ротацией |
Как мы реализуем пересчёт: компоненты и код
Наша команда настраивает полный цикл: от провайдера курсов до агента с логгированием.
-
Провайдер курсов. Если нужен нестандартный источник (например, НБ РБ), пишем класс, реализующий
\Bitrix\Currency\RateProvider. Для типовых (ЦБ РФ, ЕЦБ) — готовое решение. -
Автообновление курсов. Настраиваем cron-задание
cron_events.phpс вызовом\Bitrix\Currency\CurrencyManager::updateCurrencyRates(). Без cron обновление выполняется только при хитах — на портале с 10 000+ товаров курс может не обновиться до полудня. -
Агент пересчёта. Код разбит на пакеты по 500 товаров, чтобы не выходить за лимит
max_execution_time. Подробнее о агентах.
Процесс работы: от анализа до поддержки
- Анализ. Изучаем структуру каталога: какие типы цен, в каких валютах, какие группы пользователей. Определяем провайдера курсов и правила округления.
- Проектирование. Разрабатываем ТЗ на агент: интервал запуска, пакетная обработка, аномалии (отклонение >5% — блокировка и уведомление).
- Реализация. Пишем код провайдера (если нужен), агента, логгера. Используем transactions для атомарности.
- Тестирование. Проверяем на копии портала: имитируем скачки курса, смотрим логи. Гарантируем, что агент отработает без сбоев.
- Деплой и обучение. Разворачиваем на боевом сервере, документируем работу, обучаем администратора.
Типичные ошибки при настройке
- Отсутствие cron: обновление только по хитам, задержка до нескольких часов.
- Неправильное округление: цены с большим числом знаков после запятой.
- Агент без пакетной обработки: тайм-аут на каталогах от 10 000 товаров.
Что входит в услугу
- Разработка кастомного провайдера курсов (НБ РБ, ЦБ и др.).
- Агент пересчёта с пакетной обработкой и защитой от аномалий.
- Настройка cron-заданий и логирования (
FileLogger). - Документация по интеграции и инструкция для администратора.
- Гарантия 30 дней на безотказную работу агента.
Чек-лист проверки агента
- Агент запускается по cron ежедневно в 00:00.
- Размер пакета — 500 товаров.
- Допустимое отклонение курса — 5%.
- Логирование настроено, файл ротируется при 10 MB.
- Уведомления администратору при аномалиях.
Закажите бесплатный аудит вашего каталога — оценим объём работ. Получите консультацию инженера по Битрикс — это бесплатно. Опыт нашей команды — более 10 лет в разработке на Битрикс. Мы работаем с порталами любого масштаба: от 1 000 до 100 000 товаров.







