איסוף מלאי אוטומטי מחנויות ספקים ב-1C-Bitrix
מצב: הספק לא מספק API, שולח מחירונים פעם בשבוע במייל, והמלאי בפועל משתנה מדי יום. לקוח מבצע הזמנה — המוצר אזל מהמלאי.
אנחנו פותרים את הבעיה הזו על ידי פרסור חלון הראווה של הספק ועדכון השדה CATALOG_QUANTITY ב-1C-Bitrix. פרסור הוא לא תמיד HTML: לעתים קרובות המלאי מאוחסן במשתני JSON בעמוד (window.__PRODUCT_DATA__).
אנחנו משתמשים ב-CURL וב-regex — זה מהיר יותר מדפדפן headless ולא מעמיס על השרת. כדי להתגונן מפני חסימות, אנחנו משתמשים ב-User-Agents אקראיים וברוטציית פרוקסי. למעלה מ-5 שנים בשוק, אוטומטנו איסוף מלאי עבור קטלוגים מ-500 עד 50,000 SKU.
כל פרויקט עובר קונפיגורציה אישית — מבחירת שיטת הפרסור ועד ללוגיקה של טיפול במלאי אפס. הזמינו פיתוח פרסור — ואנחנו ננתח את חלון הראווה של הספק שלכם.
איך אנחנו מפרסרים מלאי מאתרי ספקים
באתר של ספק המלאי יכול להיות מיוצג בדרכים שונות: ערך מספרי (במלאי: 47 יח') — אנחנו מפרסרים את המספר ישירות; סטטוס מלאי (במלאי, בהזמנה, אזל) — אנחנו ממפים אותו ל-0/1/999; מספר מחסנים — אנחנו מסכמים אותם או לוקחים את המחסן הקרוב.
לפעמים המלאי מוסתר במשתני JS — אנחנו מחפשים דרך regex בגוף העמוד, וזה מהיר יותר מדפדפן headless. אם הספק משתמש ב-API (נדיר), אנחנו מתחברים דרך REST.
למה מיפוי מוצרים הוא צוואר הבקבוק הגדול ביותר?
זהו השלב המרכזי. בלי מיפוי אמין, הפרסור חסר תועלת. אפשרויות:
- SKU של הספק — אנחנו מוסיפים מאפיין
SUPPLIER_SKUלאינפובלוק. בזמן הפרסור, אנחנו מחפשים את האלמנט עם הערך הזה דרךCIBlockElement::GetList()עם פילטר לפי מאפיין. - XML_ID — אם מוצרים יובאו בעבר ממחירון הספק, XML_ID עשוי להתאים למזהה הפנימי שלהם.
- EAN/ברקוד — אפשרות אוניברסלית למוצרים ממותגים.
עבור קטלוגים גדולים (10,000+ SKU), סינון לפי מאפיין דרך ORM עובד לאט. עדיף לבנות מיפוי הפוך supplier_sku → element_id ב-Redis או בטבלה מותאמת אישית ולעדכן אותו כשהקטלוג משתנה.
איך המלאי מתעדכן ב-Bitrix
לפי התיעוד של 1C-Bitrix, עדכון כמות המוצר מבוצע דרך המתודה CCatalogProduct::Update.
CCatalogProduct::Update($elementId, [ 'QUANTITY' => $parsedQty, 'QUANTITY_RESERVED' => 0, ]);
אם החנות משתמשת במחסנים (b_catalog_store), אנחנו מעדכנים דרך CCatalogStoreProduct::Update() עם ציון STORE_ID.
כשמעדכנים רק כמות, אל תיגעו ב-ACTIVE — אחרת תאבדו עריכות פעילות ידניות. בצעו UPDATE נפרד רק של השדה הנדרש.
איך לטפל במלאי אפס בלי לאבד מכירות?
אסור להסתיר מוצר אוטומטית כשהמלאי אפס — הספק עשוי לחדש את המחסן למחרת. הלוגיקה העדינה הנכונה:
- כמות = 0 → המוצר נשאר פעיל, אבל מתווסף דגל "בהזמנה".
- כמות = 0 למשך יותר מ-N ימים → התראה למנהל, החלטה ידנית.
- המוצר לא נמצא באתר הספק 3+ פעמים ברצף → דגל
SUPPLIER_DISCONTINUED.
אנחנו מממשים דגלים דרך מאפייני אינפובלוק או שדות של Highload block.
איך להגדיר פרסור מלאי: הוראות שלב-אחר-שלב
- ניתוח חלון הראווה של הספק. אנחנו קובעים את שיטת הפרסור (HTML, משתני JSON, API) ומכינים סלקטורים.
- פיתוח הפרסר. סקריפט PHP עם CURL, תמיכה ב-regex, ובאופן אופציונלי Guzzle. כדי להתגונן מפני חסימות, אנחנו משתמשים ב-User-Agents אקראיים ובפרוקסי.
- הגדרת מיפוי SKU. קישור בין SKU של הספק למזהי המוצרים ב-Bitrix. עבור קטלוגים של 10,000+ SKU, אנחנו משתמשים ב-Redis.
- אינטגרציה ב-Bitrix. סוכן או משימת cron, עדכוני מלאי דרך
CCatalogProduct::Update(). אנחנו בודקים על סט מוצרים לבדיקה. - לוגיקת טיפול במלאי אפס. דגלים אוטומטיים, התראות למנהל. אנחנו בודקים תרחישים: מוצר נעלם, הופיע, מחיר השתנה.
- ניטור ותמיכה. אחרי ההשקה, הפרסר עובד יציב; אם מבנה האתר של הספק משתנה, ההתאמה אורכת לא יותר משעתיים.
מה כלול בעבודה
| רכיב | תיאור |
|---|---|
| ניתוח חלון הראווה של הספק | אנחנו קובעים את שיטת הפרסור (HTML, משתני JSON, API) ומכינים סלקטורים |
| פיתוח הפרסר | סקריפט PHP עם CURL, תמיכה ב-regex, ובאופן אופציונלי Guzzle |
| מיפוי SKU | קישור בין SKU של הספק למזהי המוצרים ב-Bitrix |
| אינטגרציה ב-Bitrix | סוכן או משימת cron, עדכוני מלאי דרך CCatalogProduct::Update() |
| לוגיקת טיפול במלאי אפס | דגלים אוטומטיים, התראות למנהל |
| תיעוד ותמיכה | סכמת מיפוי, הוראות להוספת ספק, שבועיים של תמיכה חינם |
לוח זמנים של העבודה
| שלב | משך |
|---|---|
| ניתוח האתר של הספק, בחירת שיטת הפרסור | 2–4 שעות |
| פיתוח פרסר המלאי | 1–2 ימים |
| הגדרת מיפוי SKU | 4–8 שעות |
| לוגיקת עדכון ב-Bitrix + טיפול במלאי אפס | 4–8 שעות |
| הגדרת תזמון וניטור | 2–4 שעות |
סה"כ: 3–5 ימי עסקים לספק. כל ספק נוסף — +1–2 ימים (מבני אתרים שונים). אנחנו מבטיחים שאחרי ההשקה הפרסור יעבוד יציב, ואם מבנה האתר של הספק משתנה, ההתאמה תארך לא יותר משעתיים. חיסכון בזמן על עיבוד מלאי ידני — עד 80% בחודש. אנחנו נעריך את הפרויקט שלכם — פשוט כתבו לנו. בואו נדון במשימה עכשיו.

