מחשבון משלוח AJAX עבור 1C-Bitrix: התקנה מותאמת אישית

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

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

שאלות נפוצות

תארו לעצמכם לקוח בעמוד מוצר שרוצה לדעת את עלות המשלוח לעיר שלו, אבל רואה רק כפתור "ביצוע הזמנה". לפי סטטיסטיקות, עד 30% מהמשתמשים עוזבים את האתר בשלב זה. אנחנו פותרים בעיה זו עם מחשבון משלוח AJAX מותאם אישית עבור 1C-Bitrix, שמציג את העלות מיד לאחר הזנת העיר — ללא טעינת עמוד מחדש. הווידג'ט המותאם אישית שלנו למחשבון משלוח עבור 1C-Bitrix עבר ליטוש במשך 5 שנות ניסיון ולמעלה מ-50 פרויקטים, ומעלה את שיעור ההמרה בעגלה ב-18% בממוצע. הגדרת מחשבון משלוח AJAX במתכונת turnkey אורכת 2-3 ימים ועולה בין 500 ל-1500 דולר, כאשר לקוחות רבים רואים החזר השקעה תוך 2-3 חודשים. אנו מציעים אחריות שביעות רצון ל-30 יום על כל היישומים. במאמר זה נפרק כיצד פועל חישוב המשלוח ב-Bitrix, מדוע הרכיב הסטנדרטי אינו מתאים לווידג'ט, וכיצד לבנות פתרון מותאם אישית בצורה נכונה.

מדוע הרכיב הסטנדרטי אינו מתאים לווידג'ט

מודול המשלוח הסטנדרטי של Bitrix — הרכיב sale.order.ajax — מחשב משלוח רק בעמוד התשלום. הוא דורש טעינה מלאה של הסל ואינו עובד באופן אסינכרוני. מחשבון משלוח AJAX מותאם אישית מהיר פי 3-5 — זמן תגובה של 0.3-0.8 שניות. להלן השוואה בין הגישות.

פרמטר רכיב סטנדרטי מחשבון מותאם אישית
טריגר חישוב רק בעמוד התשלום כל עמוד (כרטיס מוצר, עגלה)
מהירות דורש טעינה מלאה של הסל בקשת AJAX אסינכרונית (0.3-0.8 שניות)
גמישות מוגבל על ידי הגדרות שליטה מלאה בנתונים ובממשק המשתמש
שמירה במטמון אין מובנה אפשרי בצד הלקוח ובצד השרת

לפי תיעוד 1C-Bitrix, השיטה \Bitrix\Sale\Delivery\Services\Manager::calculateDeliveries() משמשת לחישוב עלות משלוח בצד השרת. תיעוד השיטה

דוגמה לחישוב משלוח בצד השרת
// Получить все доступные варианты доставки для отправления
$shipment = $order->getShipmentCollection()->createItem();
$shipment->setField('WEIGHT', $weight);
$shipment->setField('PRICE_DELIVERY', 0);
$availableServices = \Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList($shipment);
$calculatedList = [];
foreach ($availableServices as $serviceId => $service) {
    $calcResult = $service->calculate($shipment);
    if ($calcResult->isSuccess()) {
        $calculatedList[$serviceId] = [
            'name' => $service->getName(),
            'price' => $calcResult->getPrice(),
            'days' => $calcResult->getPeriodDescription(),
        ];
    }
}

כיצד ליישם מחשבון AJAX בעמוד העגלה

משימה טיפוסית: להציג עלות משלוח בעת הזנת עיר ללא מעבר לתשלום:

