אנו יוצרים מטפלי משלוח מותאמים אישית עבור 1C-Bitrix כאשר השירותים המובנים אינם מספיקים. חנות מקוונת מוכרת סחורות גדולות, ומטפלים סטנדרטיים אינם מתחשבים במשקל נפחי, באזורי משלוח מבוססי קואורדינטות ובתוספות תשלום עבור קומות. הלקוח רואה טווח מחירים במקום סכום מדויק ונוטש את העגלה. הפתרון שלנו הוא מחשבון מותאם אישית עם חישוב מדויק, תעריפים גמישים ושליטה מלאה בלוגיקה. מחשבון מותאם אישית מדויק פי 3 משירותי משלוח סטנדרטיים: נטישת העגלה יורדת פי שלושה.
מתי שירות משלוח סטנדרטי אינו מספיק?
מטפלים סטנדרטיים מכסים 80% מהתרחישים האופייניים: מחיר קבוע, אחוז מסכום ההזמנה, אינטגרציית API עם חברת שילוח. אבל ברגע שצריך לוגיקה מעורבת—חישוב משקל ונפח בו-זמנית, חלוקה לאזורים לפי קואורדינטות גיאוגרפיות, טבלאות תעריפים עם מטריצות תנאים—היכולות שלהם אינן מספיקות. או שאתה צריך לכופף את הלוגיקה בתוך המגבלות של השירות הקיים (כאוטי, לא קריא, נשבר בעדכון) או לפתח מטפל משלך.
איך עובד מחשבון משלוח מותאם אישית?
כל שירותי המשלוח למשתמש מיושמים באמצעות מחלקה היורשת מ-\Bitrix\Sale\Delivery\Services\Base. קובץ המטפל ממוקם ב-/local/php_interface/include/sale_delivery/:
namespace MyProject\Delivery; use Bitrix\Sale\Delivery\Services\Base; use Bitrix\Sale\Delivery\Requests\RequestAbstract; use Bitrix\Sale\Shipment; class CustomCalculator extends Base { protected static $isCalculatePriceImmediately = true; protected static $canHasProfiles = true; public static function getClassTitle(): string { return 'Кастомный калькулятор доставки'; } public static function getClassDescription(): string { return 'Расчёт стоимости по весу, зоне и типу товара'; } protected function calculateConcrete(Shipment $shipment): \Bitrix\Sale\Delivery\CalculationResult { $result = new \Bitrix\Sale\Delivery\CalculationResult(); $price = $this->computePrice($shipment); if ($price === null) { $result->addError(new \Bitrix\Main\Error('Невозможно рассчитать доставку')); return $result; } $result->setDeliveryPrice($price); $result->setPeriodDescription($this->getPeriodText($shipment)); return $result; } } המתודה namespace MyProject\Delivery; use Bitrix\Sale\Delivery\Services\Base; use Bitrix\Sale\Delivery\Requests\RequestAbstract; use Bitrix\Sale\Shipment; class CustomCalculator extends Base { protected static $isCalculatePriceImmediately = true; protected static $canHasProfiles = true; public static function getClassTitle(): string { return 'Кастомный калькулятор доставки'; } public static function getClassDescription(): string { return 'Расчёт стоимости по весу, зоне и типу товара'; } protected function calculateConcrete(Shipment $shipment): \Bitrix\Sale\Delivery\CalculationResult { $result = new \Bitrix\Sale\Delivery\CalculationResult(); $price = $this->computePrice($shipment); if ($price === null) { $result->addError(new \Bitrix\Main\Error('Невозможно рассчитать доставку')); return $result; } $result->setDeliveryPrice($price); $result->setPeriodDescription($this->getPeriodText($shipment)); return $result; } } היא המפתח. היא מקבלת אובייקט calculateConcrete עם גישה מלאה להזמנה, פריטים, כתובת, משקל ונפח.
מדריך שלב אחר שלב ליצירת מטפל מותאם אישית
- צור מחלקה היורשת מ-
Shipment. - יישם את המתודה
\Bitrix\Sale\Delivery\Services\Base, המחשבת את העלות ומחזירהcalculateConcrete. - הגדר אחסון תעריפים בבלוק מידע או בלוק HL לניהול גמיש.
- הוסף פרופילים אם יש צורך בתוכניות תעריף שונות (לדוגמה, 'רגיל' ו'אקספרס').
- הפעל שמירת מטמון של תוצאות למשך 10 דקות להפחתת עומס.
- בדוק על הזמנות ומשלוחים אמיתיים.
חישוב עלות: ממשקל לאזור
בתוך CalculationResult, נאספים כל פרמטרי המשלוח: משקל פריט, נפח (אורך × רוחב × גובה), אזור משלוח. מקדם המשקל הנפחי (ברירת מחדל 250 ק"ג/מ"ק) קובע את המשקל הנפחי, המושווה למשקל הפיזי—הערך הגדול יותר משמש לחישוב. האזור יכול להיקבע לפי עיר (חלוקה פשוטה) או לפי קואורדינטות (באמצעות Yandex Geocoder או DaData)—למשלוח שליחים בתוך עיר. התעריפים מאוחסנים במסד הנתונים, לא בקוד: רשת מדורגת עם גבולות משקל ומחיר לק"ג.
תוספות תשלום נוספות
מחשבונים אמיתיים כוללים מספר שכבות של תוספות: עבור סחורה שבירה (לדוגמה, +15%), תוספת למשלוח לקומה (מחושבת בנפרד), מזומן במשלוח (אחוז מסכום ההזמנה), והנחה ללקוחות B2B. כל הפרמטרים ניתנים להגדרה בלוח הניהול באמצעות computePrice—מנהל יכול לשנות תעריפים ללא מעורבות מפתח.
public static function getHandlerParams(): array { return [ 'FLOOR_SURCHARGE' => [ 'TYPE' => 'NUMBER', 'DEFAULT' => 150, 'TITLE' => 'Наценка за этаж (руб)', ], 'COD_PERCENT' => [ 'TYPE' => 'NUMBER', 'DEFAULT' => 3, 'TITLE' => 'Наценка за наложенный платёж (%)', ], 'B2B_DISCOUNT' => [ 'TYPE' => 'NUMBER', 'DEFAULT' => 0.1, 'TITLE' => 'Скидка для B2B-клиентов (доля, 0.1 = 10%)', ], 'VOLUME_WEIGHT_COEF' => [ 'TYPE' => 'NUMBER', 'DEFAULT' => 250, 'TITLE' => 'Коэффициент объёмного веса (кг/м³)', ], ]; } פרופילים ושמירת מטמון
מטפל אחד יכול לספק מספר תוכניות תעריף באמצעות פרופילים—לדוגמה, 'רגיל (5–7 ימים)' ו'אקספרס (1–2 ימים)'. פרופילים יורשים את מחלקת הבסיס ומשנים מקדמים וזמנים. חישוב המשלוח נשמר במטמון למשך 10 דקות לפי מפתח הנגזר מפרמטרי המשלוח: אזור, משקל, נפח, דגלי תוספות. זה מאיץ בקשות חוזרות עד פי 10.
איך להתאים את המחשבון לכללי עסק ספציפיים?
לכל חנות יש דרישות ייחודיות: משלוח חינם להזמנות זכאיות, משלוח חינם לקומה לפריטים עד 20 ק"ג, תוספת לאזורים מרוחקים. כל הכללים הללו מיושמים בקלות במתודה getHandlerParams(). לדוגמה, תנאי המשלוח החינמי בודק את סכום ההזמנה והמשקל. הגדרות כאלה אינן דורשות שינויי קוד—הן חשופות בממשק הניהול באמצעות `getHandlerParams(). צור קשר כדי לדון בכללי העסק שלך.
מה כלול בפיתוח?
- מחלקת מטפל משלוח (בסיס + פרופילים אם נדרש)
- מטריצת תעריפים במסד הנתונים עם ממשק ניהול אדמיניסטרטיבי
- חלוקה לאזורים (לפי עיר או קואורדינטות)
- תוספות לפי כללים (שבירות, קומה, מזומן במשלוח, הנחת B2B)
- שמירת מטמון חישוב
- בדיקות על הזמנות אמיתיות
- תיעוד והעברת גישה
השוואה: שירות סטנדרטי מול מחשבון מותאם אישית
מחשבון מותאם אישית מפחית את נטישת העגלה פי 3 בזכות חישוב מדויק.
| קריטריון | שירות סטנדרטי | מחשבון מותאם אישית |
|---|---|---|
| גמישות תעריפים | תעריף קבוע או % | רשת מדורגת, כל כללים |
| חלוקה לאזורים | רק לפי אזור | לפי עיר, קואורדינטות, משקל |
| תוספות | לא נתמכות | כל: שבירות, קומה, מזומן במשלוח |
| ניהול תעריפים | באמצעות קוד או הגדרות | באמצעות לוח ניהול, ללא צורך במתכנת |
| ביצועים | ללא מטמון | מטמון של 10 דקות, עומס מופחת פי 10 |
לוח זמנים לפיתוח
| מורכבות המחשבון | לוח זמנים |
|---|---|
| חלוקה לאזורים + תעריפי משקל מדורגים | 2–3 ימים |
| + משקל נפחי + תוספות נוספות | 3–5 ימים |
| + חלוקה לפי קואורדינטות + ממשק ניהול תעריפים | 1–1.5 שבועות |
| + פרופילים מרובים + מטמון + בדיקות | 1.5–2 שבועות |
לפי תיעוד 1C-Bitrix: "שירותי משלוח הם תת-מערכת המאפשרת חיבור כל מטפלי חישוב, כולל מותאמים אישית." זה מאשר את האפשרות ליישום מותאם אישית.
החזר השקעה ויתרונות
מחשבון מותאם אישית מחזיר את עצמו תוך 2–3 חודשים על ידי הפחתת נטישת העגלה—לקוחות רואים את מחיר המשלוח האמיתי, לא הערכה. אתה לא תלוי בעדכוני מודולים או בשירותי צד שלישי. מפתחי ה-Bitrix שלנו מוסמכים עם ניסיון של 10+ שנים והשלימו מעל 50 פרויקטי משלוח מותאמים אישית. בקש ייעוץ לתרחיש שלך—ננתח את המשימה ונציע ארכיטקטורה.







