פיתוח מודול גיאולוקציה ל-1С-ביטריקס במפתח סופי

אם האתר לא מזהה נכון את העיר של הלקוח, גם ההמרה וגם הלוגיסטיקה נפגעות. אנו מפתחים מודול גיאולוקציה ל-1С-ביטריקס במפתח סופי: מתכנון הלוגיקה ועד להטמעה ותקנות תמיכה. אתה מקבל התאמת נקודות צפויה לפי אזור ללא עריכות ידניות.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פיתוח מודול גיאולוקציה ל-1С-ביטריקס במפתח סופי
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

מודול גאולוקציה עבור 1С-Битрикс: היכן הלוגיקה נשברת

קביעת האזור נשברת לא בשלב "לקבל קואורדינטות", אלא במפגש של שלושה שכבות: מקור נתוני הגאו, המטמון וכללי העסק שקובעים לפי האזור את המחסן, אזור המשלוח ואמצעי התשלום הזמינים. כל עוד האתר קטן, חוסר הסנכרון אינו מורגש — מבקר ממינסק רואה מחסן מינסק, והכול מסתדר.

ברגע שנקודות המכירה והמחסנים מתרבים, והתנועה מגיעה ממספר מדינות, צצות תקלות שאינן משוחזרות בסביבת הבדיקה.

הכשל הטיפוסי הראשון — מטמון נתוני הגאו חי יותר זמן מאשר משתנים הכללים. האזור של המבקר נקבע נכון, אך השיוך השמור למחסן נותר מהגדרה ישנה של אזורי משלוח: הלקוח מבצע הזמנה לנקודה שכבר אינה משרתת את כתובתו.

השני — קביעת האזור לפי IP בגבול בין אזורים: הכתובת נופלת לטווח גבולי, המודול בוחר באזור שכן, והאדם רואה מגוון וזמנים של אזור אחר.

השלישי — נשירה במובייל: הבקשה לשירות חיצוני לקביעת האזור יוצאת באופן סינכרוני בעת רינדור העמוד, בחיבור חלש היא אינה מספיקה לחזור, והמבקר מקבל טופס ללא בחירת עיר.

קטגוריה נפרדת — קונפליקט בין בחירה ידנית לאוטומטית. המבקר בחר פעם אחת עיר באופן ידני, אך המודול בביקור הבא דורס את הבחירה לפי IP, מכיוון שעדיפות המקורות אינה מוגדרת במפורש. המשתמש רואה אזור "מקפץ" ועוזב לפני שהגיע לסל.

כאן חשוב לא הפיתוח עצמו של מודול הגאולוקציה, אלא סדר הכרעת המקורות: בחירה ידנית, פרופיל שמור, cookie, ואז IP — וכלל מפורש מתי לכל מקור עוקב יש זכות לדרוס את הקודם.

מפרקים כיצד זה נסגר: מפרידים בין קביעת האזור לבין התאמת נקודות, מגדירים זמן חיים למטמון נתוני הגאו בנפרד ממטמון אזורי המשלוח, ומוציאים את הבקשה לשירות החיצוני לקריאה ברקע עם תרחיש חלופי כברירת מחדל. בהמשך — כיצד לבנות את הלוגיקה הזו כך שהיא לא תתפרק בעת הוספת מחסן חדש.

מה נותן גיאולוקציה מדויקת לעסק

גיאולוקציה מדויקת היא לא "לקבוע את העיר לפי IP ולהציב בכותרת". זהו חיבור של מספר שכבות: זיהוי אזור לפי IP תוך התחשבות במפעילים סלולריים ורשתות ארגוניות, עדיפות לבחירה מפורשת של המשתמש, הצמדת מחסנים, מחירים וזמני אספקה לאזור, מטמון תוצאות כדי שההתאמה לא תאט.

כל שכבה משפיעה על המדד שלה: דיוק האזור — על שיעור ההזמנות ללא חישוב מחדש, מהירות ההתאמה — על עומק הצפייה בקטלוג, עדכניות ההצמדות — על היקף התיקונים הידניים בהזמנות.

