פורטל B2B עם 15,000 מוצרים: מחירים ביורו, צדדים מתקשרים משלמים בדולרים. שער החליפין משתנה מדי יום. עדכון ידני של 15,000 פריטים אורך 8 שעות עם הסתברות שגיאה של 30%. אנו הופכים תהליך זה לאוטומטי — הסוכן האוטומטי מבצע זאת ב-2 דקות, מהיר פי 12 מעדכון ידני. עדכוני מחירים ידניים עולים כ-500$ לחודש בזמן עבודה; האוטומציה מפחיתה זאת ל-10$. הפתרון מתחיל ב-500$ ומחזיר את עצמו תוך חודש. החיסכון השנתי האופייני נע בין 5,000$ ל-12,000$. הזמינו בדיקת אודיט חינם של המערכת הנוכחית שלכם — זה אורך לא יותר משעה.
מדוע המרה רגילה אינה מתאימה ל-B2B?
המרה בזמן אמת באמצעות CCurrencyRates::ConvertCurrency() יוצרת אי-ודאות: המחיר משתנה עם כל בקשה. עבור B2B עם רשימות מחירים קבועות, יש צורך בחישוב מחירים מחדש מאוחסן באמצעות סוכן. זה נותן מחיר יומי יציב ופחות שאילתות מסד נתונים ב-70%.
| גישה | יציבות מחירים | עומס על השרת | בקרה |
|---|---|---|---|
| המרה בזמן אמת | נמוכה | גבוה (כל בקשה) | אין |
| סוכן חישוב מחדש | גבוהה (קבוע ליום) | נמוך (עיבוד אצווה) | יומן מלא |
כיצד להגן על נתונים מפני חריגות בשער?
שערים מ-API ציבוריים אינם מושלמים: יכולים להופיע אפסים, ערכים מיושנים או קפיצות זמניות. לסוכן החישוב מחדש יש הגנה מובנית מפני חריגות: אם השער החדש שונה מהקודם ביותר מ-5%, העדכון נחסם. המנהל מקבל הודעה באמצעות \Bitrix\Main\Mail\Event::send(), והאירוע מתועד ביומן עם הערכים המקוריים והנפסלים. זה מונע הפסדים מתמחור שגוי — בניסיון שלנו, זה הציל לקוח מהפסד של 10,000$ ביום אחד.
כיצד להגדיר חישוב מחירים אוטומטי לפי שער חליפין ב-1C-Bitrix?
הגדרת חישוב מחירים אוטומטי לפי שער חליפין ב-1C-Bitrix כוללת שלושה שלבים: בחירת ספק שערים, עדכוני שערים אוטומטיים וסוכן החישוב מחדש. בהשוואה לעדכון ידני, האוטומציה מפחיתה את הזמן פי 4 ומבטלת את הסתברות השגיאה. פרויקט טיפוסי חוסך עלויות משמעותיות של משכורות מנהלים.
בחירת ספק שערים
עבור BYN אנו משתמשים ב-API של NBRB, עבור EUR/GBP — ב-ECB. השוואת ספקים:
| ספק | מטבע | תדירות עדכון | מאפיינים |
|---|---|---|---|
| NBRB | BYN | פעם ביום | שער רשמי, XML |
| הבנק המרכזי של רוסיה | USD | יומי | JSON API, חובה עבור RF |
| ECB | 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']); } :
// Пример: агент пересчёта цен для типа цены 'Розничная' (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. הרשומה מכילה: מזהה מחיר, ערכים ישנים וחדשים, מקדם, זמן. הקובץ מתחלף בגודל 10 MB. יישום זה מנצל את מטמון D7 ORM ושלמות טרנזקציונלית לביצועים מיטביים.
תיעוד רשמי של 1C-Bitrix: "סוכנים הם פונקציות שפועלות לפי לוח זמנים."
פרמטרי סוכן: מה אנו מגדירים
| פרמטר | המלצה |
|---|---|
| מרווח ביצוע | פעם ביום (00:00) |
| גודל אצווה | 500 פריטים |
| סטיית שער מותרת | 5% |
| תיעוד ביומן | FileLogger עם רוטציה |
כיצד אנו מיישמים את החישוב מחדש: רכיבים וקוד
הצוות שלנו מגדיר את המחזור המלא: מספק השערים ועד לסוכן עם תיעוד ביומן.
-
ספק שערים. אם יש צורך במקור לא סטנדרטי (למשל, NBRB), אנו כותבים מחלקה המיישמת
\Bitrix\Currency\RateProvider. עבור ספקים סטנדרטיים (הבנק המרכזי של רוסיה, ECB) — פתרון מוכן. - עדכון שערים אוטומטי. אנו מגדירים משימת cron
cron_events.phpעם קריאה ל-\Bitrix\Currency\CurrencyManager::updateCurrencyRates(). ללא cron, עדכונים מתבצעים רק בכניסות — בפורטל עם 10,000+ פריטים, השער עשוי שלא להתעדכן עד הצהריים. - סוכן חישוב מחדש. הקוד מחולק לאצוות של 500 פריטים כדי להישאר במסגרת
max_execution_time. מידע נוסף על סוכנים.
תהליך: מניתוח ועד תמיכה
- ניתוח. אנו בוחנים את מבנה הקטלוג: אילו סוגי מחירים, באילו מטבעות, ואילו קבוצות משתמשים. אנו קובעים את ספק השערים וכללי העגול.
- תכנון. אנו מפתחים מפרט טכני לסוכן: מרווח ביצוע, עיבוד אצווה, טיפול בחריגות (סטייה >5% — חסימה והודעה).
- יישום. אנו כותבים את קוד הספק (אם נדרש), את הסוכן ואת הלוגר. אנו משתמשים בטרנזקציות לאטומיות.
- בדיקות. אנו בודקים על עותק של הפורטל: מדמים קפיצות שער, בודקים יומנים. אנו מבטיחים שהסוכן פועל ללא תקלות.
- פריסה והדרכה. אנו פורסים על שרת הייצור, מתעדים את העבודה ומכשירים את המנהל.
טעויות הגדרה אופייניות
- ללא cron: עדכונים רק בכניסות, עיכוב של מספר שעות.
- עגול שגוי: מחירים עם יותר מדי ספרות עשרוניות.
- סוכן ללא עיבוד אצווה: פסק זמן בקטלוגים מעל 10,000 פריטים.
מה כולל השירות
- פיתוח ספק שערים מותאם אישית (NBRB, בנק מרכזי וכו').
- סוכן חישוב מחדש עם עיבוד אצווה והגנה מפני חריגות.
- הגדרת משימות cron ותיעוד ביומן (
FileLogger). - תיעוד אינטגרציה והוראות למנהל.
- אחריות ל-30 יום על זמינות הסוכן.
רשימת בדיקה לסוכן
- הסוכן פועל דרך cron יומי בשעה 00:00.
- גודל אצווה מוגדר ל-500 פריטים.
- סטיית שער מותרת: 5%.
- תיעוד ביומן מוגדר, הקובץ מתחלף ב-10 MB.
- הודעות למנהל על חריגות.
הזמינו בדיקת אודיט חינם של הקטלוג שלכם — נעריך את עומס העבודה. קבלו ייעוץ עם מהנדס Bitrix — זה חינם. לצוות שלנו ניסיון של למעלה מ-10 שנים בפיתוח Bitrix וביצענו למעלה מ-150 פרויקטים. אנו עובדים עם פורטלים בכל היקף: מ-1,000 עד 100,000 פריטים. החל מ-500$, ההשקעה מחזירה את עצמה תוך חודש.







