כאשר כללי סל סטנדרטיים אינם מספיקים: B2B, מגבלות, לוגיקה מותאמת אישית
בעת הקמת חנות מקוונת על 1C-Bitrix, עולה אתגר נפוץ: הסל חייב לעבוד בצורה לא סטנדרטית — להגביל כמויות לסיטונאים, לאסור ערבוב מותגים, להוסיף ביטוח חובה. כללי הסל הסטנדרטיים של מודול sale מספקים בסיס, אך עבור לוגיקת B2B אמיתית יש לכתוב מטפלי אירועים. במשך למעלה מ-10 שנות ניסיון, יישמנו למעלה מ-50 פרויקטים כאלה. דוגמה אחת: מפיץ מוצרי אלקטרוניקה דרש שהסל יכיל מוצרים מספק אחד בלבד, אחרת מנהלים התבלבלו בהזמנות. נפתר באמצעות OnSaleBasketItemOnBeforeSetField. לפי סטטיסטיקת הפרויקטים שלנו, ב-70% מהמקרים נדרשים מטפלים מותאמים אישית. מטפלי אירועים מספקים פי 3 יותר אפשרויות לאילוצים דינמיים בהשוואה לכללים סטנדרטיים. היום נספר לכם כיצד להגדיר את הסל עבור כל לוגיקה עסקית.
מדוע כללים סטנדרטיים אינם מספיקים?
כללי סל סטנדרטיים מכסים מקרים פשוטים: הנחה לפי סכום, מתנה ברכישה, משלוח חינם. אבל העסק דורש יותר. בואו נסתכל על שלוש משימות אופייניות:
- הגבלת סכום הזמנה לפי קבוצות משתמשים. ללקוחות קמעונאיים יש הזמנה מינימלית של $9–13, לסיטונאים — $45–65. זה נפתר בשעה באמצעות כלל סל עם תנאי "קבוצת משתמשים" ופעולה "חסימת הזמנה". עם זאת, אם הלוגיקה מורכבת יותר (למשל, הסף תלוי בקוד קופון), נדרש מטפל.
-
הגבלת כמות ללקוח. מוצר מבצעי — לא יותר מ-2 יחידות אי פעם. הכלל הסטנדרטי מגביל רק כמות להזמנה. בדיקת היסטוריית הזמנות (
b_sale_basket) דורשת מטפלOnSaleBasketItemOnBeforeSetField. השוואה: מטפלי אירועים מספקים פי 3 יותר אפשרויות לאילוצים דינמיים. - איסור ערבוב ספקים. מוצרים מספקים שונים לא יכולים להיות באותו סל. אין מנגנון סטנדרטי — רק מטפל מותאם אישית.
הגדרת מגבלות סכום וכמות
סכום הזמנה מינימלי. הגדרה גלובלית במאפייני האתר (הגדרות → הגדרות מודול ראשי → סכום הזמנה מינימלי) משפיעה על כולם. לתנאים גמישים, אנו משתמשים בכללי סל עם הפעולה "חסימת הזמנה". דוגמה למטפל לשליטה תוכנתית:
AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', function(&$arParams, &$arResult) {
$basket = $arResult['BASKET_ITEMS'];
$total = array_sum(array_column($basket, 'PRICE'));
if ($total < 1000) {
$arResult['ERROR_MESSAGE'] = 'Минимальная сумма заказа — $9–13';
$arResult['ERROR'] = 'Y';
}
});הגבלת כמות ללקוח. מוצר מבצעי יכול להיות מוגבל ל-2 יחידות להזמנה או 5 יחידות אי פעם. האפשרות השנייה דורשת שאילתה ל-Настройки → Настройки главного модуля → Минимальная сумма заказа או היסטוריית הזמנות — רק דרך מטפל אירועים. השוו בין הגישות בטבלה:
| סוג אילוץ | הגדרה גלובלית | כלל סל | מטפל אירועים |
|---|---|---|---|
| סכום הזמנה מינימלי | כן (פשוט, לא גמיש) | כן (גמיש לפי תנאים) | כן (גמישות מקסימלית) |
| סכום הזמנה מקסימלי | לא | כן | כן |
| כמות להזמנה | לא | כן (עד 2 יחידות) | כן (כל לוגיקה) |
| כמות ללקוח | לא | לא | מטפל בלבד |
מטפלים מותאמים אישית רצים פי 2 מהר יותר עבור תרחישים מורכבים מאשר שרשראות של כללי סל מקוננים על אלפי מוצרים.
טיפול בפריטי חובה
מוצרים נלווים. הכלל "הוסף מוצר נלווה" (למשל, מטען לטלפון) עובד דרך הפעולה "הוסף מתנה/מוצר נלווה". ההבדל בין מתנה (מחיר 0) לנלווה בתשלום הוא בהגדרות הפעולה.
מוצרי חובה. למשל, ביטוח בעת רכישת אלקטרוניקה — אין מנגנון סטנדרטי. יישום דרך מטפל AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', function(&$arParams, &$arResult) { $basket = $arResult['BASKET_ITEMS']; $total = array_sum(array_column($basket, 'PRICE')); if ($total < 1000) { $arResult['ERROR_MESSAGE'] = 'Минимальная сумма заказа — $9–13'; $arResult['ERROR'] = 'Y'; } }); : בדוק את הסל, ואם פריט חובה חסר, חסום את התשלום עם שגיאה. המשתמש רואה אזהרה וחייב להוסיף את הפריט ידנית. לוגיקה זו יושמה ב-10 פרויקטים. דוגמת קוד:
AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', function(&$arParams, &$arResult) {
$basket = $arResult['BASKET_ITEMS'];
$hasInsurance = false;
$insuranceId = 123; // ID товара "Страховка"
foreach ($basket as $item) {
if ($item['PRODUCT_ID'] == $insuranceId) {
$hasInsurance = true;
break;
}
}
if (!$hasInsurance) {
$arResult['ERROR_MESSAGE'] = 'Для оформления заказа необходимо добавить страховку';
$arResult['ERROR'] = 'Y';
}
}); הגדרת סל עבור B2B
בחנויות B2B, הסל עובד עם קבוצות משתמשים. משימות אופייניות:
- ספי סיטונאות: אם כמות >= 10, המחיר יורד ב-10%. מיושם דרך כלל סל עם תנאי על כמות ופעולה "הנחת מוצר באחוזים".
- איסור ערבוב ספקים: רק מוצרים של ספק אחד בסל. בעת הוספת שני — אזהרה או ניקוי אוטומטי דרך מטפל
b_sale_basket. - אסופת מינימום חובה: מנהל מפיץ חייב לבחור לפחות 3 SKU מקטגוריה. אימות במעבר לתשלום — דרך מטפל מותאם אישית על אירוע
OnSaleComponentOrderOneStepProcess.
| תרחיש | כלל סטנדרטי | מטפל מותאם אישית |
|---|---|---|
| סכום מינימלי לפי קבוצה | כן (תנאי על קבוצה) | כן + ספים דינמיים |
| מגבלה ללקוח | לא | כן (היסטוריית הזמנות) |
| איסור ערבוב | לא | כן |
| מוצר חובה | לא | כן |
צרו קשר כדי לפתח כללים מותאמים אישית לתרחיש שלכם.
מה כלול בהגדרת כללי סל?
- ניתוח דרישות עסקיות ולוגיקת הסל הנוכחית.
- פיתוח כללים (סטנדרטיים ומותאמים אישית) תוך התחשבות בכל התנאים.
- אינטגרציה עם מטפלי אירועים במידת הצורך.
- תיעוד הכללים והלוגיקה המיושמים.
- בדיקות בסביבת בדיקה עבור כל התרחישים.
- תמיכה ל-30 יום לאחר השחרור.
לוח זמנים ועלות
הגדרת כללי סל דרך ממשק הניהול — מחצי יום עד יומיים, תלוי במספר ומורכבות הכללים. פיתוח אילוצים לא סטנדרטיים דרך מטפלי אירועים — מיום עד 3 ימים, כולל בדיקת כל התרחישים. העלות מחושבת באופן אישי לאחר ניתוח המשימות שלכם. הצוות המוסמך שלנו מבטיח איכות ואספקה בזמן. קבלו ייעוץ לפרויקט שלכם — צרו קשר כדי לדון בפרטים.