נבחן מה בדיוק נמדד לאחר ההטמעה. שיעור האזורים שזוהו נכון מחושב לפי המציאות: כמה הפעלות קיבלו אזור התואם לכתובת האספקה בהזמנה, ללא התערבות ידנית של מנהל.

מהירות ההתאמה — הזמן מכניסת השאילתה או פתיחת הקטלוג ועד לקבלת התוצאות תוך התחשבות במלאי ובמחירים האזוריים; אם ההתאמה שולפת נתונים ממערכת חיצונית באופן סינכרוני, זמן התגובה גדל פי כמה, וחלק מהמשתמשים עוזבים לפני שהם מקבלים תשובה.

שיעור ההמרה של הבחירה — שיעור ההפעלות שבהן המשתמש הגיע להוספת מוצר לסל לאחר שראה את התנאים הנכונים של האזור שלו.

הפחתת תיקונים ידניים — המדד המוערך בחסר ביותר. כאשר האזור בהזמנה מוגדר אוטומטית ותואם לכתובת, המנהל לא צריך לחשב מחדש את האספקה, להחליף מחסן ולהוציא חשבונית מחדש. בנפח של כמה מאות הזמנות בחודש זה מפנה שעות עבודה ומסיר סוג של שגיאות שבגללן הלקוח רואה מחיר אחד ומשלם אחר.

יש גם צד שני: גיאולוקציה אגרסיבית מעצבנת. אם האזור מוחלף בכל כניסה, והמשתמש כבר בחר את שלו באופן ידני, האמון יורד. לכן בהטמעה נכונה הבחירה המפורשת תמיד בעדיפות על האוטומטית, נשמרת בהפעלה ובפרופיל, והזיהוי האוטומטי פועל רק כהצעה עם אפשרות להחליף במהירות. איזון כזה נותן צמיחה בהמרת הבחירה ללא צמיחה בנטישות במסך הראשון.

ניתן לבדוק את האפקט לפני ההטמעה על האנליטיקה הנוכחית: שיעור ההזמנות עם אזור השונה מכתובת האספקה, זמן התגובה של הקטלוג לפי אזורים, מספר התיקונים בהזמנות מצד המנהל. שלושת החתכים האלה נותנים בסיס שמולו משווים את התוצאה לאחר הפעלת המודול.

דרכים לקביעת מיקום והמגבלות שלהן

דיוק קביעת המיקום הוא בחירה בין מהירות, דיוק ופרטיות, וכל דרך מכסה חלק אחר מהמשימה.

בפועל אף שיטה לא נותנת תוצאה מקובלת לבדה: קביעה לפי IP פועלת באופן מיידי, אך ברשתות סלולריות מפספסת בעשרות קילומטרים, בעוד שקואורדינטות גיאוגרפיות של המכשיר מדויקות, אך דורשות הסכמה מפורשת של המשתמש והרשאה בדפדפן.

בחירה ידנית של עיר ושיטה היברידית פותרות תרחישים שונים: הראשונה — כאשר חשובה הצפיות והמשתמש עצמו קובע את האזור, השנייה — כאשר יש צורך לגבות את האוטומציה. להלן השוואה של הגישות לפי דיוק, מהירות ומגבלות, כדי לבחור סכמה למשימה מסוימת של המודול.

דרך מתי מתאימה מגבלות
קביעה לפי IP ביקור ראשון, כאשר אין אפשרות לשאול דבר מהמשתמש דיוק עד רמת העיר, ברשתות סלולריות וב-VPN ייתכנו פספוסים גדולים
קואורדינטות גיאוגרפיות של המכשיר משלוחים, מפות, איתור הנקודה הקרובה ביותר דורשת הסכמה, המשתמש עשוי לדחות את הבקשה
בחירה ידנית של עיר קטלוגים, מחירים אזוריים, תרחישים בעלי משמעות משפטית המשתמש צריך לבצע את הבחירה בעצמו, שלב מיותר
שיטה היברידית רוב משימות הפרודקשן לוגיקת עדיפויות וקישור התוצאה מורכבות יותר

