ייצוא הזמנות אוטומטי ל-1C באמצעות CommerceML

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
ייצוא הזמנות אוטומטי ל-1C באמצעות CommerceML
מורכב
~5 ימים

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

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

כאשר הזמנות מועברות ידנית מחנות מקוונת ל-1C, רואה החשבון מבלה 2–3 שעות ביום, ובערך כל שורה עשירית מכילה שגיאה. ייצוא אוטומטי מהאתר ל-1C באמצעות CommerceML מבטל זאת: הנתונים מועברים באופן מיידי, ללא שגיאות הקלדה או אובדן. פתרון הייצוא האוטומטי שלנו ל-1C מבטיח החלפת נתונים חלקה עם 1C. אנו מטפלים ביצירת sale.xml ובעדכון סטטוס מ-1C לייצוא CommerceML חזק. לצוות שלנו ניסיון של 7+ שנים באינטגרציה עם 1C, כולל תצורות סטנדרטיות ומותאמות אישית. אנו מבטיחים העברת נתונים נכונה ורישום מלא לניפוי באגים.

אחד הפרויקטים שלנו היה חנות מקוונת עם 10,000 הזמנות בחודש. בעבר, רואה החשבון בילה 3 שעות ביום בהזנה ידנית, מה שעלה לחברה 4.5–6.5 אלף דולר בשנה בשכר. לאחר יישום ייצוא הזמנות באמצעות CommerceML2, הזמן ירד ל-10 דקות ביום. הלקוח חסך 3.6–5.2 אלף דולר בשנה הראשונה.

במאמר זה נסקור אילו נתונים ניתן לייצא, כיצד להגדיר יצירת sale.xml, לטפל באישורי קבלה ולעדכן סטטוסים. נדון גם במלכודות טיפוסיות וכיצד להימנע מהן.

המורכבות של ייצוא הזמנות ל-1C

האתגר אינו יצירת XML—זה פשוט. הקשיים מתחילים בהתאמת מזהים: אם מוצר נוצר באתר (ללא GUID מ-1C), לא ניתן פשוט להעביר אותו—יש ליצור פריט ב-1C או להתאים לפי SKU. בעיה נוספת היא קידוד: חלק מגרסאות 1C מצפות לקבצים ב-Windows-1251, בעוד שאתרים משתמשים בדרך כלל ב-UTF-8. לבסוף, בדיקות דורשות גישה למסד נתונים של 1C לבדיקות, שלא תמיד זמין בתחילת הדרך.

אילו נתונים מועברים ל-1C?

התרחישים הנפוצים ביותר לייצוא:

נתונים קובץ CommerceML תדירות
הזמנות חדשות sale.xml בעת אירוע / כל N דקות
שינויי סטטוס הזמנה sale.xml בעת אירוע
מלאי באתר offers.xml מתוזמן
לקוחות (קונים) import.xml מתוזמן

עבור כל תרחיש, אנו מגדירים לוגיקה ספציפית: אילו נתונים נכנסים ל-XML, באיזו תדירות הם מועברים, וכיצד מטפלים בשגיאות.

כיצד אנו יוצרים sale.xml

אנו מיישמים מחלקה SaleXmlGenerator שבונה את עץ המסמכים КоммерческаяИнформация עם מסמכי הזמנה:

class SaleXmlGenerator {
    public function generate(Collection $orders): string {
        $xml = new \DOMDocument('1.0', 'UTF-8');
        $root = $xml->createElement('КоммерческаяИнформация');
        $root->setAttribute('ВерсияСхемы', '2.10');
        $xml->appendChild($root);

        foreach ($orders as $order) {
            $orderNode = $xml->createElement('Документ');
            $this->addElement($xml, $orderNode, 'Ид', $order->uuid);
            $this->addElement($xml, $orderNode, 'Номер', $order->number);
            $this->addElement($xml, $orderNode, 'Дата', $order->created_at->format('Y-m-d'));
            $this->addElement($xml, $orderNode, 'Сумма', number_format($order->total, 2, '.', ''));
            $this->addElement($xml, $orderNode, 'Валюта', 'USD');

            // Контрагент
            $client = $xml->createElement('Контрагенты');
            $agent = $xml->createElement('Контрагент');
            $this->addElement($xml, $agent, 'Наименование', $order->customer_name);
            $this->addElement($xml, $agent, 'Роль', 'Покупатель');
            $client->appendChild($agent);
            $orderNode->appendChild($client);

            // Товары
            $products = $xml->createElement('Товары');
            foreach ($order->items as $item) {
                $product = $xml->createElement('Товар');
                $this->addElement($xml, $product, 'Ид', $item->product->onec_guid);
                $this->addElement($xml, $product, 'Наименование', $item->product->name);
                $this->addElement($xml, $product, 'Количество', $item->quantity);
                $this->addElement($xml, $product, 'ЦенаЗаЕдиницу', number_format($item->price, 2, '.', ''));
                $this->addElement($xml, $product, 'Сумма', number_format($item->total, 2, '.', ''));
                $products->appendChild($product);
            }
            $orderNode->appendChild($products);
            $root->appendChild($orderNode);
        }

        return $xml->saveXML();
    }
}

