שילוב 1C-Bitrix עם שירותי אופטימיזציית מסלולים

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

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

שאלות נפוצות

כל יום, דיספצ'ר מבלה 2-3 שעות בתכנון מסלולים ידני. שליחים לא מצליחים לספק את כל ההזמנות בזמן, ונסיעות חוזרות מגדילות את עלויות הדלק. שילוב 1C-Bitrix עם ממשקי API לאופטימיזציית מסלולים פותר את הבעיות האלה: אלגוריתמים מוצאים את המסלול האופטימלי תוך שניות, תוך התחשבות בעומסי תנועה, חלונות זמן ועומס רכב. הצוות שלנו ביצע יותר מ-30 שילובים כאלה לעסקים עם צי של 1 עד 100 רכבים, עם ניסיון של 5 שנים. הניסיון מראה שלאחר היישום, זמן התכנון יורד ל-10 דקות, והקילומטראז' פוחת ב-15-25%. אנו מבטיחים שילוב יציב בכל השלבים.

בעיית אופטימיזציית המסלולים (Vehicle Routing Problem, VRP) היא NP-hard, לפי ויקיפדיה. בפועל, שירותים מסחריים מתמודדים עם זה: Yandex.Marshruization, Route4Me, Routific, OptimoRoute. הם מעבדים 10,000 נקודות תוך שניות—פי 10 מהר יותר מפתרונות מותאמים אישית. OR-Tools החינמי של גוגל גם נותן תוצאות מצוינות. אנו משלבים כל אחד מהם לתוך Bitrix CRM שלך באמצעות מתאם אוניברסלי. מהנדסים מוסמכים יבחרו את השירות הטוב ביותר עבור התקציב שלך.

בעיות שאנו פותרים

  • תכנון ידני ארוך: הלוגיסטיקאי מבלה 2-3 שעות בבוקר. אוטומציה מקצרת את זה ל-10 דקות.
  • מסלולים עמוסים מדי: ללא אופטימיזציה, שליח נוסע 50 ק"מ נוספים ביום. האופטימיזציה מפחיתה את הקילומטראז' ב-15-25%, חוסכת בעלויות דלק (למשל, $200 לחודש לצי בינוני).
  • שגיאות גיאוקידינג: אם כתובת לא מומרת לקואורדינטות, הרכב הולך למקום הלא נכון. אנו מבצעים גיאוקידינג במהלך ייבוא ההזמנות באמצעות מאגרי מידע עדכניים.

חיסכון בזמן דיספצ'ר: 2 שעות ביום. הפחתת עלויות לוגיסטיקה: עד 25%, בדרך כלל חיסכון של $300-$800 לחודש.

כיצד לבחור שירות אופטימיזציה לעסק שלך

שירות תכונות מודל תמחור
Yandex.Marshruization תשתית רוסית, מאגר גיאוקידינג טוב בקשות + מחסן שליחים
Route4Me API גמיש, חלונות זמן, ריבוי מוקדים מנוי מ-$189 לחודש
Routific API פשוט, מתאים לציים קטנים מנוי מ-$99 לחודש
OptimoRoute עדיפויות, כישורי נהגים מנוי מ-$129 לחודש
OR-Tools חינמי, מתארח עצמאית, דורש שרת Python שרתים משלך

הבחירה תלויה במספר הרכבים ובנפח ההזמנות. ל-1-3 רכבים: Routific או Yandex; ל-10+: Route4Me עם ריבוי מוקדים. אנו עוזרים לך לבחור.

ארכיטקטורת שילוב

תהליך עבודה:

  1. בבוקר, סוכן אוסף הזמנות להיום עם סטטוס 'למסירה' מ-b_sale_order.
  2. יוצר רשימת נקודות עם כתובות, קואורדינטות וחלונות זמן.
  3. שולח בקשה ל-API של האופטימיזציה.
  4. שומר את המסלולים ב-bl_delivery_routes.
  5. מקצה נהגים דרך CRM או ידנית.
  6. עם השלמת המסירה, webhook מהאופטימיזציה מעדכן את סטטוסי ההזמנות.
מקרה בוחן: אוטומציה לרשת משלוחיםלרשת של 15 רכבים עם ריבוי מוקדים, שילבנו את Route4Me. זמן התכנון ירד מ-3 שעות ל-15 דקות, הקילומטראז' ב-20%, וחיסכנו ללקוח $500 לחודש. הלקוח קיבל מפת מסלולים בפאנל הניהול והתראות אוטומטיות ללקוחות.

למה שילוב דרך מתאם הוא אמין

אנו מיישמים את תבנית המתאם—ממשק אחד, מספר יישומים:

interface RouteOptimizerInterface {
    public function optimize(array $depot, array $vehicles, array $orders): array;
}

class YandexRouteOptimizer implements RouteOptimizerInterface {
    public function optimize(array $depot, array $vehicles, array $orders): array {
        $payload = [
            'depot' => $depot,
            'vehicles' => $vehicles,
            'orders' => array_map(fn($o) => [
                'id' => (string)$o['order_id'],
                'point' => ['lat' => $o['lat'], 'lon' => $o['lon']],
                'time_window' => [$o['time_from'], $o['time_to']],
                'service_duration' => 300,
            ], $orders),
        ];

        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Content-Type', 'application/json');
        $http->setHeader('X-Ya-Courier-Request-Id', uniqid());
        $response = $http->post(
            'https://courier.yandex.ru/api/v1/companies/' . $this->companyId . '/routes',
            json_encode($payload)
        );
        return json_decode($response, true);
    }
}

