מודול הפקת פיד עבור 1C-Bitrix: אוטומציה של ייצוא
משווק מגלה שפיד המוצרים עבור Yandex.Market מתעדכן פעם ביום באמצעות ייצוא ידני, בעוד שהמחירים בקטלוג משתנים מספר פעמים ביום עקב ייבוא מ-1C. התוצאה: שווקים מציגים מחירים מיושנים — לקוחות לוחצים, רואים מחיר שונה, ועוזבים. מודול הייצוא הסטנדרטי של Bitrix (catalog.export) מטפל במקרים בסיסיים, אך נתקל במגבלות עם דרישות לא סטנדרטיות (מחסנים מרובים, מאפיינים מותאמים אישית, תנאים אזוריים). בפרויקט עם קטלוג של 50,000 מוצרים, פער המחירים הגיע ל-15%, וגרם לשיעור נטישה של 30%. רק לאחר הטמעת מודול מותאם אישית עם עדכונים מצטברים נפתרה הבעיה. הניסיון שלנו כולל למעלה מ-30 פרויקטים מוצלחים. אנו מבטיחים טיפול נכון במלאי וללא כפילויות. צרו קשר למודול המותאם לדרישותיכם.
מדוע ייצוא סטנדרטי אינו מספק להפקת פיד
המודול הסטנדרטי catalog.export אינו תומך ב:
- מחסנים מרובים עם רמות מלאי נפרדות.
- מאפיינים מותאמים אישית לערוצים שונים (לדוגמה,
conditionעבור Google Merchant). - מחירים אזוריים והנחות.
- עדכונים מצטברים — התחדשות מלאה של הפיד בכל פעם, שעל 50,000 מוצרים אורכת 5–10 דקות ומעמיסה על השרת.
מגבלות אלו מובילות לייצוא ידני, שגיאות ונתונים מיושנים. מודול מותאם אישית פותר את כל זה.
כיצד פועל מודול הפקת הפיד
המשימה המרכזית היא להפוך את ההפקה למהירה, גמישה ואוטומטית. המודול בנוי סביב שלושה מרכיבים: מנוע תבניות פיד, מתזמן עדכונים ורגיסטר פורמטים.
רגיסטר הפורמטים מאחסן תצורות עבור כל ערוץ: Yandex.Market (YML), Google Merchant (XML/CSV), VK, Avito, Ozon, פורמטים מותאמים אישית של לקוחות. כל פורמט מתואר על ידי מחלקת PHP המיישמת את FeedFormatInterface:
interface FeedFormatInterface { public function getHeader(): string; public function renderOffer(array $element, array $prices): string; public function getFooter(): string; public function getMimeType(): string; } זה מאפשר הוספת פורמטים חדשים מבלי לגעת בליבת הגנרטור. מידע נוסף על פורמט YML בויקיפדיה.
הגנרטור עובד במצב סטרימינג: נתונים נקראים מ-interface FeedFormatInterface { public function getHeader(): string; public function renderOffer(array $element, array $prices): string; public function getFooter(): string; public function getMimeType(): string; } , b_iblock_element, b_catalog_price דרך b_catalog_product עם פגינציה (קבוצות של 500 פריטים) ונכתבים מיד לקובץ באמצעות DataManager::getList. הפקת פיד של 50,000 מוצרים אינה דורשת 512 MB של זיכרון RAM. הקובץ הסופי מוחלף אטומית (fwrite), כך שסורק לעולם לא מקבל מסמך שנכתב חלקית.
כיצד פועלים פותרי מחירים ומלאי
זהו החלק המשתנה ביותר. פרויקט אחד צריך מחירים למשתמשים לא רשומים, אחר למחירים מיוחדים עם מבצעים, ועוד אחד למחיר המינימלי בכל המחסנים.
המודול מיישם פותר מחירים — אסטרטגיה שבוחרת את המחיר הסופי על סמך קבוצת כללים:
$priceResolver = new PriceResolver([ new DiscountRule($userId), // применить скидки через Sale\Discount new RegionPriceRule($regionCode), // региональная надбавка new MinPriceRule(), // взять минимум среди групп цен ]); $finalPrice = $priceResolver->resolve($productId); מלאי לפי מחסנים. עבור Ozon ופלטפורמות אחרות, יש לציין מלאים עבור מחסנים ספציפיים (rename). המודול מצרף מלאים ממספר מחסנים (עד 50), מחיל הזמנות מ-$priceResolver = new PriceResolver([ new DiscountRule($userId), // применить скидки через Sale\Discount new RegionPriceRule($regionCode), // региональная надбавка new MinPriceRule(), // взять минимум среди групп цен ]); $finalPrice = $priceResolver->resolve($productId); , ומוציא את הכמות הזמינה הנכונה.
סינון מוצרים. דרך ממשק המודול, אתם מגדירים תנאים: רק מוצרים עם מלאי שאינו אפס, סעיפים ספציפיים, החרגה לפי מאפיין b_catalog_store_product. התנאים מורכבים לפילטר עבור b_sale_basket.
מהו עדכון מצטבר?
התחדשות מלאה של פיד עם 50,000 פריטים אורכת 3–5 דקות. עבור שינויי מחירים תכופים, זה בלתי מתקבל על הדעת. המודול תומך במצב מצטבר: דרך אירוע CML2_EXPORT = N, מוצרים ששונו נרשמים, וסוכן מחדש רק את השורות שלהם בפיד כל 15 דקות באמצעות עדכון חלקי (קובץ זמני ותיקון). עדכון זה מהיר פי 10 מהתחדשות מלאה. האירוע מתואר בתיעוד Bitrix.
כיצד ניטור מסייע לפעולת המודול
המודול מתחזק טבלת CIBlockElement::GetList עם היסטוריית הפקה: זמן התחלה/סיום, מספר פריטים, גודל קובץ, שגיאות. ממשק הניהול מציג לוח מחוונים: מתי כל פיד עודכן לאחרונה, כמה מוצרים יוצאו, אילו סוננו ולמה. זה מאפשר זיהוי מהיר של בעיות נתונים או תצורה.
שגיאות נפוצות בהגדרת פיד
- כתובות URL שגויות של תמונות (לא HTTPS). - חסר מזהה מוצר בפורמט `vendorCode`. - חריגה ממגבלת מחיר בשוק. - מיפוי קטגוריות שגוי. - שדות חובה חסרים (לדוגמה, `condition` עבור Google Merchant).תהליך הפיתוח
- ביקורת על הקטלוג הנוכחי ודרישות הפיד.
- עיצוב ארכיטקטורה (פותרים, פורמטים, מטמון).
- פיתוח מודול ואינטגרציה בפרויקט שלכם.
- הגדרת סוכנים ומתזמן להפקה אוטומטית.
- בדיקות על נתונים אמיתיים והתאמות.
- מסירת תיעוד והדרכת מנהלים.
- תמיכה באחריות למשך חודש.
מה כלול בתוצר הסופי
- קוד מקור מלא של המודול עם הוראות התקנה.
- תצורה ואינטגרציה של כל פורמטי הפיד הנדרשים (עד 5 בחבילה הסטנדרטית).
- פותר מחירים ולוגיקת מלאי המותאמים לקטלוג שלכם.
- מנגנון עדכון מצטבר עם הגדרת סוכנים.
- לוח מחוונים לניטור ומערכת לוגים.
- הדרכת מנהלים (2 מפגשים) ותיעוד כתוב.
- תמיכה מועדפת למשך חודש לאחר ההשקה.
השוואה: מודול סטנדרטי לעומת מותאם אישית
| קריטריון | מודול סטנדרטי | מודול מותאם אישית |
|---|---|---|
| עדכון מצטבר | לא | כן, באמצעות סוכנים (מהיר ב-90%) |
| תמיכה במספר פורמטים | מוגבל | כל פורמט (YML, XML, CSV, JSON) |
| סינון מוצרים גמיש | מינימלי | לפי מאפיינים, סעיפים, מלאי, אזורים |
| פותר מחירים | רק מחיר בסיס | אסטרטגיות מרובות |
| ניטור ולוגים | אין | כן, עם לוח מחוונים |
| דרישות זיכרון | גבוהות (טעינה מלאה) | נמוכות (סטרימינג) — 256 MB עבור 50k מוצרים |
לוח זמנים
| היקף | רכיבים | לוח זמנים |
|---|---|---|
| בסיסי | פורמט אחד (YML או GMC) + מתזמן | 2–3 שבועות |
| בינוני | 3–5 פורמטים + פותר מחירים + מלאי | 4–6 שבועות |
| מתקדם | + עדכונים מצטברים + ניטור + אזורים | 7–10 שבועות |
לוחות הזמנים ניתנים להתאמה לאחר ניתוח הקטלוג שלכם. להערכה מדויקת, צרו קשר לייעוץ על הפרויקט שלכם. תצורת קטלוג המסחר (מחירים, מבנה מחסנים, נוכחות SKU) חייבת להיות מוגדרת לפני תחילת הפיתוח. ההשקעה האופיינית מתחילה ב-$3,000 ומחזירה את עצמה תוך חודשיים באמצעות הפחתת נטישה ועבודה ידנית.







