בעת ביצוע הזמנה באתר 1C-Bitrix, רואי חשבון נאלצים לעתים קרובות ליצור ידנית UPD ב-1C ולשלוח אותו דרך 1C-EDO. זה לוקח שעות וכרוך בסיכון לשגיאות בפרטים. אנו פותרים זאת תוך 2–4 שבועות: אנו מגדירים העברה אוטומטית של הזמנות מ-Bitrix ל-1C, ומשם לצד השני דרך 1C-EDO. ללא הזנת נתונים כפולה.
1C-EDO הוא שירות החלפת מסמכים אלקטרוניים מובנה בתצורות 1C (חשבונאות, ניהול מסחר, ERP). כאשר חברה כבר משתמשת ב-1C-EDO לזרימת עבודה פנימית, משימת האינטגרציה עם אתר 1C-Bitrix מנוסחת כך: הזמנות מ-Bitrix נכנסות אוטומטית ל-1C, ו-UPD, חשבוניות ומסמכים נוצרים ונשלחים דרך 1C-EDO ללא הזנת נתונים כפולה.
לפי נתוני הפרויקטים שלנו, האוטומציה צמצמה את זמן עיבוד ההזמנות מיומיים ל-35 דקות.
תרשים זרימת העבודה
Битрикс (заказ создан/оплачен) → Стандартный обмен bitrix→1С (CommerceML/REST) → 1С: создана реализация/акт → 1С-ЭДО: документ отправлен контрагенту через оператора → 1С: статус подписания получен от оператора → 1С→Битрикс: статус документа обновлён в заказе Bitrix בתרשים זה הוא מקור ההזמנות. 1C הוא המקום שבו נוצרים מסמכים חשבונאיים. 1C-EDO הוא אמצעי השינוע.
הגדרת החלפה בין Bitrix ל-1C
ההחלפה הסטנדרטית פועלת דרך Битрикс (заказ создан/оплачен) → Стандартный обмен bitrix→1С (CommerceML/REST) → 1С: создана реализация/акт → 1С-ЭДО: документ отправлен контрагенту через оператора → 1С: статус подписания получен от оператора → 1С→Битрикс: статус документа обновлён в заказе ו-bitrix:catalog באמצעות CommerceML 2.10. ב-1C, היא מחוברת דרך "החלפה עם האתר" בקונפיגורטור.
להעברה אוטומטית של הזמנות ל-1C, אנו מגדירים לוח זמנים לייצוא: כל 15–30 דקות או על בסיס אירוע דרך bitrix:sale.export. עם החלפה מהירה באמצעות REST API ב-1C, ניתן להגיע לזמן כמעט אמיתי: אירוע \Bitrix\Main\EventManager ב-Bitrix מפעיל בקשת POST לשירות REST של 1C.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderPaid',
function (\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
if ($order->isPaid()) {
// Отправляем заказ в 1С немедленно (не ждём cron)
\Local\OneCIntegration\OrderSync::pushOrderToOnec($order->getId());
}
}
);ב-1C, שירות ה-REST (OnSaleOrderPaid) מקבל את ההזמנה ויוצר מסמך מכירה. לאחר מכן 1C-EDO שולח אוטומטית (בהתאם להגדרות 1C) או בלחיצת כפתור את ה-UPD לצד השני.
זרימה הפוכה: סטטוסים מ-1C ל-Bitrix
כאשר הצד השני חותם על המסמך במערכת ה-EDO שלו, 1C מקבל אישור דרך המפעיל. לאחר מכן 1C יכול לקרוא ל-webhook של Bitrix או להעביר את הסטטוס בהחלפה המתוזמנת הבאה.
// Endpoint в Битрикс для приёма статусов от 1С
// /local/ajax/onec_edo_status.php
$data = json_decode(file_get_contents('php://input'), true);
if ($data['action'] === 'update_edo_status') {
$orderId = (int)$data['order_id'];
$edoStatus = $data['edo_status']; // 'signed', 'rejected', 'annulled'
// Записываем в пользовательское поле заказа
$order = \Bitrix\Sale\Order::load($orderId);
if ($order) {
$props = $order->getPropertyCollection();
$prop = $props->getItemByOrderPropertyCode('EDO_STATUS');
if ($prop) {
$prop->setValue($edoStatus);
}
$order->save();
// Уведомление менеджеру
if ($edoStatus === 'rejected') {
\CEvent::Send('EDO_DOCUMENT_REJECTED', SITE_ID, [
'ORDER_ID' => $orderId,
'REASON' => $data['reason'],
]);
}
}
} כיצד אינטגרציה של 1C-Bitrix עם 1C-EDO מקצרת את זמן זרימת המסמכים
החלפה אוטומטית דרך 1C-EDO מהירה פי 80 מהזנת נתונים ידנית. השוואה לפני/אחרי מהניסיון שלנו:
| מדד | לפני | אחרי |
|---|---|---|
| זמן מהזמנה ועד שליחת UPD | 1–2 ימים (ידני) | 35 דקות (אוטומטי) |
| שגיאות בפרטים (אי-התאמה בין 1C ל-Bitrix) | ~12%/חודש | < 1% |
| זמן רואה חשבון העוסק ב-EDO (שעות/יום) | ~שעתיים | ~15 דקות |
מדוע החלפת CommerceML הסטנדרטית דורשת שיפור
מקרה: מפעל ייצור
לקוח: יצרן ציוד תעשייתי. 1C UT 11.5 עם 1C-EDO. אתר על 1C-Bitrix Site Management להזמנות B2B של סוחרים. מטרה: הסוחר מבצע הזמנה באתר, UPD נוצר ונשלח אוטומטית דרך EDO; ללא יצירת מסמכים ידנית על ידי רואה חשבון או מנהל.בעיות:
- להחלפת CommerceML הסטנדרטית היה עיכוב של 30 דקות והיא לא העבירה נתוני ישות משפטית (ח"פ, מ.ס.).
- 1C-EDO לא הוגדר לשליחה אוטומטית—נדרש אישור ידני.
- סטטוס החתימה לא הוצג ב-Bitrix.
פתרונות:
- הרחבנו את ייצוא CommerceML דרך
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderPaid', function (\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->isPaid()) { // Отправляем заказ в 1С немедленно (не ждём cron) \Local\OneCIntegration\OrderSync::pushOrderToOnec($order->getId()); } } );—הוספנו שדות ישות משפטית ל-XML. - הגדרנו כלל EDO אוטומטי ב-1C: בעת יצירת מסמך מכירה עם סוג חוזה ספציפי—שליחה אוטומטית.
- פיתחנו סקריפט סנכרון הפוך: 1C קורא ל-webhook של Bitrix כל 15 דקות עם סטטוסים.
מיפוי סטטוסי EDO לסטטוסי הזמנה ב-Bitrix
| סטטוס 1C-EDO | סטטוס הזמנה ב-Bitrix | פעולה |
|---|---|---|
| נשלח | EDO_SENT | עדכון מנהל |
| נמסר | EDO_DELIVERED | — |
| נחתם על ידי הצד השני | EDO_SIGNED | סגירת עסקה ב-CRM |
| נדחה | EDO_REJECTED | עדכון + משימה למנהל |
| בוטל | EDO_ANNULLED | סימון הזמנה |
שיקולים למספר מפעילי EDO
1C-EDO תומך ב-roaming בין מפעילים: מסמך שנשלח דרך המפעיל המשרת את השולח מועבר לצד השני דרך המפעיל שלו. בקוד Bitrix, זה שקוף—לוגיקת הניתוב נמצאת כולה בצד של 1C.
מה כלול בעבודה
- ביקורת על תוכנית ההחלפה הנוכחית בין Bitrix ל-1C: CommerceML או REST
- הרחבת סכמת הייצוא לנתוני EDO (ח"פ, מ.ס., סוג מסמך)
- הגדרת כללי שליחה אוטומטית דרך 1C-EDO ב-1C
- סנכרון סטטוסים הפוך: webhook או בדיקה תקופתית
- הצגת סטטוס EDO בהזמנה ב-Bitrix (שדה מותאם אישית)
- התראות על דחייה או ביטול
- הדרכה לרואה החשבון על המנגנון
לוח זמנים: עם החלפת Bitrix-1C קיימת, 2–4 שבועות לחלק ה-EDO. אם יש לבנות את ההחלפה מאפס, הוסיפו 2–3 שבועות. נבחן את הפרויקט שלכם תוך יום עסקים אחד. צרו קשר לביקורת על תוכנית ההחלפה שלכם. הזמינו אינטגרציה ונשוב אליכם עם הצעה.
יישמנו למעלה מ-50 אינטגרציות כאלה ב-7 שנים. אחריות: בדיקות על הזמנות אמיתיות לפני העלייה לאוויר.