סכמה היברידית נבנית בדרך כלל כך: בביקור הראשון העיר נקבעת לפי IP ומוצגת מיד, קואורדינטות מתבקשות רק בעקבות פעולה של המשתמש, ובחירה ידנית גוברת על האוטומציה ונשמרת בסשן. סדר כזה נותן דיוק היכן שנדרש, ואינו חוסם את הממשק בבקשת הרשאה כבר בהתחלה.

בנפרד יש להתחשב בקישור: את תוצאת הקביעה לפי IP סביר להחזיק בסשן, כדי לא לפנות לשירות חיצוני בכל בקשה, ואת הבחירה הידנית לשמור לזמן ארוך יותר — היא משקפת את כוונת המשתמש, ולא ניחוש טכני.

כיצד אנו מפתחים את מודול הגאולוקציה

פיתוח מודול הגאולוקציה מתחיל לא בקוד, אלא בניתוח האופן שבו האתר מזהה את האזור כיום. אנו בוחנים היכן נשמרת ההשתייכות של המשתמש, כיצד היא שורדת מחיקת קוקיז, מה קורה בעת כניסה דרך חיפוש ובדרך קישור ישיר, וכיצד מתנהגת עגלת הקניות בעת החלפת עיר.

ביקורת הלוגיקה חושפת קונפליקטים בין תת-דומיינים, סשן ומטמון — אלו בדיוק הגורמים לאזור ה"מזנק", שבגללו הלקוח רואה מחירים וזמני אספקה של אחרים.

לאחר מכן אנו מתכננים את סכמת האזורים: היררכיה של "מדינה — מחוז — עיר — אזור אספקה", כללי ירושה וסדרי עדיפויות של מקורות. אנו מגדירים מה חשוב יותר — בחירה מפורשת של המשתמש, נתונים גאוגרפיים מהרשת או נתונים מהפרופיל, וכיצד ליישב סתירות ביניהם.

  1. ביקורת הלוגיקה הנוכחית: מנתחים את זיהוי האזור, שמירת ההשתייכות, ההתנהגות בעת החלפת עיר ומחיקת סשן.
  2. תכנון סכמת האזורים: היררכיה, סדרי עדיפויות של מקורות, כללי ירושה ואזורי אספקה.
  3. הגדרת מקורות נתונים: חיבור ספרי עזר, שירותים גאוגרפיים וכללי התאמה בין כתובות לאזורים.
  4. מימוש המודול: זיהוי האזור, החלפה, זכירת הבחירה וסנכרון עם עגלת הקניות, המחירים והמלאי.
  5. בדיקת תרחישים: כניסה מחיפוש, מעבר ישיר, החלפת עיר בעגלת הקניות, חזרת משתמש, עבודה תחת עומס.
  6. מסירה: תיעוד הסכמה, הוראות להוספת אזורים ותיקון כללים.

בדיקת התרחישים מתבצעת לפי מסלולי משתמש אמיתיים, ולא לפי תרחישי בדיקה מדומים: אנו מחליפים נתונים גאוגרפיים, מדמים מעברים בין ערים, ובודקים שהמחירים, הזמינות ותנאי האספקה מחושבים מחדש באופן עקבי.

בסיום המזמין מקבל מודול שאינו מתנגש עם המטמון ותת-הדומיינים, וסכמה ברורה שלפיה מוסיפים אזורים ללא שינוי בליבה.

הרכב האספקה: קונפיגורציות, סכמות, נהלים

