עדכון מחירים אוטומטי בכמות גדולה לקטלוגים של 1C-Bitrix

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

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

שאלות נפוצות

ספק שולח מחירון עם 3000 מחירי רכישה חדשים. מרווח הקמעונאי שלך קבוע על 40%. אתה צריך לעדכן את המחירים הקמעונאיים עד הבוקר. עדכון ידני אינו ריאלי: 8–10 שעות של עבודה מייגעת עם שגיאות עיגול. ייבוא דרך 1C לא תמיד זמין. עדכון מחירים בכמות גדולה דרך Bitrix API הוא הפתרון שהקמנו תוך שעות. סקריפט PHP המשתמש ב-D7 ORM מעבד 3000 רשומות תוך 2–3 דקות. סוגי מחירים, קישורי אינפובלוק, תלות בכמות, ניקוי מטמון מתויג—כל אלה דורשים קוד מדויק. לצוות שלנו יש ניסיון של 10+ שנים במשימות כאלה והוא מספק תוצאות יציבות. מפתחי 1C-Bitrix מוסמכים מציעים פתרון סוהר. צור קשר כדי לדון בקטלוג שלך.

בעיות שעדכון מחירים בכמות גדולה פותר

עריכה ידנית של אלפי מוצרים לוקחת ימים; סקריפט מטפל בזה תוך דקות. שגיאות עיגול בחישוב מרווח ידני—אוטומציה מבטלת טעויות הקלדה. תלות ב-1C—כאשר החלפת CommerceML לא מוגדרת או לא זמינה זמנית, ה-API מציל את המצב. קטלוגים עד 100,000 מוצרים מעובדים ללא השבתה.

איך עדכון בכמות גדולה עובד דרך D7 ORM

מחירים מאוחסנים ב-b_catalog_price. שדות מפתח: PRODUCT_ID, CATALOG_GROUP_ID (סוג מחיר), PRICE, CURRENCY, QUANTITY_FROM, QUANTITY_TO (לטווחי מחירים). סוגי מחירים נמצאים ב-b_catalog_group: BASE הוא הבסיס, אחרים נוספים (קמעונאי, סיטונאי, רכישה). CATALOG_GROUP_ID = 1 בדרך כלל אומר מחיר בסיס, אבל זה תלוי בהגדרה הספציפית.

השוואת שיטות עדכון

עדכון ישיר דרך API מהיר פי 50 מ-CommerceML לעדכונים חד-פעמיים—יתרון מפתח למשימות דחופות.

שיטה מהירות מיומנות נדרשת מתאים ל
ייבוא דרך 1C CommerceML בינונית, תלוי בסנכרון ידע ב-1C ו-CommerceML עדכונים קבועים עם 1C
עדכון ישיר דרך D7 ORM גבוהה—3000 רשומות תוך דקות PHP, Bitrix API עדכונים חד-פעמיים בכמות גדולה
CSV/Excel + סקריפט גבוהה, אבל דורש ניתוח PhpSpreadsheet, Bitrix D7 כל עדכון עם קבצי ספק

עבודה עם PriceTable API

קבל מזהה סוג מחיר לפי שם:

$priceType = \Bitrix\Catalog\GroupTable::getList([
    'filter' => ['NAME' => 'Розничная'],
    'select' => ['ID'],
])->fetch();
$priceTypeId = $priceType['ID'];

לפרטים נוספים, ראה את התיעוד הרשמי.

יישום: מטעינת מחירון ועד ניקוי מטמון

טעינה מ-Excel/CSV וחישוב מרווח

מחירוני ספקים בדרך כלל מגיעים ב-Excel או CSV. לניתוח Excel, אנו משתמשים ב-PhpSpreadsheet:

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('/path/to/price.xlsx');
$sheet = $spreadsheet->getActiveSheet();
foreach ($sheet->getRowIterator(2) as $row) { // со второй строки (пропускаем заголовок)
    $cells = $row->getCellIterator();
    $cells->setIterateOnlyExistingCells(false);
    $rowData = [];
    foreach ($cells as $cell) {
        $rowData[] = $cell->getValue();
    }
    $articul = $rowData[0]; // A: артикул
    $newPurchase = (float)$rowData[3]; // D: закупочная цена
    // Найти товар по артикулу
    $productId = findProductByArticul($articul);
    if ($productId) {
        updatePrice($productId, PURCHASE_PRICE_TYPE_ID, $newPurchase);
        updatePrice($productId, RETAIL_PRICE_TYPE_ID, calcRetailPrice($newPurchase, 40.0));
    }
}

חישוב מחיר קמעונאי לפי מרווח:

function calcRetailPrice(float $purchasePrice, float $markup): float {
    return round($purchasePrice * (1 + $markup / 100), 2);
}

ניקוי מטמון ויומן שינויים

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

\Bitrix\Main\Application::getInstance()->getTaggedCache()->clearByTag('catalog');
// или сброс по инфоблоку
\Bitrix\Main\Application::getInstance()->getTaggedCache()->clearByTag('iblock_id_' . $iblockId);

לחלופין, אל תנקה מטמון גלובלי וחכה לפקיעת TTL טבעית. אבל אם המחירים השתנו למבצע מוגבל בזמן, ניקוי הוא חובה.

לצורכי ביקורת, אנו ממליצים לשמור מחירים ישנים לפני העדכון בטבלה מותאמת אישית $priceType = \Bitrix\Catalog\GroupTable::getList([ 'filter' => ['NAME' => 'Розничная'], 'select' => ['ID'], ])->fetch(); $priceTypeId = $priceType['ID']; עם שדות $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('/path/to/price.xlsx'); $sheet = $spreadsheet->getActiveSheet(); foreach ($sheet->getRowIterator(2) as $row) { // со второй строки (пропускаем заголовок) $cells = $row->getCellIterator(); $cells->setIterateOnlyExistingCells(false); $rowData = []; foreach ($cells as $cell) { $rowData[] = $cell->getValue(); } $articul = $rowData[0]; // A: артикул $newPurchase = (float)$rowData[3]; // D: закупочная цена // Найти товар по артикулу $productId = findProductByArticul($articul); if ($productId) { updatePrice($productId, PURCHASE_PRICE_TYPE_ID, $newPurchase); updatePrice($productId, RETAIL_PRICE_TYPE_ID, calcRetailPrice($newPurchase, 40.0)); } } . זה מאפשר שחזור עדכונים שגויים וניתוח דינמיקת מחירים.

תהליך עדכון שלב אחר שלב

  1. הכן מחירון בפורמט Excel או CSV.
  2. נתח את הקובץ עם PhpSpreadsheet, חלץ SKU ומחירים.
  3. אמת ומפה SKU למזהי מוצרים באינפובלוק.
  4. הרץ לולאת אצווה של 100 רשומות עם הפסקה של 50ms לעדכון מחירים דרך PriceTable API.
  5. חשב מחיר קמעונאי לפי מרווח וכתוב את שני סוגי המחירים.
  6. נקה את המטמון המתויג של הקטלוג.
  7. כתוב יומן שינויים לטבלת function calcRetailPrice(float $purchasePrice, float $markup): float { return round($purchasePrice * (1 + $markup / 100), 2); } .

איך להימנע משגיאות במהלך עדכון בכמות גדולה

בדוק את הסקריפט על עותק של הקטלוג לפני הייצור. הפעל רישום שגיאות ב-PHP והשתמש בטרנזקציות MySQL לאטומיות. אנו כוללים את כל האלמנטים האלה בהיקף העבודה הסטנדרטי.

שגיאות אופייניות

  • מזהה סוג מחיר שגוי—מחירים הולכים למקום הלא נכון.
  • אין אצווה—MySQL קורס על 10,000 מוצרים.
  • חוסר ניקוי מטמון—מחירים ישנים נשארים בחנות.
  • אין טרנזקציה—עדכון חלקי במקרה של כשל.

אם העדכון נכשל, הפעל מחדש את הסקריפט—הוא מדלג על רשומות שכבר עודכנו אם יש דגל \Bitrix\Main\Application::getInstance()->getTaggedCache()->clearByTag('catalog'); // или сброс по инфоблоку \Bitrix\Main\Application::getInstance()->getTaggedCache()->clearByTag('iblock_id_' . $iblockId); . או שחזר באמצעות טבלת catalog_price_history אם נוצרה.

מה כלול בהגדרת עדכון בכמות גדולה ואילו ערבויות אנו מספקים

  • ניתוח מבנה הקטלוג הנוכחי וסוגי מחירים.
  • פיתוח סקריפט ייבוא מ-Excel/CSV עם חישוב מרווח אוטומטי.
  • יישום אצווה לנפחים גדולים (עד 100,000 מוצרים).
  • הגדרת ניקוי מטמון מתויג.
  • יצירת טבלת יומן שינויים.
  • בדיקה על עותק של הקטלוג.
  • תיעוד סקריפט והוראות הפעלה.
  • ערבות לפעולה יציבה ל-30 יום.

צור קשר להערכת פרויקט. בממוצע, אנו מקצרים את זמן העדכון משעות לדקות עבור קטלוגים של 10,000+ פריטים.