תהליך היצירה שלב אחר שלב

  1. צור מופע של class SaleXmlGenerator { public function generate(Collection $orders): string { $xml = new \DOMDocument('1.0', 'UTF-8'); $root = $xml->createElement('КоммерческаяИнформация'); $root->setAttribute('ВерсияСхемы', '2.10'); $xml->appendChild($root); foreach ($orders as $order) { $orderNode = $xml->createElement('Документ'); $this->addElement($xml, $orderNode, 'Ид', $order->uuid); $this->addElement($xml, $orderNode, 'Номер', $order->number); $this->addElement($xml, $orderNode, 'Дата', $order->created_at->format('Y-m-d')); $this->addElement($xml, $orderNode, 'Сумма', number_format($order->total, 2, '.', '')); $this->addElement($xml, $orderNode, 'Валюта', 'USD'); // Контрагент $client = $xml->createElement('Контрагенты'); $agent = $xml->createElement('Контрагент'); $this->addElement($xml, $agent, 'Наименование', $order->customer_name); $this->addElement($xml, $agent, 'Роль', 'Покупатель'); $client->appendChild($agent); $orderNode->appendChild($client); // Товары $products = $xml->createElement('Товары'); foreach ($order->items as $item) { $product = $xml->createElement('Товар'); $this->addElement($xml, $product, 'Ид', $item->product->onec_guid); $this->addElement($xml, $product, 'Наименование', $item->product->name); $this->addElement($xml, $product, 'Количество', $item->quantity); $this->addElement($xml, $product, 'ЦенаЗаЕдиницу', number_format($item->price, 2, '.', '')); $this->addElement($xml, $product, 'Сумма', number_format($item->total, 2, '.', '')); $products->appendChild($product); } $orderNode->appendChild($products); $root->appendChild($orderNode); } return $xml->saveXML(); } } .
  2. העבר אוסף של הזמנות (עם מוצרים ולקוחות טעונים).
  3. קרא ל-SaleXmlGenerator – תקבל מחרוזת XML.
  4. אמת את ה-XML באמצעות generate().
  5. הגש את הקובץ בנקודת קצה HTTP ש-1C מבקש.

כיצד פועל אישור קבלה

לאחר טעינת ההזמנות, 1C שולח רשימה של מזהי GUID של מסמכים שעובדו בהצלחה. האתר מסמן אותם כ-DOMDocument::validate. זה מונע שידור חוזר ומספק היסטוריית סנכרון שקופה:

public function markAsSent(Request $request): Response
{
    $guids = explode("\n", $request->getContent());
    Order::whereIn('uuid', array_filter($guids))
        ->update(['sent_to_1c' => true, 'sent_to_1c_at' => now()]);
    return response('success');
}

כיצד סטטוסים מתעדכנים מ-1C

1C יכול להחזיר סטטוסי הזמנה מעודכנים (שולם, נשלח, בוטל). האתר מקבל אותם באמצעות בקשת POST ומעדכן את שדות ההזמנה:

public function processSaleResponse(string $xmlPath): void {
    $xml = simplexml_load_file($xmlPath);
    foreach ($xml->Документ as $doc) {
        $guid = (string) $doc->Ид;
        $status = (string) $doc->Статус;
        Order::where('uuid', $guid)->update([
            'status' => $this->mapOnecStatus($status),
            'onec_status' => $status,
            'status_updated_at' => now(),
        ]);
    }
}

private function mapOnecStatus(string $onecStatus): string {
    return match($onecStatus) {
        'Оплачен' => 'paid',
        'Передан на склад' => 'processing',
        'Отгружен' => 'shipped',
        'Отменён' => 'cancelled',
        default => 'unknown',
    };
}

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

השירות שלנו כולל את התוצרים הבאים:

  • פיתוח מחולל XML המותאם למבנה ההזמנות שלך
  • טיפול באישורי קבלה ועדכוני סטטוס
  • מנגנון התאמת מוצרים לפי SKU כאשר GUID חסר
  • בדיקות על מסד נתונים של 1C לבדיקות (מסופק על ידי הלקוח)
  • תיעוד מפורט המסביר את תהליך הייצוא וה-API
  • גישה לסביבת ארגז חול לבדיקות
  • הדרכה לצוות שלך (2 מפגשים)
  • שבועיים של תמיכה לאחר ההשקה

התמחור נקבע באופן אישי לפי מורכבות האינטגרציה. עלות פרויקט טיפוסית נעה בין 1.5–3 אלף דולר. חיסכון שנתי בהזנה ידנית יכול להגיע ל-4.5–6.5 אלף דולר.

מלכודות טיפוסיות

בעיות נפוצות: מזהי GUID ריקים של מוצרים (אם המוצר נוצר באתר), אי-התאמת קידוד (Windows-1251 לעומת UTF-8), וקשיים בבדיקות ללא מסד נתונים של 1C לבדיקות. אנו פותרים这些问题 באמצעות התאמת SKU, המרת קידוד וסיוע בהקמת סביבת בדיקות.

השוואה: CommerceML2 לעומת הזנה ידנית

קריטריון ייצוא CommerceML2 הזנה ידנית
זמן עיבוד 50 הזמנות 2 דקות 2–3 שעות
הסתברות שגיאה 0.1% 10%
עלות כלול באינטגרציה עד 4.5–6.5 אלף דולר/שנה חיסכון

ייצוא CommerceML2 מהיר פי 5 מהזנה ידנית ומפחית שגיאות ב-90%. ייצוא הזמנות במפתח פתוח – קבל ייעוץ הנדסי.

אימות ייצוא נכון

ראשית, ודא ש-sale.xml מכיל את כל ההזמנות עם סכומים ומזהי GUID נכונים. אנו יוצרים XML במצב בדיקה, טוענים אותו ל-1C ומשווים מספרי מסמכים. שנית, ודא שלאחר אישור הקבלה, סטטוס ההזמנה באתר משתנה ל"הועבר ל-1C." שלישית, עדכן סטטוס מ-1C ואשר שהאתר מקבל אותו.

לוח זמנים ועלות

פיתוח ייצוא הזמנות עם אישורי קבלה ועדכוני סטטוס אורך 8–14 ימי עסקים. הערכה מדויקת ניתנת לאחר ניתוח מערכת החשבונאות שלך.

כדי לדון בפרטים, השאר בקשה – ניצור איתך קשר תוך יום.