Агент перерахунку цін за курсом валют в 1С-Бітрікс

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

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1459
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    808
  • 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 товарів.