class Route4MeOptimizer implements RouteOptimizerInterface {
    public function optimize(array $depot, array $vehicles, array $orders): array {
        // Route4Me-специфичная логика
    }
}

היישום הספציפי נבחר דרך factory method ומוגדר ב-interface RouteOptimizerInterface { public function optimize(array $depot, array $vehicles, array $orders): array; } class YandexRouteOptimizer implements RouteOptimizerInterface { public function optimize(array $depot, array $vehicles, array $orders): array { $payload = [ 'depot' => $depot, 'vehicles' => $vehicles, 'orders' => array_map(fn($o) => [ 'id' => (string)$o['order_id'], 'point' => ['lat' => $o['lat'], 'lon' => $o['lon']], 'time_window' => [$o['time_from'], $o['time_to']], 'service_duration' => 300, ], $orders), ]; $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Content-Type', 'application/json'); $http->setHeader('X-Ya-Courier-Request-Id', uniqid()); $response = $http->post( 'https://courier.yandex.ru/api/v1/companies/' . $this->companyId . '/routes', json_encode($payload) ); return json_decode($response, true); } } class Route4MeOptimizer implements RouteOptimizerInterface { public function optimize(array $depot, array $vehicles, array $orders): array { // Route4Me-специфичная логика } } .

המרת נתוני הזמנות

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

function buildOrderPoint(\Bitrix\Sale\Order $order): array {
    $props = $order->getPropertyCollection();
    return [
        'order_id' => $order->getId(),
        'lat' => (float)$props->getItemByOrderPropertyCode('LAT')?->getValue(),
        'lon' => (float)$props->getItemByOrderPropertyCode('LON')?->getValue(),
        'time_from' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_FROM')?->getValue()),
        'time_to' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_TO')?->getValue()),
        'weight_kg' => $this->getBasketWeight($order->getBasket()),
        'volume_m3' => $this->getBasketVolume($order->getBasket()),
        'priority' => (int)$props->getItemByOrderPropertyCode('DELIVERY_PRIORITY')?->getValue(),
    ];
}

אחסון והצגת מסלולים

מבנה הטבלה b_option:

route_id — ID маршрута от оптимизатора
route_date — дата доставки
vehicle_id — ID транспортного средства
driver_id — CRM-контакт водителя
stops_json — JSONB упорядоченный список остановок
total_distance — общий пробег в км
estimated_time — предполагаемое время в минутах
status — planned / in_progress / completed
created_at

המסלול מוצג על מפה בסעיף הניהול באמצעות Yandex.Maps API או Leaflet.js. הנהג מקבל קישור עם נקודות ציון.

עדכון סטטוסי הזמנות

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

// /bitrix/route_webhook.php
$data = json_decode(file_get_contents('php://input'), true);
foreach ($data['completed_stops'] as $stop) {
    $order = \Bitrix\Sale\Order::load((int)$stop['order_id']);
    if ($order) {
        $order->setField('STATUS_ID', 'F');
        $order->save();
        // Отправка письма клиенту о доставке
    }
}

ציר זמן לפי קנה מידה

קנה מידה תכונות ציר זמן
קטן (1-3 רכבים) מתאם יחיד, הקצאת נהג ידנית 3-5 ימים
בינוני (5-20 רכבים) הקצאה אוטומטית, מפת מסלולים, webhooks לסטטוס 8-12 ימים
גדול (20+ רכבים) ריבוי מוקדים, כישורי נהגים, מעקב בזמן אמת 20-35 ימים

מה כלול

  • פיתוח ממשק function buildOrderPoint(\Bitrix\Sale\Order $order): array { $props = $order->getPropertyCollection(); return [ 'order_id' => $order->getId(), 'lat' => (float)$props->getItemByOrderPropertyCode('LAT')?->getValue(), 'lon' => (float)$props->getItemByOrderPropertyCode('LON')?->getValue(), 'time_from' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_FROM')?->getValue()), 'time_to' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_TO')?->getValue()), 'weight_kg' => $this->getBasketWeight($order->getBasket()), 'volume_m3' => $this->getBasketVolume($order->getBasket()), 'priority' => (int)$props->getItemByOrderPropertyCode('DELIVERY_PRIORITY')?->getValue(), ]; } עם מתאמים לשירותים שלך (1-3 ימים למתאם הראשון)
  • הגדרת סוכן איסוף הזמנות ששולח נתונים לאופטימיזציה בבוקר
  • יצירת טבלת bl_delivery_routes לאחסון מסלולים וסטטוסים
  • יישום מפת מסלולים בסעיף הניהול
  • הגדרת webhook לעדכון סטטוסי הזמנות עם השלמת מסירה
  • תיעוד הארכיטקטורה והדרכה ללוגיסטיקאים (1-2 שעות)
  • 30 ימי תמיכה לאחר המסירה

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