סל קניות מותאם אישית ב-1С-Битрикс: היכן נשבר התרחיש הסטנדרטי
סל הקניות הסטנדרטי של 1С-Битрикс נשען על שילוב של רכיב ביצוע ההזמנה, כללי העבודה עם הסל ומטפלי אירועים. כל עוד התרחיש טיפוסי — מוצר, הנחה, משלוח — הוא עובד באופן צפוי.
ברגע שמופיעה לוגיקה לא סטנדרטית, המנגנון המובנה מתחיל להתנגש עם עצמו, והצוואר הבקבוק כמעט תמיד נמצא באחד משלושה מקומות.
הראשון — כללי הנחות ובונוסים. מספר כללים המוחלים על אותה עמדה מחושבים מחדש לפי סדר עדיפויות, ובמקרה של חפיפת תנאים המחיר הסופי עלול להתאפס או לרדת למינוס. השני — חישוב מחדש של הסל בעת שינוי כמות או החלפת מחסן: עמדות המקושרות ליתרות נושרות מההזמנה בשקט, והקונה רואה הרכב אחר.
השלישי — ביצוע ההזמנה תחת עומס: בקשות סינכרוניות לקטלוג ולמחסן בכל שלב מחזיקות את הסשן, ובתעבורה בשיא שלב האישור נתקע.
המחיר של הכשלים האלה — סלים נטושים בשלב האחרון, פערים בין ההזמנה לזמינות בפועל, תיקונים ידניים של מנהלים.
סל קניות מותאם אישית ב-1С-Битрикс נדרש לא למען ה"יופי" של הממשק, אלא כדי להפריד את התרחישים האלה: להוציא את חישוב ההנחות לשכבה נפרדת עם כללים שקופים, לקבע את הרכב ההזמנה ברגע האישור ולפרוק את ביצוע ההזמנה מבקשות כבדות. להלן נבחן כיצד זה נסגר.
מה נותנת עגלת קניות מעובדת מחדש: אפקט מדיד
עגלת קניות מעובדת מחדש היא לא "קוסמטיקה" של הממשק, אלא בנייה מחדש של לוגיקת השלמת ההזמנה. אנו מנתחים את מסלול הקונה שלב אחר שלב, מאתרים היכן הוא מאבד זמן ועוזב, ומשכתבים את הקטעים הללו.
כתוצאה מכך, ההמרה של השלמת ההזמנה עולה בזכות כך שהאדם עובר את המסלול ללא קליקים מיותרים והמתנות, ולא בזכות הנחות ולחץ.
מהירות התגובה של העגלה משפיעה ישירות על שיעור העגלות הנטושות. כאשר חישוב מחדש של עלות, הנחות ומשלוח מתרחש באופן מיידי, הקונה לא מספיק להטיל ספק ולסגור את הלשונית.
אנו מוציאים פעולות כבדות מהבקשה הסינכרונית, שומרים במטמון חישובי ביניים ומחזירים תוצאה מוכנה — בפועל זה מפחית את שיעור העגלות הנטושות פי כמה, ולא באחוזים.
סיפור נפרד הוא עומס שיא. מבצעים וזינוקים עונתיים שוברים את העגלה לא בגלל שמחסור בחומרה, אלא בגלל שהלוגיקה של החישוב מחדש חוסמת סשנים.
אנו מתכננים את השלמת ההזמנה כך שהזמנות בו-זמניות לא יתחרו על אותם נתונים: תורים, הפרדה בין קריאה לכתיבה, תרחישים עמידים לתקלות כאשר שירותים חיצוניים אינם זמינים. העגלה ממשיכה לקבל הזמנות, גם כאשר אחד מהשירותים המשיקים מגיב באיחור.
האפקט נראה במספרים: זמן השלמת ההזמנה מתקצר, שיעור העגלות הנטושות יורד, ובזמן עומס שיא המערכת מחזיקה את הזרימה ללא שגיאות וניסיונות חוזרים. בדיוק את המדדים הללו אנו מתעדים לפני ואחרי העיבוד מחדש, כדי שהתוצאה תהיה ניתנת לבדיקה ולא הצהרתית.
גישות למימוש: השוואת אפשרויות
בחירת הגישה קובעת מה יקרה לסל בעדכון הפלטפורמה הבא וכמה מהר תוכלו לשנות את כללי החישוב. שלוש אפשרויות עבודה נבדלות בנקודת ההתערבות: שינויים ברכיב הסטנדרטי, רכיב משל עצמכם מאפס, או הוצאת לוגיקת החישוב אל מחוץ לאתר.
| אפשרות | מתי מתאימה | מגבלות הגישה |
|---|---|---|
| שדרוג הרכיב הסטנדרטי | תרחיש טיפוסי: הנחות סטנדרטיות, מחסן אחד, משלוח פשוט. יש צורך במהירות ובכמות מינימלית של קוד | שינויים בתבנית ובמטפלים נמחקים בעת עדכון הליבה — לאחר כל עדכון נדרשת בדיקה. לוגיקת החישוב נשארת בתוך העמוד, וקשה להשתמש בה מחדש |
| רכיב משל עצמכם | כללים לא סטנדרטיים: ערכות מוצרים, מספר מחסנים, תנאי משלוח משלכם, אינטגרציה עם מערכות חיצוניות | דורש מודל נתונים משל עצמו וכיסוי בבדיקות. לוקח יותר זמן בהתחלה, אך עדכוני הפלטפורמה אינם שוברים את הלוגיקה |
| חישוב חיצוני בשירות נפרד | חישוב משותף לאתר, לאפליקציית המובייל ולמחלקת המכירות; הכללים משתנים לעיתים קרובות | נדרשים סנכרון הקטלוג והמחירים, טיפול באי-זמינות השירות וחזרה ברורה למצב התקין האחרון של הסל |
הרכיב הסטנדרטי נותן תוצאה במהירות, אך צובר תלות הדדית: ככל שתוסיפו בו יותר תנאים, כך יעלה יותר כל שינוי עוקב. רכיב משל עצמכם מסיר את המגבלה הזו, אך מעביר את האחריות לתאימות לצוות שלכם — אנו מקבעים חוזים מול הליבה ומכסים אותם בבדיקות.
חישוב חיצוני מוצדק כאשר אותה לוגיקה נדרשת למספר ערוצי מכירה. אז הסל באתר הופך ללקוח דק, והכללים חיים במקום אחד — שינוי מיושם מיד בכל מקום, ללא שחרור גרסה של הוויטרינה.
בפועל בוחרים לרוב באפשרות השנייה: היא שומרת על שליטה בחישוב ואינה תלויה בעדכוני הליבה. נדון בתרחישים שלכם — נחזור עם הערכה ותוכנית לפי הגישה הנבחרת.
שלבי העבודה: מביקורת הסל הנוכחי ועד למסירה
אנחנו מתחילים את העבודה בביקורת של הסל הנוכחי, ולא בעריכות של תבנית. אנחנו בודקים היכן מחושב הסכום הכולל: ברכיב, במטפל של ביצוע ההזמנה או במודול, אילו אירועים מחוברים לחישוב מחדש, וכיצד נשמרים הנחות וכללי משלוח.
התוצר הוא מפת צווארי בקבוק: היכן הלוגיקה משוכפלת, היכן המחיר מחושב פעמיים, והיכן בשינוי כמות הפריט הסכום הכולל "מתנדנד".
לאחר מכן אנחנו מתכננים את סכימת החישובים בנפרד מהתצוגה. כללי הנחות, תוספות, עיגול ומשלוח מתוארים כשכבה עצמאית — כך הסל מחשב באופן זהה בעמוד, בביצוע ההזמנה ובמכתב ללקוח. את הסכימה מאשרים לפני הקוד: פער בכללים בשלב הזה עולה פחות מאשר עריכה מחדש לאחר ההשקה.
- ביקורת הסל: ניתוח הלוגיקה הנוכחית, האירועים, נקודות החישוב מחדש והעריכות המצטברות.
- סכימת חישובים: כללי הנחות, עיגול, משלוח ומיסים במקום אחד, עם סדר החלה מפורש.
- מימוש: הוצאת הלוגיקה לשכבה נפרדת, חיבור לרכיב ולמטפל של ביצוע ההזמנה.
- בדיקת תרחישים: שינוי כמות, מחיקת פריט, קוד קופון, סף משלוח, חישוב מחדש בשינוי אזור.
- בדיקת עומס: התנהגות הסל במספר רב של פריטים ובסשנים במקביל.
- מסירת הפתרון: תיעוד של סכימת החישובים, הוראות למנהל התוכן, הרשאות ונוהל חזרה לאחור.
את בדיקת התרחישים אנחנו מבצעים לפי רשימה, ולא "בעין": כל מקרה מריצים על נתוני בדיקה ומתעדים את הסכום הכולל הצפוי. בנפרד אנחנו בודקים שאחרי חזרה לגרסה הקודמת הסל מחשב לפי הסכימה הישנה — זו רשת ביטחון בזמן ההשקה.
מסירת הפתרון היא לא ארכיון עם קבצים, אלא סכימה עובדת: היכן נמצאים הכללים, כיצד מוסיפים הנחה חדשה, ומה עושים במקרה של פער בסכומים הכוללים. תארו את המשימה שלכם — נחזור עם הערכה ותוכנית לפי השלבים האלה.
מה הלקוח מקבל לידיו לאחר ההטמעה
ההטמעה נחשבת להושלמה לא כאשר הסל "עובד אצלנו", אלא כאשר הצוות שלכם יכול לתחזק אותו בלעדינו. לכן אנו מוסרים לא רק קוד, אלא את כל המעטפת: קונפיגורציות, תרשימי חישוב, נהלים ותיעוד, שלפיהם מפתח חדש נכנס לפרויקט בתוך ימים ולא שבועות.
- קונפיגורציות והגדרות — כללי חישוב ההנחות, ספי המשלוח, משטרי המיסוי והעיגול מוציאים לפרמטרים ניתנים לניהול, ולא מוטבעים בקוד. השיווק משנה את תנאי המבצע בעצמו, בלי לערוך את תבנית הסל.
- תרשימי חישוב — דיאגרמות מעבר ההזמנה: מהוספת המוצר ועד להעברה ל-1С, עם נקודות ולידציה של מלאי, מחירים וסכום מינימלי. ניתן לראות היכן פועל איזה כלל ומה יקרה בעת כשל.
- נהלי החלפה עם 1С — תדירות הסנכרון של הקטלוג, המחירים וההזמנות, ההתנהגות בעת אי-התאמת נתונים, סדר הטיפול הידני בקונפליקטים. בנפרד — מה לעשות בעת אי-זמינות של המערכת החיצונית.
- תיעוד הקוד — תיאור מודולי הסל, נקודות ההרחבה והתלויות בין הרכיבים. עם הערות אילו מקומות נערכים למשימות טיפוסיות ואילו דורשים תיאום.
- הוראות לצוות — תרחישים שלב-אחר-שלב עבור מנהל התוכן והמנהל: כיצד לשנות תנאי הנחה, להוסיף אמצעי משלוח, לבדוק הזמנה תקועה.
- תוכנית נסיגה — אילו הגדרות ונתונים חוזרים למצבם הקודם בעת תקלה, באיזה סדר ובאיזה זמן. נבדקת על מעטפת בדיקה לפני המסירה.
- הרשאות וסביבות — הפרדה בין מעטפת הבדיקה למעטפת העבודה, הרשאות תפקידים, סדר פריסת השינויים בלי לעצור את קבלת ההזמנות.
כל ארטיפקט עובר קבלה בצד שלכם: אנו מראים כיצד להשתמש בו, ומתעדים שהצוות משחזר את התרחיש בעצמו. אם בסופו של דבר משהו נשאר לא ברור — זו רשלנות שלנו בתיעוד, ולא שאלה לצוות שלכם.
מקרה בוחן: כיצד סל קניות מעובד מחדש הסיר אובדן הזמנות
הפרויקט — חנות מקוונת למוצרי אלקטרוניקה על 1С-Битрикс: קטלוג עם עשרות אלפי פריטים, ביצוע הזמנה דרך רכיב הסל הסטנדרטי. הבעיה התגלתה לא בתעבורה, אלא בהמרה בשלב האחרון: קונים הגיעו לביצוע ההזמנה ועזבו.
המנגנון הסטנדרטי חישב מחדש את הסל בכל שינוי בכמות, פנה באופן סינכרוני לשאריות ולמחירים ב-1С, ובמקרה של הזמנות מקבילות של אותו פריט לא שמר את המוצר עד לאישור הסופי. התוצאה — סלים "תקועים", שגיאות במחיקה והזמנות שמנהלים טיפלו בהן ידנית.
מה היה לפני העיבוד מחדש
שיעור ביצועי ההזמנה המוצלחים עמד על 61%: חלק מהקונים קיבלו שגיאה בשלב האישור ועזבו. זמן התגובה הממוצע של הסל בחישוב מחדש הגיע ל-4-6 שניות — כאשר תגובת 1С הייתה איטית, הממשק קפא, ואנשים לחצו שוב על הכפתור, ויצרו הזמנות כפולות.
התמיכה קיבלה כ-180 פניות בחודש, מהן יותר ממחצית — "ההזמנה לא בוצעה", "המוצר נעלם מהסל", "הגיעו שתי הזמנות זהות".
מה שינו
כתבו מחדש את הסל כשכבה נפרדת מעל האחסון הסטנדרטי: מצב ההזמנה חי אצל הלקוח, והחלפת הנתונים עם 1С מתבצעת באופן אסינכרוני, עם מטמון מחירים ושאריות. שמירת המוצר נעשית כעת ברגע ההוספה לסל עם פסק זמן, ולא בשלב הסופי, — המרוצים על היחידה האחרונה נעלמו.
הוסיפו אידמפוטנטיות של ביצוע ההזמנה: בקשה חוזרת עם אותו מזהה לא יוצרת הזמנה שנייה, אלא מחזירה את התוצאה של הראשונה.
מה קרה לאחר מכן
שיעור ביצועי ההזמנה המוצלחים עלה מ-61% ל-89%. זמן התגובה של הסל בחישוב מחדש הצטמצם ל-0.4-0.8 שניות — הממשק מגיב באופן מיידי, הלחיצות החוזרות נעלמו. פניות לתמיכה בנושא ביצוע ההזמנה ירדו מ-180 ל-40 בחודש, ושיעור ההזמנות הדורשות טיפול ידני ירד מ-12% ל-2%. בנפרד תועד: אי-התאמות בין הסל לחיוב בפועל ב-1С לאחר הטמעת השמירה לא נותרו.
במה שונה התאמה אישית של סל קניות מקורי מרכיב עצמאי?
סל קניות מקורי הוא רכיב מוכן עם סט קבוע של נקודות הרחבה: תבנית, מטפלי אירועים, הגדרות ביצוע הזמנה. כל עוד המשימה נכנסת לסט הזה — התאמה אישית של הסל המקורי זולה ומהירה יותר: אין צורך לתכנן מודל נתונים, לוגיקת חישוב מחדש ותרחישי ביצוע מאפס.
התיקונים ממוקדים, עדכוני הפלטפורמה מיושמים באופן צפוי, ומפתח שחוזר לפרויקט אחרי שנה רואה מבנה סטנדרטי, ולא קוד שנכתב מאפס.
רכיב עצמאי נדרש במקום שבו הלוגיקה חורגת מתרחיש טיפוסי: כללים לא סטנדרטיים לחישוב הנחות, מארזים וסטים, סל קניות עם כמה ספקים, סנכרון עם מערכת חשבונאית בזמן אמת. כאן הגמישות גבוהה יותר — אתם שולטים במבנה הנתונים ובסדר הפעולות, ולא מתאימים את עצמכם לארכיטקטורה של מישהו אחר. אבל החופש הזה משולם פעמיים: בשלב הפיתוח ולאורך כל תקופת התמיכה.
ההבדל המרכזי מתגלה לא ברגע ההשקה, אלא בהמשך הפיתוח. התאמה אישית של סל קניות מקורי צוברת שינויים בשכבות: כל דרישה חדשה נאחזת בקודמתה, ואחרי כמה איטרציות רק מחבר התיקונים יכול להבין אותם.
רכיב עצמאי דורש משמעת — תיעוד, כיסוי בבדיקות, בידוד הלוגיקה העסקית, — אבל בתמורה נותן תמיכה צפויה: פונקציה חדשה מתווספת למקום ידוע, ולא מתחפשת בכל בסיס הקוד.
קריטריון בחירה מעשי הוא פשוט. אם הדרישות הלא סטנדרטיות מהוות פחות מרבע מנפח הלוגיקה הכולל של הסל — התאמה אישית של המקורי תעלה פחות גם בהתחלה וגם בתמיכה.
אם יותר — רכיב עצמאי מחזיר את ההשקעה כבר באיטרציה השנייה-שלישית של התאמות, כי כל תיקון עוקב עולה פחות, והסיכון לשבור תרחיש סמוך — נמוך יותר.
אנחנו בדרך כלל מתחילים בסקירה של הסל הנוכחי: בודקים אילו נקודות הרחבה כבר בשימוש, כמה תיקונים הצטברו ואילו דרישות עומדות בתור. לפי התמונה הזו נראה היכן נגמר ההיגיון להתאים את המקורי ומתחיל ההיגיון לכתוב רכיב עצמאי — ומה עלות התמיכה בכל אחת מהאפשרויות.
ספקות טכניים נפוצים לפני ההתחלה
לפני תחילת העבודה, מנהלים טכניים שואלים את אותן השאלות: האם ההתאמה האישית תשבור את המנגנון הסטנדרטי, מה יקרה בעת עדכון הפלטפורמה והאם כללי ההנחות הקיימים יישמרו. להלן תשובות ישירות ללא שיווק, כדי שתוכלו להעריך את הסיכונים לפני תחילת הפרויקט.
האם התאמה אישית של סל הקניות מתנגשת עם המנגנון הסטנדרטי של ביצוע ההזמנה?
לא, אם עובדים דרך אירועים וירושה, ולא דרך עריכת הליבה. הלוגיקה מתחברת כמודול נפרד: תבניות הרכיב נדרסות, מתווספים מטפלים משלנו לאירועי חישוב העלות והביצוע. התרחיש הסטנדרטי נשאר פעיל — כאשר המודול מושבת, סל הקניות חוזר להתנהגות הסטנדרטית.
התאימות לעדכוני הפלטפורמה מובטחת בדיוק בכך: השינויים אינם נוגעים בקבצי הליבה, ולכן העדכון אינו מוחק את ההתאמה האישית.
מה יקרה בעת עדכון הפלטפורמה?
ההתאמה האישית מתקיימת במודול נפרד ובתבנית מותאמת אישית, ולכן עדכון הליבה אינו נוגע בה. לפני העלאת העדכון לסביבת העבודה, אנו מריצים את תרחישי ביצוע ההזמנה על עותק: חישוב הנחות, החלת קופונים, חישוב מחדש של משלוח, ביצוע עם מספר מחסנים.
אם בענף החדש משתנה חתימת האירוע או התנהגות הרכיב — אנו מתאימים את המטפל. כך העדכון מפסיק להיות סיכון של השבתה.
האם כללי ההנחות הנוכחיים והנתונים שנצברו יישמרו?
כן. כללי ההנחות מועברים כפי שהם: הנחות על סל הקניות, הנחות מצטברות, הנחות המשויכות לקבוצות משתמשים ולסגמנטים, קופונים ותנאים לפי סכום ההזמנה.
אנו מתעדים את הלוגיקה הנוכחית במפרט, מעבירים אותה למכניקה החדשה ומאמתים את התוצאה על הזמנות בדיקה — הסכום הסופי חייב להתאים עד האגורה האחרונה. היסטוריית ההזמנות, שיוך המשתמשים וסל הקניות במסד הנתונים אינם נגעים: ההתאמה האישית משנה את החישוב והתצוגה, ולא את מבנה האחסון.
האם ניתן לבטל את השינויים אם משהו ישתבש?
כן. העבודה מתבצעת בענף נפרד עם העלאה מדורגת: תחילה סביבת בדיקה, לאחר מכן סביבת העבודה עם אפשרות לחזרה מהירה למצב הקודם. מכיוון שהליבה אינה נערכת, הביטול הוא השבתת המודול והחזרת התבנית, ולא שחזור מגיבוי. כל השינויים מנוהלים בגרסאות, ולכן ניתן לחזור לכל נקודה.
אם נותרו ספקות לגבי התצורה שלכם — תארו את המשימה, ונחזור עם הערכת תאימות ותוכנית עבודה.
נדון במשימה שלכם בנוגע לסל הקניות
תארו את המצב הנוכחי: באיזה שלב סל הקניות נשבר, אילו תרחישי רכישה אינם עובדים, מה כבר ניסיתם לשנות. זה מספיק כדי שהמהנדסים שלנו יחזרו עם הערכת עבודה ותוכנית — ללא התחייבות וללא "קודם כל תחתמו".
כדי שהשיחה תהיה עניינית, כדאי לאסוף מראש כמה נתוני רקע. הם אינם דורשים גישה לשרת ובדרך כלל כבר קיימים אצל הצוות שלכם:
- איזה סוג סל קניות משמש כעת ומה בדיוק בו אינו מספק — מהירות, לוגיקת חישוב, אינטגרציה עם 1С;
- אילו תרחישי רכישה קריטיים: איסוף עצמי, מספר מחסנים, מחירי סיטונאות, מארזי מתנה, משלוח חלקי;
- כיצד בנוי החלף הנתונים עם 1С — מה ובאיזו תדירות מסתנכרן, היכן נוצרים פערים ביתרות ובמחירים;
- אילו תפקידי משתמשים עובדים עם ההזמנה ואילו הרשאות נדרשות להם;
- האם קיימים באתר כללים לא סטנדרטיים: סכום מינימלי, מגבלות לפי אזורים, תנאים אישיים לישויות משפטיות;
- אילו מדדים חשובים: המרה להזמנה, שיעור סלים נטושים, זמן השלמת ההזמנה, מספר פניות לתמיכה;
- מה כבר נעשה בעבר ומדוע התוצאה לא סיפקה.
לפי נתוני רקע אלה אנו מעריכים את ההיקף: שדרוג סל הקניות הקיים או כתיבה מחדש של הלוגיקה מאפס, אילו מודולים נפגעים, האם נדרשת הגירה של הזמנות מצטברות. לאחר מכן מכינים תוכנית עבודה לפי שלבים — עם עדיפויות, תלויות ונקודות שבהן ניתן לבדוק את התוצאה לפני ההשקה הסופית.
ההערכה והתוכנית מגיעות עם פירוט לפי שלבים וקריטריונים ברורים למוכנות, כדי שתוכלו להשוות אותם מול הצד שלכם. אם במהלך הבדיקה יתברר שהמשימה נפתרת באמצעות הגדרה ללא פיתוח, נאמר זאת ישירות.
תארו את המשימה בפורמט נוח — נחזור עם הערכה ותוכנית עבודה.

