קונפיגורטור מוצרים: חיסול אלפי SKU ב-1C-Bitrix
לעתים קרובות אנו נתקלים במצב: לקוח מוכר רהיטים בהזמנה אישית, וכל ספה יכולה להיות מורכבת מעשרות אפשרויות בד, רגליים ומילויים. הצעות המסחר הסטנדרטיות של Bitrix (SKU) — ראו SKU בוויקיפדיה — מאלצות אתכם ליצור את כל השילובים ידנית. 5 חומרים × 8 צבעים × 3 גדלים = 120 SKU. ואם מוסיפים תלות: ספת עור לא ניתנת לשילוב עם כריות קטיפה — ה-SKU מתפוצצים לאלפים. הקונפיגורטור פותר בעיה זו בצורה שונה מהותית, וחוסך עד 80% מזמן ניהול הקטלוג.
למה מודול קונפיגורטור אם קיימות הצעות מסחר?
SKU מתאימים לשילובים פשוטים של 2–3 מאפיינים. כאשר מספר האפשרויות עולה על 4 או מופיעות תלויות, עדיף להשתמש בקונפיגורטור מותאם אישית. הוא מאחסן אפשרויות באופן עצמאי ומחשב את המחיר הסופי וההרכב דינמית, כמתואר בתיעוד Bitrix לבלוקי מידע. המודול vendor.configurator שלנו מיישם מודל נתונים מלא עם תמיכה בתלויות ומשני מחיר מבוססי נוסחאות.
במה קונפיגורטור שונה מ-SKU
עם SKU, כל השילובים האפשריים רשומים מראש. אם למחשב נייד יש 3 אפשרויות מעבד, 4 אפשרויות זיכרון RAM ו-3 אפשרויות SSD — נדרשים 36 SKU, שכולם חייבים להיווצר ולתוחזק. בקונפיגורטור, האפשרויות מוגדרות באופן עצמאי, והמחיר הסופי וההרכב מחושבים דינמית. זהו מודל נתונים שונה מהותית, החוסך עד 80% מזמן תחזוקת הקטלוג.
כיצד פועלות תלויות אפשרויות
החלק המורכב ביותר בקונפיגורטור הוא תלויות. בעת בחירת "ספק כוח בעל הספק גבוה," כרטיסי מסך חזקים יותר הופכים לזמינים אוטומטית. הנה דוגמת יישום ב-PHP באמצעות Bitrix ORM:
class DependencyResolver { public function resolve(int $productId, array $selectedOptions): DependencyResult { $dependencies = DependencyTable::getList([ 'filter' => ['OPTION_ID' => $selectedOptions], ])->fetchAll(); $visible = []; $hidden = []; $required = []; $disabled = []; foreach ($dependencies as $dep) { match ($dep['ACTION']) { 'show' => $visible[] = $dep['DEPENDENT_OPTION_ID'], 'hide' => $hidden[] = $dep['DEPENDENT_OPTION_ID'], 'require' => $required[] = $dep['DEPENDENT_OPTION_ID'], 'disable' => $disabled[] = $dep['DEPENDENT_OPTION_ID'], }; } return new DependencyResult($visible, $hidden, $required, $disabled); } } התוצאה מועברת לפרונטאנד באמצעות AJAX בכל שינוי בחירה. הודות למטמון מתויג, המחיר מחושב מחדש באופן מיידי ללא טעינת עמוד מלאה.
מדוע קונפיגורטור חוסך זמן
המודול class DependencyResolver { public function resolve(int $productId, array $selectedOptions): DependencyResult { $dependencies = DependencyTable::getList([ 'filter' => ['OPTION_ID' => $selectedOptions], ])->fetchAll(); $visible = []; $hidden = []; $required = []; $disabled = []; foreach ($dependencies as $dep) { match ($dep['ACTION']) { 'show' => $visible[] = $dep['DEPENDENT_OPTION_ID'], 'hide' => $hidden[] = $dep['DEPENDENT_OPTION_ID'], 'require' => $required[] = $dep['DEPENDENT_OPTION_ID'], 'disable' => $disabled[] = $dep['DEPENDENT_OPTION_ID'], }; } return new DependencyResult($visible, $hidden, $required, $disabled); } } כולל טבלאות ORM: vendor.configurator, b_vendor_cfg_product, b_vendor_cfg_group, b_vendor_cfg_option, b_vendor_cfg_dependency, b_vendor_cfg_configuration. מנהל המערכת צריך רק להגדיר קבוצות ואפשרויות פעם אחת, במקום ליצור אלפי SKU. תלויות מוגדרות חזותית בקונסטרוקטור.
כיצד פועל חישוב מחיר דינמי
מחיר בסיס + משני אפשרויות. נתמכים תוספות קבועות, אחוזים ונוסחאות שרירותיות:
class PriceCalculator { public function calculate(int $productId, array $selectedOptionIds): float { $product = ProductTable::getById($productId)->fetch(); $price = (float)$product['BASE_PRICE']; $options = OptionTable::getList([ 'filter' => ['ID' => $selectedOptionIds], ])->fetchAll(); foreach ($options as $option) { $price = match ($option['PRICE_MOD_TYPE']) { 'fixed' => $price + (float)$option['PRICE_MOD_VALUE'], 'percent' => $price * (1 + (float)$option['PRICE_MOD_VALUE'] / 100), 'formula' => $this->evalFormula($option['PRICE_MOD_VALUE'], $price), default => $price, }; } return round($price, 2); } } משנה הנוסחה מאפשר תלויות לא ליניאריות: לדוגמה, מחיר גודל מותאם אישית מחושב לפי שטח (רוחב × גובה × תעריף בסיס למ"ר). זה רלוונטי במיוחד למבני חלונות או רהיטים בהזמנה אישית.
פרונטאנד הקונפיגורטור
ממשק הקונפיגורטור הוא רכיב React/Vue המחובר לדף המוצר. לוגיקה:
- טוען את מבנה הקבוצות והאפשרויות דרך נקודת קצה REST.
- בשינוי בחירה — AJAX אל
b_vendor_cfg_order_item, מעדכן את נראות האפשרויות. - AJAX במקביל אל
class PriceCalculator { public function calculate(int $productId, array $selectedOptionIds): float { $product = ProductTable::getById($productId)->fetch(); $price = (float)$product['BASE_PRICE']; $options = OptionTable::getList([ 'filter' => ['ID' => $selectedOptionIds], ])->fetchAll(); foreach ($options as $option) { $price = match ($option['PRICE_MOD_TYPE']) { 'fixed' => $price + (float)$option['PRICE_MOD_VALUE'], 'percent' => $price * (1 + (float)$option['PRICE_MOD_VALUE'] / 100), 'formula' => $this->evalFormula($option['PRICE_MOD_VALUE'], $price), default => $price, }; } return round($price, 2); } }, מעדכן את המחיר הכולל. - אפשרויות חזותיות (צבע, חומר) — רשת תצוגות מקדימות עם לחיצה.
מצב התצורה מסונכרן עם ה-hash של ה-URL — ניתן להעתיק ולשתף את התצורה כקישור. לקוחות יכולים לשמור מספר תצורות ולהשוות ביניהן.
הוספה לסל
התצורה השמורה מתווספת לסל כפריט יחיד. פרטי התצורה מאוחסנים ב-DependencyResolver, מקושרים לפריט הסל דרך PriceCalculator. בעת צפייה בהזמנה, המשתמש והמנהל רואים את הפרטים: אילו אפשרויות נבחרו. זה מפשט את עיבוד ההזמנות ומבטל שגיאות בחירה.
ממשק ניהול
- קונסטרוקטור קונפיגורטור: גרירה ושחרור של קבוצות ואפשרויות.
- הגדרת תלויות דרך עורך חזותי (רשימת כללים).
- תצוגה מקדימה של הקונפיגורטור ישירות בלוח הניהול.
- רשימת תצורות שמורות של משתמשים.
- סטטיסטיקות: תצורות פופולריות, צ'ק ממוצע לקונפיגורטור (עלייה של עד 40%).
המומחים המוסמכים שלנו עם ניסיון של 10+ שנים מיישמים מודולים כאלה "מפתח ביד." אנו מבטיחים פעולה יציבה בעומסים גבוהים — עד 10,000 סשנים מקבילים של קונפיגורציה. הזמינו פיתוח מודול קונפיגורטור וקבלו כלי גמיש לעסק שלכם.
מה כלול בעבודה
במסגרת הפרויקט, אנו מספקים:
- מפרט טכני ותיעוד API.
- מיגרציות מסד נתונים למוצרים קיימים.
- פריסה על שרת הייצור.
- קוד עם הערות וכיסוי בדיקות יחידה.
- הדרכת מנהלים על הקונסטרוקטור.
- תמיכה באחריות ל-3 חודשים.
צרו קשר להערכת פרויקט — פשוט תארו את המוצרים שלכם ומאפייניהם. אנו נספק הערכה תוך יום אחד.
השוואה בין SKU לקונפיגורטור
| קריטריון | הצעות מסחר (SKU) | קונפיגורטור מותאם אישית |
|---|---|---|
| מספר שילובים | N×M (נוצרים ידנית) | שרירותי (חישוב דינמי) |
| תלויות אפשרויות | לא נתמכות | נתמכות (הצג/הסתר/דרוש/השבת) |
| משני מחיר | רק תוספת קבועה | קבועים, אחוזים, נוסחאות |
| זמן ניהול | גבוה (אלפי SKU) | נמוך (עשרות אפשרויות) |
| גמישות לקוח | נמוכה | גבוהה (התאמה אישית) |
לוח זמנים לפיתוח
| שלב | לוח זמנים |
|---|---|
| טבלאות ORM, מודל מוצר ואפשרויות | יום אחד |
| פותר תלויות, API | יומיים |
| מחשב מחירים, משני נוסחאות | יומיים |
| רכיב פרונטאנד (React/Vue) | 3 ימים |
| הוספה לסל, פרטי הזמנה | יומיים |
| קונסטרוקטור ניהול | יומיים |
| בדיקות | יום אחד |
סה"כ: 13 ימי עבודה. ויזואליזציה תלת-ממדית של התצורה (WebGL) היא פרויקט נפרד. קבלו ייעוץ על הקונפיגורטור — נעזור לבחור את הפתרון האופטימלי לקטלוג שלכם.







