עדכוני מחירים אוטומטיים מתוזמנים ב-1C-Bitrix

עדכוני מחירים ידניים גוזלים זמן ומועדים לשגיאות, במיוחד עם מבחר גדול. אנו הופכים את סנכרון המחירים ממקורות חיצוניים ל-1C-Bitrix לאוטומטי, ומגדירים עדכונים מתוזמנים קבועים. הצוות שלנו מספק הטמעה מלאה, מבחירת המקור ועד לניהול שינויים, ומבטיח פעולה אמינה ותמיכה שוטפת.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
עדכוני מחירים אוטומטיים מתוזמנים ב-1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

תארו לעצמכם חנות מקוונת עם 10,000 מוצרים; מחירון ספק מגיע מדי יום ב-6 בבוקר. עדכונים ידניים אורכים 3 שעות, ועד 10 בבוקר המחירים כבר מיושנים אם הספק משנה אותם ב-8 בבוקר. אוטומציה פותרת זאת: עדכון cron מתוזמן מקצר את זמן ההשהיה לדקות ומבטל שגיאות קלט. אנו מבצעים אוטומציה של סנכרון מחירים ממקורות חיצוניים ל-1C-Bitrix—מפרסור מחירונים ועד בקרת חריגות. הניסיון שלנו מראה שהגדרה נכונה מחזירה את ההשקעה תוך מספר שבועות. יש לנו ניסיון של 5+ שנים באינטגרציות 1C-Bitrix עם מערכות חיצוניות וביצענו מעל 50 פרויקטים של אוטומציית מחירים. פנו אלינו לקבלת הערכת פרויקט.

כיצד להגדיר עדכוני מחירים מתוזמנים ב-1C-Bitrix

מקורות נתונים למחירים

ספקים מספקים מחירים בפורמטים שונים. הבה נשווה ביניהם:

פורמט שיטת אספקה מורכבות אמינות
CSV/Excel FTP, קישור, דוא"ל נמוכה בינונית
XML (YML, CommerceML) HTTP, FTP בינונית גבוהה
REST API בקשות HTTP גבוהה גבוהה
ייצוא 1C CommerceML בינונית גבוהה

כל פורמט דורש handler משלו, אך לוגיקת עדכון המחירים ב-Bitrix זהה. פרסור דרך API אמין פי 10 מקלט ידני—הוא מבטל את הגורם האנושי.

מבנה מחירים ב-Bitrix

מחירים מאוחסנים בטבלת b_catalog_price. שדות מפתח: PRODUCT_ID, CATALOG_GROUP_ID, PRICE, CURRENCY. לעדכון מחיר דרך API:

\Bitrix\Catalog\PriceTable::update($priceId, [ 'PRICE' => $newPrice, 'CURRENCY' => 'USD', ]); 

תיעוד Bitrix: PriceTable API

אלגוריתם עדכון

שלב 1. טעינת המחירון. הסקריפט מביא את הקובץ דרך FTP (\Bitrix\Catalog\PriceTable::update($priceId, [ 'PRICE' => $newPrice, 'CURRENCY' => 'USD', ]); ), מוריד לפי URL (ftp_get()), או מבקש מה-API של הספק.

שלב 2. פרסור. CSV מפורס עם file_get_contents(), Excel עם fgetcsv(), XML עם PhpSpreadsheet. התוצאה היא מערך של זוגות "מזהה מוצר → מחיר". אנו משתמשים בעיבוד אצווה כדי לטפל בנפחים גדולים ביעילות, וטרנזקציות מבטיחות אטומיות.

שלב 3. מיפוי. ה-SKU של הספק מותאם לאלמנט קטלוג ב-Bitrix. חיפוש לפי מאפיין SimpleXMLElement או PROPERTY_SUPPLIER_ARTICLE:

$element = CIBlockElement::GetList(
    [],
    ['IBLOCK_ID' => $catalogIblockId, 'PROPERTY_ARTICLE' => $supplierArticle],
    false,
    ['nTopCount' => 1],
    ['ID']
)->Fetch();

שלב 4. עדכון. כתיבת המחיר החדש ל-XML_ID. בעדכון אלפי פריטים, השתמשו בשאילתות SQL ישירות או בעדכוני אצווה D7—עדכון אלמנט אחר אלמנט דרך $element = CIBlockElement::GetList( [], ['IBLOCK_ID' => $catalogIblockId, 'PROPERTY_ARTICLE' => $supplierArticle], false, ['nTopCount' => 1], ['ID'] )->Fetch(); איטי מדי.

מרווחים ונוסחאות