בסיום ההטמעה תקבלו לא "מודול עובד על שרת", אלא ערכה שלמה שלפיה הצוות שלכם יוכל לפתח את הגאולוקציה בלעדינו: קונפיגורציות, מפות אזורים, כללי עדיפות ותיעוד. להלן מה בדיוק נכלל באספקה ולשם מה נדרש כל רכיב.

  • קונפיגורציית אזורים — קובץ עם רשימת האזורים, השיוך לדומיינים ולתת-דומיינים, הגרסאות הלשוניות ואזורי הזמן. השינויים מבוצעים ללא שחרור גרסה: הוספת עיר או העברת אזור לדומיין אחר אפשרית תוך דקות.
  • מפת אזורי כיסוי — סכמה שבה נראה איזה אזור מיוצג באילו כתובות ונקודות שירות, היכן גבולות האזורים הסמוכים וכיצד מטופלות כתובות שנויות במחלוקת בנקודת המפגש. לפיה רואים לאן להוסיף נקודות חדשות מבלי לשבור את האזורים הסמוכים.
  • כללי עדיפות — מטריצה שלפיה המודול בוחר אזור כאשר הסימנים מתנגשים: כתובת משלוח מול אזור זמן, בחירה ידנית מול זיהוי אוטומטי, עיר מהפרופיל מול הסשן הנוכחי. כל כלל מתואר עם דוגמת הפעלה.
  • נוהל עדכון נתונים — כיצד ובאיזו תדירות מתעדכנים ספרי הכתובות וגבולות האזורים, מי אחראי על הייצוא ומה קורה אם המקור אינו זמין.
  • תיעוד המודול — תיאור נקודות ההרחבה, פורמטי נתוני הקלט וההתנהגות בהיעדר התאמה: איזה אזור מוחזר כברירת מחדל וכיצד זה משתנה.
  • הוראות לעורכי תוכן — כיצד להוסיף אזור, לשנות אזור כיסוי או עדיפות דרך לוח הניהול, ללא פנייה למפתח.
  • סכמת שחזור — אילו הגדרות נשמרות לפני השינוי וכיצד להחזיר את קונפיגורציית האזורים הקודמת, אם מפת האזורים החדשה הניבה תוצאה שגויה.

את הערכה אנו מעבירים במאגר שלכם יחד עם היסטוריית השינויים — אתם רואים מה ומתי השתנה בכללי העדיפות. תארו את המשימה: נחזור עם הערכה ותוכנית אספקה המותאמת לקונטור שלכם.

מקרה בוחן: התאמת נקודות לפי אזור ללא עריכות ידניות

המשימה הייתה אופיינית לקמעונאות עם כמה מאות נקודות: באתר 1С-Битрикс פעלה התאמה של החנות הקרובה, אך האזור נקבע לפי IP באופן גס — לפי טווח פדרלי של הספק. כתוצאה מכך, לתושב אזור גבול הוצגה חנות של מחוז שכן, ואזור השליחויות חושב באופן שגוי. המנהלים תיקנו את השיוכים ביד: 40-60 פניות בשבוע, כל אחת — עריכה באינפובלוק ופרסום מחדש.

מה שינו

פירקנו את השרשרת עד הסוף. במקום שאילתת IP אחת הרכבנו מפל: קואורדינטות מדויקות מהדפדפן, במקרה של כישלון — IP עם דיוק לפי עיר, במקרה של אי-בהירות — בחירת המשתמש עם שמירה ב-cookie.

את לוגיקת שיוך הנקודות הוצאנו למודול נפרד עם כללים ניתנים להגדרה: רדיוס, עדיפות אזור, רשימת חריגים לכתובות גבול. את מטמון התשובות של שירות הגיאו אנחנו מחזיקים בצד השרת — שאילתות חוזרות מאותה עיר לא פוגעות ב-API חיצוני.

מדדים לפני ואחרי

מדד לפני אחרי
שיעור האזור שנקבע נכון 71% 96%
זמן תגובה של ההתאמה 1.8 ש' 0.4 ש'
עריכות ידניות של שיוכים בשבוע 40-60 2-3
פניות «לא החנות הנכונה» 25-30 בחודש 4-5

העריכות הידניות לא נעלמו לחלוטין — נותרו מעברים אמיתיים ונקודות חדשות, אך אלו כבר שינויים מתוכננים, ולא כיבוי שגיאות. דיוק האזור עלה הודות למפל: גם כאשר הדפדפן לא מוסר קואורדינטות, העיר לפי IP מדויקת עד ליישוב, ולא עד למחוז.

