כיצד לפתח אתר לחברת תחבורה על 1C-Bitrix עם הזמנה מקוונת
לקוח שואל: "האם יש נסיעה מינסק למוסקבה ביום שישי? כמה עולה לשכור אוטובוס ל-45 אנשים?" — אם לא ניתן למצוא את התשובה בשתי לחיצות, הם פונים לאגרגטור. ללא מערכת הזמנות מקוונת עם תמחור דינמי, האתר הופך לכרטיס ביקור שאיש לא משתמש בו. אנו מתכננים ארכיטקטורה שבה המרכיב המרכזי הוא רשת התעריפים המנוהלת באמצעות Highload-blocks.
בעיות שאנו פותרים — פיתוח אתר לחברת תחבורה
האתגר הטכני המרכזי הוא מגוון השירותים: נסיעות סדירות, השכרת אוטובוסים, הסעות חברות, טיולים. כל סוג דורש פרמטרים משלו: להשכרה — מסלול, שעות, סוג רכב; לנסיעה — תאריך ומספר מושבים. בלוק מידע יחיד עם מאפיינים מותנים מסבך את הקוד, ולכן אנו יוצרים Highload-blocks נפרדים.
הבעיה השנייה היא חישוב עלות המבוסס על רשת תעריפים מורכבת. המחיר תלוי במרחק, זמן, מחלקת אוטובוס, עונה, תוספות. אחסון זה בבלוקי מידע אינו יעיל — אנו משתמשים ב-HL-blocks עם שדות מותאמים אישית ואינדקסים.
מהי רשת תעריפים וכיצד ליישם אותה?
נבחן דוגמה של השכרת אוטובוס לפי מרחק. המערכת מורכבת ממספר HL-blocks: Highload-block TariffGrid:
| שדה | סוג | מטרה |
|---|---|---|
| UF_VEHICLE_TYPE | enumeration | מיניבוס / אוטובוס בינוני / אוטובוס גדול |
| UF_COMFORT_CLASS | enumeration | רגיל / נוחות / VIP |
| UF_TARIFF_TYPE | enumeration | לפי ק"מ / לפי שעה / מסלול קבוע |
| UF_PRICE_PER_UNIT | float | מחיר ליחידה (ק"מ או שעה) |
| UF_MIN_HOURS | integer | הזמנה מינימלית בשעות |
| UF_MIN_PRICE | float | עלות הזמנה מינימלית |
| UF_CITY_FROM | string | עיר יציאה |
| UF_CITY_TO | string | עיר יעד |
| UF_FIXED_PRICE | float | מחיר מסלול קבוע |
| UF_SEASON | enumeration | נמוכה / גבוהה / חג |
| UF_VALID_FROM | date | תאריך תחילת תוקף התעריף |
| UF_VALID_TO | date | תאריך סיום תוקף התעריף |
Highload-block TariffSurcharge — תוספות:
| שדה | סוג | מטרה |
|---|---|---|
| UF_TYPE | enumeration | הסעת לילה / חג / בינלאומי / מטען |
| UF_SURCHARGE_TYPE | enumeration | אחוז / סכום קבוע |
| UF_VALUE | float | ערך התוספת |
| UF_VEHICLE_TYPE | enumeration | לאיזה סוג רכב זה חל |
אלגוריתם חישוב:
- קביעת המרחק בין הנקודות. למסלולים פופולריים, אנו משתמשים בנתונים מחושבים מראש מ-HL-block
RouteDistance, למסלולים לא סטנדרטיים — Google Distance Matrix API או OSRM. - בחירת תעריף מ-
TariffGridלפי סוג רכב, מחלקת נוחות ותאריך. - עלות בסיסית = מרחק * UF_PRICE_PER_UNIT.
- אם העלות הבסיסית נמוכה מ-UF_MIN_PRICE, השתמש ב-UF_MIN_PRICE.
- החלת תוספות מ-
TariffSurcharge(הסעת לילה, חג, מסלול בינלאומי). - למסלולי הלוך ושוב — הכפלת המרחק במקדם 0.85-0.9.
יישום בקוד:
$tariff = TariffGridTable::getRow([
'filter' => [
'UF_VEHICLE_TYPE' => $vehicleType,
'UF_COMFORT_CLASS' => $comfortClass,
'UF_TARIFF_TYPE' => 'per_km',
'<=UF_VALID_FROM' => $tripDate,
'>=UF_VALID_TO' => $tripDate,
],
]);
$basePrice = max(
$distance * $tariff['UF_PRICE_PER_UNIT'],
$tariff['UF_MIN_PRICE']
);
// Наценки
$surcharges = TariffSurchargeTable::getList([
'filter' => ['UF_VEHICLE_TYPE' => $vehicleType],
])->fetchAll();
foreach ($surcharges as $s) {
if (isSurchargeApplicable($s, $tripDate, $tripTime, $isInternational)) {
$basePrice = applySurcharge($basePrice, $s);
}
}להשכרה לפי שעה, החישוב פשוט יותר: שעות * תעריף לשעה, עם בדיקת מינימום. למסלולים קבועים, נעשה שימוש ישיר ב-UF_FIXED_PRICE.
מדוע הזמנה מקוונת מגדילה את ההמרה פי 2-3?
ללקוח אין זמן להתקשר ולברר מחירים. המחשבון המקוון מספק תשובה מיידית. מערכת ההזמנות שלנו מעבדת את הבקשה פי 5 מהר יותר מפתרונות PHP מותאמים אישית, הודות למטמון מתויג ולשאילתות מותאמות ל-HL-blocks. אנו משלבים אותה עם REST API של Bitrix, כך שלאחר אישור נוצרת הזמנה עם פרמטרי הנסיעה. תשלום — 30-50% מקדמה באמצעות סליקה או תשלום מלא בעלייה לאוטובוס.
מודולים נוספים
- צי רכב — בלוק מידע עם כרטיסים לכל רכב: סוג, קיבולת, מחלקה, תמונות, מאפיינים. סינון לפי קיבולת ומחלקה. בעת הזמנה — בחירה אוטומטית של אוטובוסים מתאימים.
- מעקב GPS אחר נסיעות — אינטגרציה עם מעקבים (WIALON, Galileosky). באתר — מפה עם מיקום האוטובוס, מתעדכנת כל 30-60 שניות.
- פורטל B2B — אזור פרטי ללקוחות עסקיים: התחברות לפי חוזה, הגשת בקשות, ייצוא חשבוניות ודוחות מ-1C, היסטוריית הזמנות, יתרת מקדמה.
- דפי נחיתה למסלולים — לתנועת SEO. לכל מסלול פופולרי נוצר רכיב בלוק מידע עם תיאור ייחודי, לוח זמנים ווידג'ט הזמנות.
תהליך העבודה
- אנליטיקה — חקר תהליכי העבודה של המוביל, איסוף דרישות לתעריפים, מסלולים, אינטגרציות.
- עיצוב — פיתוח ארכיטקטורת HL-block, סכמת חישוב, אב טיפוס ממשק.
- פיתוח — יישום מודולי הזמנות, צי רכב ואינטגרציה. כתיבת קוד ב-PHP 8.1+ באמצעות Component 2.0.
- בדיקות — אימות חישוב עלות ל-50+ תרחישים, בדיקות עומס למחשבון.
- השקה ותמיכה — הגדרת מטמון, ניטור, העברת גישה ותיעוד.
מה כלול בעבודה
- פיתוח מבנה בלוקי מידע ו-Highload-block
- יישום אלגוריתם חישוב עלות
- אינטגרציה עם מערכות תשלום (YooKassa, Sber)
- אינטגרציה עם 1C (CommerceML או שירותי HTTP)
- מטמון ואופטימיזציית ביצועים
- אופטימיזציית SEO לדפי נחיתה של מסלולים
- הכשרת מפעילים לעבודה עם פאנל הניהול
- תמיכה באחריות ל-6 חודשים
לוחות זמנים משוערים
| היקף | הרכב | זמן |
|---|---|---|
| מוביל קטן (5-10 מסלולים) | קטלוג שירותים, צי רכב, טופס פנייה, דפי מסלולים | 6-8 שבועות |
| חברה בינונית | + הזמנה מקוונת עם רשת תעריפים, תשלום, לוח נסיעות | 12-16 שבועות |
| מוביל גדול | + פורטל B2B, מעקב GPS, אינטגרציית 1C, רב-לשוניות | 20-26 שבועות |
העלות מחושבת באופן אישי — נבחן את הפרויקט לאחר הבריף. 1C-Bitrix: ניהול נתונים באמצעות Highload-blocks. צרו קשר לבדיקת תהליך העסקי שלכם. בקשו ייעוץ — נשלח הצעה מסחרית עם הערכה.

