תארו לעצמכם חנות מקוונת שמוכרת מוצרים מ-10 ספקים. מתקבלת הזמנה עם 5 פריטים מ-3 ספקים שונים. ללא אוטומציה, המנהל מעתיק ידנית שורות הזמנה לאקסל, מרכיב שלושה מיילים ושולח אותם. זה לוקח 15–20 דקות לכל הזמנה. ב-50 הזמנות ביום, זה יותר מ-10 שעות של שגרה טהורה. טעויות הן בלתי נמנעות: כתובת שגויה, מק"ט לא נכון, פריט מיותר. אוטומציה של זה חוסכת לכם עד 7,500$ לחודש בעלויות עבודה—העיבוד מהיר פי 10 מטיפול ידני, עם הפחתת שיעור שגיאות ב-95%. העלות הטיפוסית של היישום שלנו נעה בין 1,500$ ל-3,000$, עם החזר השקעה תוך פחות מ-3 חודשים.
אנחנו מבצעים אוטומציה של התהליך הזה במפתח סגור. אנו מגדירים מטפלי אירועים, HL-blocks וסוכנים כך שכל ספק יקבל רק את הפריטים שלו, והסטטוסים מנוטרים בזמן אמת. מומחים מוסמכים עם ניסיון של 10+ שנים יישמו למעלה מ-80 פרויקטים עם לוגיקת ספקים מרובים, ועיבדו למעלה מ-200,000 הזמנות בהצלחה. זמן העיבוד מופחת ב-90%, ושיעור השגיאות נשאר מתחת ל-0.5%.
מגבלות של משלוחי Bitrix סטנדרטיים לדרופשיפינג
מודל ההזמנה הסטנדרטי של Bitrix מניח שכל ההזמנה מטופלת על ידי חנות אחת. בדרופשיפינג, פריטים ממוקמים פיזית אצל ספקים שונים, וכל אחד צריך לקבל הודעה רק על הפריטים שלו. שימוש בהזמנה אחת עם משלוח אחד פירושו שהספק רואה את כל הפריטים, כולל אלה של אחרים, מה שמפריע ללוגיסטיקה ולסודיות.
איך לפצל הזמנות לפי ספק
ישנן שלוש גישות לפיצול. ראשית, הזמנה אחת עם הודעות נפרדות: ההזמנה נשארת שלמה, מטפל OnSaleOrderSaved או getSupplierByProductId() שולח לכל ספק מייל עם הפריטים שלו בלבד. זה פשוט אבל חסר מעקב נפרד אחר סטטוסי משלוח. שנית, הזמנה אחת עם מספר משלוחים: נוצר אובייקט Shipment עבור כל ספק. זהו מנגנון Bitrix טבעי, המעניק שליטה מלאה על המשלוחים וסטטוסים נפרדים. שלישית, פיצול להזמנות ילדות: הזמנת אב וכמה הזמנות ילדות לפי מספר הספקים. זה נותן עצמאות סטטוס מלאה אבל מורכב יותר ליישום ולתחזוקה.
עבור רוב הפרויקטים, אנו ממליצים על האפשרות השנייה: פתרון עם מספר משלוחים מהיר פי 2 לפיתוח מאשר עם הזמנות ילדות ומספק שילוב מאוזן של פונקציונליות ועלות. להלן סיכום של הגישות:
| וריאנט | תיאור | מאפיינים |
|---|---|---|
| הזמנה אחת + הודעות | ההזמנה נשארת יחידה, מיילים מסוננים לפי ספק | פשוט, ללא סטטוס משלוח נפרד |
| הזמנה אחת + מספר משלוחים | נוצר משלוח עבור כל ספק | שליטה מלאה, סטטוסים נפרדים |
| הזמנות ילדות | הזמנת אב + הזמנות ילדות לספקים | עצמאות מלאה, קשה יותר לתחזוקה |
יישום שלב אחר שלב של לוגיקת ספקים מרובים
שלב 1: זיהוי ספקים. כאשר הזמנה נשמרת, קרא ל-SUPPLIER_ID כדי לקרוא את המאפיין b_iblock_element_property מ-AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $isNew = $event->getParameter('IS_NEW'); if (!$isNew) return; $basket = $order->getBasket(); $supplierItems = []; foreach ($basket->getOrderableItems() as $item) { $supplierId = getSupplierByProductId($item->getProductId()); if ($supplierId) { $supplierItems[$supplierId][] = $item; } } $shipmentCollection = $order->getShipmentCollection(); foreach ($supplierItems as $supplierId => $items) { $shipment = $shipmentCollection->createItem(); $shipment->setField('DELIVERY_ID', getSupplierDeliveryId($supplierId)); $shipment->setField('CUSTOM_PRICE_DELIVERY', 'N'); $shipmentItemCollection = $shipment->getShipmentItemCollection(); foreach ($items as $basketItem) { $shipmentItem = $shipmentItemCollection->createItem($basketItem); $shipmentItem->setQuantity($basketItem->getQuantity()); } } $order->save(); }); . קבץ פריטי סל לפי ספק.
שלב 2: יצירת משלוחים. עבור כל ספק, צור אובייקט Shipment באוסף המשלוחים של ההזמנה. הגדר את שירות המשלוח והוסף פריטי משלוח.
AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $isNew = $event->getParameter('IS_NEW'); if (!$isNew) return; $basket = $order->getBasket(); $supplierItems = []; foreach ($basket->getOrderableItems() as $item) { $supplierId = getSupplierByProductId($item->getProductId()); if ($supplierId) { $supplierItems[$supplierId][] = $item; } } $shipmentCollection = $order->getShipmentCollection(); foreach ($supplierItems as $supplierId => $items) { $shipment = $shipmentCollection->createItem(); $shipment->setField('DELIVERY_ID', getSupplierDeliveryId($supplierId)); $shipment->setField('CUSTOM_PRICE_DELIVERY', 'N'); $shipmentItemCollection = $shipment->getShipmentItemCollection(); foreach ($items as $basketItem) { $shipmentItem = $shipmentItemCollection->createItem($basketItem); $shipmentItem->setQuantity($basketItem->getQuantity()); } } $order->save(); }); פרטים נוספים על אירוע OnSaleOrderSaved בתיעוד Bitrix. לחלופין, שימוש במטפל \Bitrix\Main\Mail\Event::send() מספק פונקציונליות דומה לצרכי זרימת עבודה שונים.
שלב 3: שליחת הודעות לספקים. כל ספק מקבל מייל או הודעה עם הפריטים שלו בלבד. שליחה דרך foreach ($supplierItems as $supplierId => $items) { $supplierEmail = getUserEmail($supplierId); \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'SUPPLIER_ORDER_NOTIFY', 'LID' => SITE_ID, 'C_FIELDS' => [ 'SUPPLIER_EMAIL' => $supplierEmail, 'ORDER_ID' => $order->getId(), 'ORDER_ITEMS' => formatItemsForEmail($items), 'BUYER_ADDRESS' => getOrderDeliveryAddress($order), ], ]); } עם תבנית מותאמת אישית:
הצג קוד הודעה
foreach ($supplierItems as $supplierId => $items) { $supplierEmail = getUserEmail($supplierId); \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'SUPPLIER_ORDER_NOTIFY', 'LID' => SITE_ID, 'C_FIELDS' => [ 'SUPPLIER_EMAIL' => $supplierEmail, 'ORDER_ID' => $order->getId(), 'ORDER_ITEMS' => formatItemsForEmail($items), 'BUYER_ADDRESS' => getOrderDeliveryAddress($order), ], ]); } התבנית SUPPLIER_ORDER_NOTIFY נוצרת בקטע "אירועי דואר" בלוח הניהול. העברת נתונים דרך REST API של הספק מאיצה את העיבוד פי 3 בהשוואה למייל—במיוחד עם 50+ הזמנות ביום. לשילוב חלק של ספקים, אנו תומכים גם בפידים XML ו-JSON.
שלב 4: מעקב אחר סטטוסי ספקים. HL-block SupplierOrderStatus מתעד את הסטטוס של כל חלק בהזמנה:
-
UF_ORDER_ID— מזהה הזמנת Bitrix -
UF_SUPPLIER_ID— ספק -
UF_STATUS—new/confirmed/shipped -
UF_TRACKING_NUMBER— מספר מעקב
סוכן בודק האם כל הספקים הגדירו shipped ומשנה את סטטוס ההזמנה הראשי:
function checkAllSuppliersShippedAgent(): string { $connection = \Bitrix\Main\Application::getConnection(); $orders = $connection->query(" SELECT UF_ORDER_ID FROM b_hl_supplier_order_status GROUP BY UF_ORDER_ID HAVING COUNT(*) = SUM(CASE WHEN UF_STATUS = 'shipped' THEN 1 ELSE 0 END) AND UF_ORDER_ID IN ( SELECT ID FROM b_sale_order WHERE STATUS_ID NOT IN ('F','C') ) "); while ($row = $orders->fetch()) { $order = \Bitrix\Sale\Order::load($row['UF_ORDER_ID']); if ($order) { $order->setField('STATUS_ID', 'S'); $order->save(); } } return __FUNCTION__ . '();'; } ה-HL block הזה למעקב אחר סטטוס הזמנות ספקים מבטיח שקיפות מלאה. כל הודעות הספקים ב-Bitrix מטופלות אוטומטית. זהו חלק מרכזי באוטומציה של דרופשיפינג ב-1C-Bitrix.
מה כלול בעבודה שלנו (תוצרים)
- ניתוח מבנה הקטלוג הנוכחי ותהליכים עסקיים (כולל מזההי מוצרים, פרטי קשר של ספקים)
- עיצוב ארכיטקטורה לפיצול (בחירת גישה, עיצוב HL-blocks, מטפלים, סוכנים)
- יישום קוד: מטפלי אירועים, סוכנים, תבניות דואר, אינטגרציות REST API
- הגדרת הודעות ומעקב סטטוסים דרך HL-block
- בדיקות על הזמנות אמיתיות, תיקון באגים, אופטימיזציית ביצועים
- תמיכה ותיעוד תפעולי — תיעוד מלא נמסר
- גישת ניהול מסופקת לצוות שלכם
- הדרכה לצוות שלכם (שעה)
- אחריות לפעולה רציפה לאחר ההשקה
תהליך עבודה: שלבים ותוצאות
| שלב | מה אנחנו עושים | תוצאה |
|---|---|---|
| ניתוח | לימוד מבנה הקטלוג, מוצרים, ספקים, תהליכים עסקיים | מפרט טכני עם בחירת וריאנט פיצול |
| עיצוב | עיצוב מטפלים, HL-block, סוכנים, תבניות דואר | ארכיטקטורת פתרון |
| יישום | כתיבת קוד, הגדרת משלוחים, הודעות, סוכן | פתרון מוכן בסביבת בדיקה |
| בדיקות | בדיקה על הזמנות אמיתיות, תיקון באגים | פעולה יציבה |
| השקה | מעבר לאתר חי, הגדרת סוכן | פתרון עובד |
לוחות זמנים ואיך אנחנו עובדים
ההתקנה אורכת בין 2 ל-5 ימים בהתאם למורכבות. אנחנו עובדים בשקיפות: ניתוח → עיצוב → יישום → בדיקות → השקה. אנו מבטיחים פעולה רציפה. קבלו ייעוץ — נבחן את הפרויקט שלכם ללא עלות ונציע את הגישה האופטימלית.
הניסיון שלנו בפיתוח Bitrix הוא למעלה מ-10 שנים, עם יותר מ-80 פרויקטים שיישמו לוגיקת ספקים מרובים. צרו קשר — נעזור לכם לבצע אוטומציה של הדרופשיפינג שלכם.