בנפרד סגרנו את החזרה לאחור: כללי השיוך נשמרים בגרסאות, החזרה לתצורה קודמת אורכת דקות ללא פריסת קוד. זהו אותו מקרה בוחן של גיאולוקציה, שמתרחב לכל רשת — מעשרות נקודות ועד אלפים.

במה שונה גיאולוקציה לפי IP מקואורדינטות המכשיר?

גיאולוקציה לפי IP פועלת בצד השרת: כתובת המבקר מותאמת מול מסד נתונים של טווחי ספקים, והמודול מקבל מיד את האזור, העיר ואזור הזמן. אין צורך לבקש הרשאות, התרחיש פועל כבר בבקשה הראשונה — זה היתרון המרכזי לבחירת עיר משלוח, מטבע, שפת ממשק ומחסן קרוב.

הדיוק בקביעה מוגבל: ברמת העיר והאזור הוא יציב, אך בתוך יישוב גדול הקואורדינטות מיטשטשות למרכז הצבירה של הספק, ורשתות ארגוניות ומפעילים סלולריים לא פעם מחזירים את כתובת המשרד הראשי או אזור היציאה לאינטרנט.

קואורדינטות המכשיר מתבקשות דרך הדפדפן ומספקות מיקום בדיוק עד הבית, אם המבקר אישר גישה. כאן מופיע הפיצול בנוגע לפרטיות הנתונים: המשתמש רואה את הבקשה המערכתית ומחליט בעצמו אם לשתף את מיקומו, וסירוב הוא תרחיש תקין שהמודול חייב לטפל בו.

אם הגישה לא ניתנה או הבקשה נדחתה, מציבים גיאולוקציה לפי IP כחלופה חלופית, ואת הנקודה על המפה מציעים לבחור ידנית.

המסקנה המעשית לתרחישים פשוטה: במקום שבו חשובים המהירות והסמיות — קביעת העיר, אזור הזמן, התנאים האזוריים — נסתמך על IP. במקום שבו נדרש דיוק — חישוב מסלול, אזור משלוח, נקודת האיסוף הקרובה — נבקש קואורדינטות של המכשיר ותמיד נשאיר קלט ידני כרמה שלישית.

פיתוח מודול גיאולוקציה בנוי כך ששני המקורות יעבדו בשרשרת אחת: תחילה קואורדינטות מדויקות, בעת סירוב — IP, בעת ספק — בחירת המשתמש.

בנפרד אנו מתכננים את האחסון: קואורדינטות המכשיר לא נכתבות למסד הנתונים ללא הסכמה, IP מעובד במסגרת המטרות המוצהרות, ותוצאת הקביעה נשמרת במטמון לסשן כדי לא לשלוח בקשות שוב ושוב. כך התרחיש נשאר מהיר, והעבודה עם נתונים אישיים — צפויה וניתנת לבדיקה.

ספקות טכניים נפוצים

גיאולוקציה ב‑Битрикс היא לא קריאה אחת, אלא שילוב: זיהוי האזור, הזרקת הנתונים לתבנית, מטמון התוצאה והתנהגות בעת כשל של שירות חיצוני. להלן מה שנבדק לרוב לפני תחילת פיתוח מודול גיאולוקציה.

כיצד נשמרים האזורים במטמון והאם הנתונים מתיישנים?

האזור מזוהה פעם אחת לסשן ונשמר במטמון עם הצמדה ל‑IP‑תת‑רשת, ולא לכתובת ספציפית — כך תשובה אחת מחוממת משרתת טווח שלם של מבקרים. בנוסף, אנו שומרים במטמון את השליפה ממדריך האזורים ואת ההצמדה «אזור → מחירים/מלאי/משלוח».

האיפוס מתבצע באירוע שינוי המדריך או לפי לוח זמנים, ולכן הנתונים לא «נתקעים». אם המבקר שינה את האזור ידנית, הבחירה שלו מקבלת עדיפות על הזיהוי האוטומטי ונשמרת בנפרד מהמטמון הכללי.

