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

עדכון אלפי מחירים ידנית גוזל שעות וכרוך בסיכון לשגיאות עיגול, במיוחד כשספק שולח רשימת מחירים חדשה. אנו מגדירים עדכוני מחירים בכמות גדולה ב-1C-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
עדכון ישיר דרך API עם 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+ פריטים.