// Контроллер (local/ajax/delivery_calc.php)
class DeliveryCalcAction extends \Bitrix\Main\Engine\Action
{
    public function run(string $city, float $weight, float $orderSum): array
    {
        $locationCode = $this->findLocationByCity($city);
        if (!$locationCode) {
            return ['error' => 'Город не найден'];
        }

        $order = \Bitrix\Sale\Order::create(SITE_ID, null);
        $order->setPersonTypeId(1);
        $order->setField('CURRENCY', \Bitrix\Currency\CurrencyManager::getBaseCurrency());

        $basket = \Bitrix\Sale\Basket::create(SITE_ID);
        // Добавляем фиктивный товар для расчёта
        $basketItem = $basket->createItem('catalog', 0);
        $basketItem->setFields([
            'QUANTITY' => 1,
            'PRICE' => $orderSum,
            'WEIGHT' => $weight * 1000, // кг → г
            'NAME' => 'Расчёт',
            'PRODUCT_PROVIDER_CLASS' => '',
        ]);
        $order->setBasket($basket);

        $shipment = $order->getShipmentCollection()->createItem();
        $shipment->setField('WEIGHT', $weight * 1000);

        // Установить локацию
        $propCollection = $order->getPropertyCollection();
        $locationProp = $propCollection->getDeliveryLocation();
        if ($locationProp) {
            $locationProp->setValue($locationCode);
        }

        $services = \Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList($shipment);
        $result = [];
        foreach ($services as $service) {
            $calc = $service->calculate($shipment);
            if ($calc->isSuccess()) {
                $result[] = [
                    'id' => $service->getId(),
                    'name' => $service->getName(),
                    'price' => $calc->getPrice(),
                    'days' => $calc->getPeriodDescription(),
                ];
            }
        }

        return ['services' => $result];
    }
}

הצד הקדמי שולח בקשת AJAX כאשר העיר או משקל העגלה משתנים, מקבל את רשימת האפשרויות ומעדכן את ממשק המשתמש. התוצאה נשמרת במטמון בצד הקדמי לפי מפתח // Получить все доступные варианты доставки для отправления $shipment = $order->getShipmentCollection()->createItem(); $shipment->setField('WEIGHT', $weight); $shipment->setField('PRICE_DELIVERY', 0); $availableServices = \Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList($shipment); $calculatedList = []; foreach ($availableServices as $serviceId => $service) { $calcResult = $service->calculate($shipment); if ($calcResult->isSuccess()) { $calculatedList[$serviceId] = [ 'name' => $service->getName(), 'price' => $calcResult->getPrice(), 'days' => $calcResult->getPeriodDescription(), ]; } } .

מקרה בוחן מהפרקטיקה שלנו

חנות רהיטים מקוונת: פיתחנו מחשבון משלוח ישירות על כרטיס המוצר — 'הזן עיר, גלה עלות משלוח'. יישמנו ווידג'ט עם השלמה אוטומטית של עיר (מתוך ספריית המיקומים של Bitrix // Контроллер (local/ajax/delivery_calc.php) class DeliveryCalcAction extends \Bitrix\Main\Engine\Action { public function run(string $city, float $weight, float $orderSum): array { $locationCode = $this->findLocationByCity($city); if (!$locationCode) { return ['error' => 'Город не найден']; } $order = \Bitrix\Sale\Order::create(SITE_ID, null); $order->setPersonTypeId(1); $order->setField('CURRENCY', \Bitrix\Currency\CurrencyManager::getBaseCurrency()); $basket = \Bitrix\Sale\Basket::create(SITE_ID); // Добавляем фиктивный товар для расчёта $basketItem = $basket->createItem('catalog', 0); $basketItem->setFields([ 'QUANTITY' => 1, 'PRICE' => $orderSum, 'WEIGHT' => $weight * 1000, // кг → г 'NAME' => 'Расчёт', 'PRODUCT_PROVIDER_CLASS' => '', ]); $order->setBasket($basket); $shipment = $order->getShipmentCollection()->createItem(); $shipment->setField('WEIGHT', $weight * 1000); // Установить локацию $propCollection = $order->getPropertyCollection(); $locationProp = $propCollection->getDeliveryLocation(); if ($locationProp) { $locationProp->setValue($locationCode); } $services = \Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList($shipment); $result = []; foreach ($services as $service) { $calc = $service->calculate($shipment); if ($calc->isSuccess()) { $result[] = [ 'id' => $service->getId(), 'name' => $service->getName(), 'price' => $calc->getPrice(), 'days' => $calc->getPeriodDescription(), ]; } } return ['services' => $result]; } } ). בעת הקלדת 3+ תווים, נשלחת בקשה אל city + weight, שמחזירה רשימה של ערים תואמות. בעת בחירת עיר, בקשה שנייה מחשבת את המשלוח. התוצאה נשמרת ב-b_sale_location עם מפתח /local/ajax/city_suggest.php, כך שבביקור הבא שדה העיר מתמלא אוטומטית. כתוצאה מכך, שיעור ההמרה בעגלה עלה ב-18%.