האם המודול ישבור פתרונות קיימים באתר?

קונפליקטים נוצרים בדרך כלל לא עם הליבה, אלא עם מודולים אחרים שגם הם דורסים את האזור או תופסים את אותו מטפל. לכן לפני תחילת העבודה אנו ממפים את המודולים המותקנים ואת נקודות ההתערבות שלהם, ומחברים את הלוגיקה דרך אירועים תקניים, בלי לגעת בקוד זר.

אם החפיפה בלתי נמנעת, אנו מפרידים עדיפויות של מטפלים ומקבעים את הסדר בתיעוד — עדכון מודולים של צד שלישי לא שובר את הגיאולוקציה.

מה יקרה אם שירות זיהוי האזור אינו זמין?

מקור חיצוני הוא לא נקודת הכשל היחידה: לצידו פועל מקור גיבוי ומסד נתונים מקומי של התאמות IP‑אזור. כאשר השירות הראשי אינו זמין, הבקשה עוברת לגיבוי, ואם גם הוא שותק — המבקר מקבל את האזור המוגדר כברירת מחדל בהגדרות, והאתר ממשיך להגיש תוכן. זמני החסימה קצרים, השגיאות נרשמות ביומן, והמעבר האוטומטי לגיבוי מתרחש ללא התערבות ידנית.

האם ניתן לבטל את המודול ללא השבתת האתר?

כן. המודול מותקן כחבילה נפרדת, והשינויים בתבניות נעשים דרך מנגנונים תקניים, ולכן השבתה מחזירה את ההתנהגות הקודמת ללא עריכת הליבה. לפני העלאה אנו יוצרים גיבוי של מסד הנתונים והקבצים, וההעברה עצמה מתבצעת בשלבים עם בדיקה בסביבת בדיקה.

תארו את המשימה — נחזור עם הערכה ותוכנית עבודה.

נדון במשימה שלכם בתחום הגאולוקציה

כדי לחזור עם הערכה ותוכנית יישום, אנחנו צריכים להבין את הלוגיקה הנוכחית שלכם: היכן מאוחסנות כתובות האובייקטים, מי ואיך מזין אותן, האם קיים כבר מאגר אזורים ואיך נקבעת כעת הנקודה הקרובה ביותר. תארו את המשימה בצורה חופשית — זה מספיק כדי שנשאל שאלות הבהרה ונציע פתרון מעשי.

מכאן העבודה מתנהלת בשלבים:

  • מנתחים את הלוגיקה הנוכחית: מקורות הכתובות, מאגרים, תרחישי משתמש וצווארי בקבוק.
  • מתאמים מה נחשב לתוצאה: דיוק השיוך, מהירות התגובה, התנהגות כאשר הנתונים חסרים.
  • מכינים הערכת עבודה ותוכנית יישום עם שלבים ונקודות בדיקה.
  • בונים אב טיפוס על נתונים אמיתיים — בודקים איך המודול מתנהג על בסיס הנתונים שלכם.
  • מעבירים את הלוגיקה לסביבת העבודה, מגדירים מטמון והרשאות גישה.
  • מלמדים את הצוות שלכם ומעבירים תיעוד של ההגדרות.
  • נשארים בתמיכה של המודול: עוקבים אחרי היציבות ומשפרים בהתאם למשימות חדשות.

כדי שההערכה תהיה מדויקת ולא "לפי תחושה", שלחו גישה לסביבת בדיקה או ייצוא של המאגרים ודוגמאות של כתובות שהמודול יעבוד איתן. כך נראה את הפורמטים האמיתיים של הנתונים וניקח מראש בחשבון אי-התאמות בכתיב של רחובות ואזורים — זה לרוב מה שקובע עד כמה מדויקת הגאולוקציה.

תארו את המשימה — נחזור עם הערכה, תוכנית יישום ואפשרויות תמיכה במודול לאחר ההשקה.