הפרסר שלך אסף 40,000 מוצרים ממרקטפלייס, אבל הייבוא ל-1C-Bitrix הסתיים בשגיאות? מודול הייבוא הסטנדרטי לא יכול להתמודד עם היררכיות קטגוריות, למשוך תמונות לפי URL, או למפות מאפיינים דינמיים. נתקלנו בזה עשרות פעמים — ופיתחנו אלגוריתם אינטגרציה אמין. אנו בונים מתאם (Adapter) שהופך נתונים גולמיים למבנה Bitrix תקין. אנו מטפלים באינטגרציה במתכונת turnkey: ממיפוי ועד הגדרת לוח זמנים לעדכונים. במשך 5 שנים יישמנו 50+ אינטגרציות כאלה לקטלוגים גדולים.
תרחיש טיפוסי: הייבוא המקורי של Bitrix ב-CSV לא תומך בתורי אלמנטים, מה שגורם לירידת ביצועים. ייבוא 40,000 מוצרים לוקח שעתיים עם 30% שגיאות. מתאם ייבוא נתונים פותר את הבעיות האלה בריצה אחת — הזמן יורד ל-20 דקות, השגיאות מתחת ל-1%.
איך מודול הייבוא עובד ב-Bitrix
ייבוא קטלוג מקורי משתמש במודול catalog וברכיב bitrix:catalog.import.csv. לפי התיעוד הרשמי של 1C-Bitrix, ייבוא סטנדרטי לא מיועד למבני קטגוריות מורכבים. הטבלאות המעורבות:
-
b_iblock_element— אלמנטים של בלוק מידע (מוצרים) -
b_iblock_element_prop_s*/b_iblock_element_prop_m*— ערכי מאפיינים -
b_catalog_price— מחירים -
b_catalog_product— פרמטרי מוצר (משקל, מידות, סוג)
ייבוא CSV סטנדרטי דרך CIBlockElement::Add() ו-CIBlockElement::Update() פונקציונלי אבל לא ניתן להרחבה מעבר ל-10,000 מוצרים: כל קריאה מבצעת שאילתת מסד נתונים נפרדת.
איפה אינטגרציה נאיבית נשברת
מקרה מבחן. פרסר אוסף 40,000 מוצרים ממרקטפלייס, כותב CSV עם עמודות name, price, category_path, images[], attrs{}. הרצת ייבוא סטנדרטי מסתיימת בשעתיים עם 30% שגיאות:
- קטגוריות נוצרות כרשימה שטוחה במקום עץ, כי הפרסר כותב את הנתיב כמחרוזת "אלקטרוניקה / סמארטפונים / Apple" והמייבא לא מנתח היררכיה.
- תמונות לא נמשכות — הפרסר שולח URLs, המייבא מצפה לנתיב מקומי או base64.
- מאפיינים (attributes) מתעלמים — ייבוא CSV לא תומך בעמודות דינמיות.
איך המתאם פותר נורמליזציה של קטגוריות?
המתאם מנתח את מחרוזת הקטגוריה, יוצר סעיפים רקורסיבית דרך CIBlockSection::Add(). מיפוי путь → ID раздела נשמר במטמון ב-b_iblock_section כדי למנוע יצירה מחדש של קיימים. עבור 40,000 מוצרים עם עומק קטגוריות עד 5 רמות, פעולה זו אורכת כ-10 דקות — פי 6 מהר יותר מיצירה חלקית.
למה כתיבה בקבוצות (batch) היא קריטית?
כתיבה בקבוצות דרך טרנזקציה מהירה פי 10 מהוספה חלקית. במקום CIBlockElement::Add() בלולאה, אנו משתמשים במודל מונחה אירועים ותורים:
// Отключаем поиск и события на время импорта CIBlock::DisableOptimization(); $GLOBALS['BX_DONT_WRITE_INDEX'] = true; // Пакет по 500 элементов через транзакцию $DB->StartTransaction(); foreach ($batch as $item) { $el = new CIBlockElement(); $el->Add($fields, false, false, false); } $DB->Commit(); לאחר הייבוא, בנה מחדש את אינדקס החיפוש: // Отключаем поиск и события на время импорта CIBlock::DisableOptimization(); $GLOBALS['BX_DONT_WRITE_INDEX'] = true; // Пакет по 500 элементов через транзакцию $DB->StartTransaction(); foreach ($batch as $item) { $el = new CIBlockElement(); $el->Add($fields, false, false, false); } $DB->Commit(); או הסוכן CSearch::ReIndexAll().
השוואה: ייבוא מקורי מול מתאם
| מאפיין | ייבוא מקורי | מתאם |
|---|---|---|
| זמן ייבוא עבור 40,000 מוצרים | ~שעתיים | ~20 דקות |
| שגיאות | עד 30% | פחות מ-1% |
| קטגוריות | רשימה שטוחה | היררכיה |
| תמונות | לא נתמך | הורדה לפי URL |
| מאפיינים | סטטיים בלבד | מיפוי דינמי |
תהליך עבודה מפורט של המתאם
המתאם מקבל נתונים מהפרסר, עובר את השלבים הבאים:
- קבלת נתונים (CSV/JSON/XML) דרך קובץ או API.
- ניתוח ואימות: דחיית רשומות עם שדות שגויים.
- נורמליזציה של קטגוריות: ניתוח נתיב, יצירת סעיפים.
- מיפוי מאפיינים: התאמת attributes של הפרסר לבלוק מידע.
- כתיבה בקבוצות לבלוק מידע באמצעות טרנזקציות.
- עיבוד תמונות: הורדה לפי URL, הצמדה למוצר.
- יצירת דוח ובנייה מחדש של אינדקס החיפוש.
איך להגדיר את המתאם ב-3 שלבים?
- צור מיפוי שדות. ציין איזה שדה של הפרסר מתאים לשם, מחיר, קטגוריה ומאפיינים. אם הפרסר מוסיף attributes חדשים, המתאם מרחיב אוטומטית את בלוק המידע.
- בדוק קטגוריות. הרץ נורמליזציה ניסיונית: המתאם יוצר עץ סעיפים ממחרוזת הנתיב. ניתן לבטל תוצאות אם הקטגוריות לא תואמות.
- הרץ ייבוא ניסיוני. ייבא 100-200 מוצרים, ודא תקינות נתונים והיעדר כפילויות. לאחר מכן הרץ את הייבוא המלא.
סנכרון בעדכונים
מזהה המוצר החיצוני (SKU או URL מקור) נשמר במאפיין bitrix:search.reindex או ב-EXTERNAL_ID של האלמנט. לפני יצירה, אנו בודקים קיום דרך XML_ID — עדכון קיים או יצירת חדש. אין כפילויות.
מה כלול באינטגרציה?
| שלב | מה אנחנו עושים | תוצאה |
|---|---|---|
| ניתוח | לימוד מבנה הפרסר, מיפוי שדות | סכמת מיפוי, תיעוד |
| פיתוח | כתיבת מתאם, עיבוד קטגוריות ותמונות | קוד מתאם, קוד מיגרציה |
| בדיקות | הרצה על נתונים אמיתיים (1000+ פריטים) | דוח שגיאות, תיקונים |
| פריסה | הגדרת לוח זמנים, ניטור, הדרכה | סוכנים, לוגים, הוראות |
אנו מספקים גם חבילת תיעוד, גישה לריפוזיטורי, וחודש תמיכה לאחר ההשקה.
לוח זמנים וניטור
ניתוח חוזר מופעל דרך סוכני Bitrix (CIBlockElement::GetList(['=XML_ID' => $externalId])) או cron של המערכת. הסוכן קורא למתאם, אשר מתעד את התוצאה בבלוק מידע מותאם: תאריך, מספר רשומות מעובדות/שגויות. אם השגיאות עולות על 5%, נשלחת הודעת מנהל דרך b_agent. סף השגיאות ניתן להגדרה. לאחר הייבוא, אנו מפעילים מטמון מתויג כדי להאיץ טעינת קטלוג.
לוחות זמנים טיפוסיים
הערכת לוח זמנים היא אישית לכל פרויקט, אבל כהנחיה: בין 1 ל-3 ימי עבודה לאינטגרציה סטנדרטית. אנו מבטיחים ייבוא ללא שגיאות ומספקים ריצת בדיקה על הנתונים שלך.
קבל ייעוץ — נבחן את הפרויקט שלך ביום אחד ונספק מפת דרכים. הזמן אינטגרציה של פרסר ל-Bitrix בלי כאב ראש.