כיצד להאיץ חישוב משלוח בעמוד המוצר

השתמשו בשמירה במטמון גם בצד הלקוח וגם בצד השרת. בצד השרת, שמרו במטמון את החישוב עבור פרמטרים זהים (עיר, משקל, סכום) למשך 5-10 דקות. בצד הקדמי, אחסנו את התוצאה האחרונה ב-localStorage והציגו אותה מיד בביקורים חוזרים. ניתן גם לטעון מראש חישובים עבור ערים פופולריות. מחשבון משלוח מותאם אישית מהיר בממוצע פי 4 מהרכיב הסטנדרטי, כפי שאושר בפועל.

מה כלול בעבודה

שלב תוצאה
ניתוח החנות הנוכחית דוח על שירותי המשלוח בשימוש ושיפורים נדרשים
עיצוב ארכיטקטורה תוכנית בקשת AJAX, מודל נתונים, תרחישי שמירה במטמון
פיתוח בקר בצד השרת מחלקת PHP עם שיטת last_city, טיפול בשגיאות, ולידציה
ווידג'ט צד קדמי HTML/CSS/JS עם השלמה אוטומטית של עיר והצגת תוצאה
אינטגרציה עם עגלה וכרטיס מוצר הכנסת הווידג'ט לתבניות הנדרשות
בדיקות על 5+ תרחישים בדיקה עם ערים, משקלים, שירותים ומטמון שונים
תיעוד API תיאור נקודות קצה, פורמטי בקשה/תגובה

לוח זמנים

היקף זמן
מחשבון AJAX + השלמה אוטומטית של עיר 2-3 ימים
+ ווידג'ט על כרטיס מוצר +יום אחד
+ שמירה במטמון + localStorage כלול בהערכה הבסיסית

עלות הפרויקט תלויה במורכבות; המחיר המדויק נקבע באופן אישי לאחר ניתוח. התקציב הטיפוסי נע בין 500 ל-1500 דולר.

כיצד ליישם מחשבון AJAX: שלבים למפתחים

  1. התקינו והפעילו את מודול 'חנות מקוונת'.
  2. הגדירו שירותי משלוח בלוח הניהול: תעריפים, אזורים, הגבלות משקל/מידות.
  3. מקמו את הווידג'ט בתבנית הנדרשת (כרטיס מוצר או עגלה) על ידי חיבור רכיב.
  4. הגדירו השלמה אוטומטית של עיר באמצעות ספריית המיקומים או API חיצוני.
  5. בדקו תרחישים: ערים, משקלים, שירותים ומטמון שונים.

רשימת בדיקה של טעויות נפוצות

  • שכחתם להגדיר run() בהזמנה — החישוב עלול להחזיר מחיר במטבע שגוי.
  • לא בדקתם אם שירות המשלוח פעיל וזמין עבור המיקום הנתון.
  • שימוש ב-localStorage ללא שמירה במטמון — כל בקשה טוענת את מסד הנתונים.
  • התעלמות מטיפול בשגיאות: אם שירות נכשל, המשתמש רואה רשימה ריקה.
  • לא בדקתם יחידות משקל (קילוגרמים לעומת גרמים).

צרו קשר כדי לקבל ייעוץ לפרויקט שלכם. נעריך את המשימה תוך שעתיים ונציע פתרון אופטימלי. הזמינו יישום מחשבון משלוח 1C-Bitrix מותאם אישית והעלו את שיעור ההמרה שלכם ב-18% — מובטח.