סנכרון הזמנות Bitrix 1C: קונפליקטים במלאי והחלפה בזמן אמת

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

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

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1164

רשת קמעונאית מתמודדת עם שלושה ערוצי הזמנות בו-זמנית: חנות המקוונת Bitrix, מסופי POS בחנויות הפיזיות והזמנות טלפוניות. ללא סנכרון, המלאי נשמר במקביל מספר פעמים — מה שמוביל לביטול של עד 15% מההזמנות עקב מחסור בסחורה. אנחנו, מהנדסים עם ניסיון של 10+ שנים בייצור, מבטיחים החלפה דו-כיוונית של הזמנות ומלאי בין Bitrix ל-1C בזמן אמת. משמעות הדבר: תשלום מקוון שומר סחורה במחסן באופן מיידי, מכירות POS מפחיתות מיד את המלאי המקוון, וקונפליקטים מסולקים. מפתח-לסיום — מבחירת ארכיטקטורה ועד להדרכת צוות.

מדוע שלושה ערוצי הזמנות מבודדים הורסים את ניהול המלאי?

תרחיש טיפוסי: לקוח משלם באינטרנט עבור מוצר שנמכר כבר דרך POS לפני 10 דקות. Bitrix מנכה מלאי רק לאחר יצירת ההזמנה, בעוד שמכירת ה-POS כבר הפחיתה את המלאי הפיזי. ההזמנה המקוונת מתקבלת אך לא ניתן למלא אותה. יישום סנכרון מפחית את ההפסדים ממכירות כפולות ב-15–20%.

כיצד לבחור את מערכת השליטה בסנכרון?

קריטריון 1C כמערכת שליטה Bitrix כמערכת שליטה היברידי (לא מומלץ)
מקור האמת 1C Bitrix אין
הזמנות מקוונות מועברות ל-1C מעובדות ב-Bitrix משוכפלות
מכירות לא מקוונות נרשמות ב-1C נוצרות ב-Bitrix דרך API הזמנות אבודות
מלאי מסונכרן ל-Bitrix מסונכרן ל-1C מוחלף
קונפליקטים של מכירות מקבילות נפתרים ב-1C נפתרים ב-Bitrix מתרחשים בשתי המערכות

80% מהקונפליקטים נעלמים אם מערכת השליטה נבחרת לפני תחילת הפיתוח. התייעצו עם המומחים שלנו בשלב הביקורת.

ארכיטקטורת סנכרון: פרוטוקולים ותוכניות

1C כמערכת שליטה

1C הוא מקור האמת להזמנות ומלאי. Bitrix מעביר הזמנות מקוונות ל-1C, מכירות לא מקוונות נרשמות שם, והמלאי מסונכרן בחזרה.

Bitrix כמערכת שליטה

כל ההזמנות (מקוונות ולא מקוונות דרך POS) נאספות ב-Bitrix; 1C מקבל נתונים לחשבונאות.

סנכרון דרך CommerceML

ההחלפה הסטנדרטית של 1C-Bitrix (/bitrix/admin/1c_exchange.php) מכסה את התרחיש הבסיסי. ההגדרה נמצאת במודול sale. כפי שמצוין בתיעוד של 1C-Bitrix, החלפה סטנדרטית דרך CommerceML מתאימה להחלפה בקבוצות של הזמנות ומלאי. מגבלה: החלפה בקבוצות כל N דקות. לזמן אמת, נדרשים webhooks או תורי הודעות.

REST API ותור הודעות

פרוטוקול מהירות מורכבות יישום מתאים ל
CommerceML בקבוצות (כל N דקות) בינונית החלפת 1C בסיסית
REST API זמן אמת גבוהה POS לא סטנדרטי, webhooks
תור הודעות (RabbitMQ) אלפיות שנייה גבוהה מאוד רשתות גדולות, עומס גבוה

לרשתות גדולות ועומס גבוה, מומלץ תור RabbitMQ עם זמן השהיה של פחות משתי שניות.

יישום: שמירת מלאי וקונפליקטים

הזמנות לא מקוונות מ-POS

כאשר קופאי משלים מכירה דרך POS, האם עלינו ליצור הזמנה ב-Bitrix דרך API או רק לנכות מלאי?

דוגמה ליצירת הזמנה לא מקוונת דרך REST API:

// Создание оффлайн-заказа в Битрикс \Bitrix\Main\Loader::includeModule('sale'); \Bitrix\Main\Loader::includeModule('catalog'); $order = \Bitrix\Sale\Order::create(SITE_ID, $userId); $order->setField('CURRENCY', 'RUB'); $order->setField('USER_DESCRIPTION', 'Продажа в магазине: ' . $storeName); $basket = \Bitrix\Sale\Basket::create(SITE_ID); foreach ($items as $item) { $basketItem = $basket->createItem('catalog', $item['PRODUCT_ID']); $basketItem->setFields([ 'QUANTITY' => $item['QUANTITY'], 'CURRENCY' => 'RUB', 'LID' => SITE_ID, 'PRODUCT_PROVIDER_CLASS' => '\CCatalogProductProvider', ]); } $order->setBasket($basket); // Помечаем источник заказа $order->setField('STATUS_ID', 'F'); // Выполнен — оффлайн-продажа завершена $order->setField('ADDITIONAL_INFO', json_encode([ 'source' => 'offline', 'store' => $storeId, 'pos_transaction_id' => $transactionId, ])); $result = $order->save(); 

שמירת מלאי על הזמנה מקוונת

נקודה קריטית היא תזמון השמירה. Bitrix מנהל שמירות דרך // Создание оффлайн-заказа в Битрикс \Bitrix\Main\Loader::includeModule('sale'); \Bitrix\Main\Loader::includeModule('catalog'); $order = \Bitrix\Sale\Order::create(SITE_ID, $userId); $order->setField('CURRENCY', 'RUB'); $order->setField('USER_DESCRIPTION', 'Продажа в магазине: ' . $storeName); $basket = \Bitrix\Sale\Basket::create(SITE_ID); foreach ($items as $item) { $basketItem = $basket->createItem('catalog', $item['PRODUCT_ID']); $basketItem->setFields([ 'QUANTITY' => $item['QUANTITY'], 'CURRENCY' => 'RUB', 'LID' => SITE_ID, 'PRODUCT_PROVIDER_CLASS' => '\CCatalogProductProvider', ]); } $order->setBasket($basket); // Помечаем источник заказа $order->setField('STATUS_ID', 'F'); // Выполнен — оффлайн-продажа завершена $order->setField('ADDITIONAL_INFO', json_encode([ 'source' => 'offline', 'store' => $storeId, 'pos_transaction_id' => $transactionId, ])); $result = $order->save(); ו-b_catalog_store_product. עבור Click & Collect, שמרו במחסן ספציפי.

סנכרון מלאי בזמן אמת

שינויים במלאי בכל צד חייבים לבוא לידי ביטוי מיידי. השתמשו בתור אירועים:

// При изменении остатков — добавляем в очередь \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'catalog', 'OnProductUpdate', function (\Bitrix\Main\Event $event) { $productId = $event->getParameter('ID'); $fields = $event->getParameter('FIELDS'); if (isset($fields['QUANTITY'])) { // Ставим в очередь синхронизации с 1С \Local\Queue\InventorySync::push([ 'product_id' => $productId, 'quantity' => $fields['QUANTITY'], 'timestamp' => time(), ]); } } ); 

קונפליקטים של מכירות מקבילות

פתרון — ניכוי מלאי אטומי ברמת מסד הנתונים:

-- Атомарное списание с проверкой UPDATE b_catalog_store_product SET QUANTITY = QUANTITY - 1 WHERE PRODUCT_ID = ? AND STORE_ID = ? AND QUANTITY >= 1; -- Если affected_rows = 0 — остатка нет, отклоняем заказ 

מיושם ב-Bitrix דרך b_sale_product_reserve.

איך אנחנו עושים את זה: מקרה של רשת עם 10,000 פריטים

הלקוח שלנו — רשת של 12 חנויות עם 3 ערוצים מקוונים ומכירות לא מקוונות דרך 1C:Retail. CommerceML סטנדרטי גרם לעיכוב של 15 דקות. פתרון: תור RabbitMQ + סוכן מותאם אישית עם זמן השהיה של פחות משתי שניות. קונפליקטים נפתרו על ידי עקרון "הראשון שמבצע". תוצאה — דיוק מלאי של 99.9%. החזר השקעה תוך חודשיים.

מה כלול בעבודה ובתהליך

  • ביקורת על הארכיטקטורה הנוכחית
  • בחירת מערכת שליטה ופרוטוקול
  • הגדרת החלפת הזמנות, סטטוסים ומלאי
  • פיתוח סוכן מותאם אישית
  • בדיקות עומס
  • תיעוד והדרכה
  • תמיכה לחודש אחד

תהליך: ניתוח (1–2 ימים) → עיצוב (1–2) → יישום (3–5) → בדיקות (2–3) → פריסה (1). לוח זמנים: 5 עד 10 ימי עבודה.

אחריות: העבודה מתבצעת באמצעות תיעוד רשמי של Bitrix ו-1C. נעשה שימוש בעיבוד אסינכרוני כדי למזער הפסדים.

צרו קשר לביקורת חינם על המערכת שלכם. קבלו תוכנית סנכרון לעסק שלכם. הזמינו אינטגרציה ושכחו מבעיות מלאי.