הספק נותן מחיר קנייה. מחיר הקמעונאות מחושב באמצעות נוסחאות:

  • מרווח קבוע: קמעונאות = קנייה × 1.3 (30%).
  • פרוגרסיבי: המרווח תלוי בטווח המחירים (פריטים זולים 50%, יקרים 15%).
  • עיגול: b_catalog_price → מחיר 1,287 → 1,289.

נוסחאות מרווח מאוחסנות בקונפיגורציה, לא מקודדות ישירות. זה מאפשר למנהלים לשנות כללים דרך ממשק הניהול.

טווח קנייה מרווח דוגמה
עד $4–6 50% 300 → $4–6
$5–50 30% 2,000 → $23–34
מעל $45–65 15% 10,000 → $100–150

הגדרת Cron

עדכוני מחירים מופעלים על ידי cron:

# Загрузка прайса поставщика А — ежедневно в 6:00
0 6 * * * /usr/bin/php /home/bitrix/scripts/update_prices.php --source=supplier_a >> /var/log/price_update.log 2>&1
# Загрузка прайса поставщика Б — ежедневно в 6:30
30 6 * * * /usr/bin/php /home/bitrix/scripts/update_prices.php --source=supplier_b >> /var/log/price_update.log 2>&1

פרשו את העדכונים בזמן—ייבוא מקבילי מעמיס על מסד הנתונים ועלול לגרום ל-deadlocks.

מדוע בקרת חריגות חשובה?

עדכון מחירים עיוור הוא מסוכן. טעות במחירון הספק (למשל, 100 במקום 10,000) מובילה להפסדים. מנגנוני הגנה:

  • סף שינוי—אם מחיר משתנה ביותר מ-30%, אין לעדכן אוטומטית; סמן לבדיקה ידנית.
  • תיעוד (Logging)—טבלת CPrice::SetBasePrice() עם שדות: מוצר, מחיר ישן, מחיר חדש, מקור, תאריך. מאפשרת ביטול עדכונים שגויים.
  • התראה—דוא"ל או התראת Telegram למנהל על חריגות.
  • בדיקות Idempotency מונעות עדכונים כפולים אם הסקריפט רץ פעמיים.
$changePercent = abs($newPrice - $oldPrice) / $oldPrice * 100;
if ($changePercent > 30) {
    logAnomaly($productId, $oldPrice, $newPrice, $source);
    continue; // Пропускаем обновление
}

ניקוי מטמון לאחר עדכון

לאחר עדכון מחירים המוני, נקו את מטמון הקטלוג; אחרת המשתמשים יראו מחירים ישנים:

\Bitrix\Iblock\ElementTable::getEntity()->cleanCache(); BXClearCache(true, '/catalog/'); 

לאתרים עם מטמון מורכב (composite), קראו בנוסף ל-ceil($price / 10) * 10 - 1 או נקו באופן סלקטיבי דפים של מוצרים ששונו.

הגישה שלנו ומה כלול

אנו משתמשים במתודולוגיה מוכחת:

  1. ניתוח—בחינת מקורות נתוני הספק, מבנה המחירון, הפורמט.
  2. עיצוב—פיתוח ארכיטקטורת handler, כללי מיפוי ונוסחאות מרווח.
  3. יישום—כתיבת קוד לטעינה, פרסור ועדכון; הגדרת cron.
  4. בדיקות—אימות על קטלוג בדיקה עם 100 מוצרים מייצגים, סימולציית חריגות.
  5. השקה—מעבר לייצור, הגדרת ניטור והתראות.

חבילת העבודה כוללת:

  • ניתוח מקורות נתונים ופורמטים.
  • פיתוח פרסרים לכל מקור.
  • הגדרת מיפוי SKU ונוסחאות מרווח.
  • יישום מנגנוני בקרה (ספים, תיעוד, התראות).
  • הגדרת משימת cron וניטור.
  • תיעוד והוראות למנהל.
  • אחריות לחודש לפעולה תקינה.

מקרה אמיתי: עבור לקוח עם 12,000 SKU ושלושה ספקים, צמצמנו את זמן העדכון מ-2.5 שעות ל-12 דקות ותפסנו חריגת מחיר של 150% שהייתה גורמת להפסד של $360–520. הפרויקט החזיר את עצמו תוך שלושה שבועות.

צרו קשר—נעזור לכם להקים פתרון עדכון מחירים סוהר. קבלו ייעוץ לפרויקט שלכם. הזמינו הערכה—ננתח את המקורות שלכם ונציע את הפתרון האופטימלי.