When placing an order on a 1C-Bitrix website, accountants often have to manually create UPD in 1C and send it via 1C-EDO. This takes hours and risks errors in requisites. We solve this in 2–4 weeks: we configure automatic transfer of orders from Bitrix to 1C, and from there to the counterparty via 1C-EDO. No double data entry.
1C-EDO is a built-in electronic document exchange service in 1C configurations (Accounting, Trade Management, ERP). When a company already uses 1C-EDO for internal workflow, the task of integration with a 1C-Bitrix website is formulated as: orders from Bitrix automatically enter 1C, and UPDs, invoices, and acts are created and sent via 1C-EDO without duplicate data entry.
According to our project data, automation reduced order processing time from 2 days to 35 minutes.
Interaction Scheme
Bitrix (order created/paid) → Standard exchange Bitrix→1C (CommerceML/REST) → 1C: realization/act created → 1C-EDO: document sent to counterparty via operator → 1C: signing status received from operator → 1C→Bitrix: document status updated in order Bitrix in this scheme is the order source. 1C is where accounting documents are created. 1C-EDO is the transport.
Configuring Bitrix ↔ 1C Exchange
Standard exchange works via bitrix:catalog and bitrix:sale.export over CommerceML 2.10. In 1C, it's connected via "Exchange with Site" in the configurator.
For automatic order transfer to 1C, we set up an export schedule: every 15–30 minutes or on event via \Bitrix\Main\EventManager. With fast REST API exchange in 1C, near real-time is possible: the OnSaleOrderPaid event in Bitrix triggers a POST request to the 1C REST service.
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderPaid', function (\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->isPaid()) { // Send order to 1C immediately (not waiting for cron) \Local\OneCIntegration\OrderSync::pushOrderToOnec($order->getId()); } } ); In 1C, the REST service (PublishedHTTPServices) receives the order and creates a realization document. Then 1C-EDO automatically (based on 1C settings) or on button click sends the UPD to the counterparty.
Reverse Flow: Statuses from 1C to Bitrix
When the counterparty signs the document in their EDO system, 1C receives confirmation via the operator. Then 1C can call a Bitrix webhook or pass the status at the next scheduled exchange.
// Endpoint in Bitrix to receive statuses from 1C // /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' // Write to order custom field $order = \Bitrix\Sale\Order::load($orderId); if ($order) { $props = $order->getPropertyCollection(); $prop = $props->getItemByOrderPropertyCode('EDO_STATUS'); if ($prop) { $prop->setValue($edoStatus); } $order->save(); // Notify manager if ($edoStatus === 'rejected') { \CEvent::Send('EDO_DOCUMENT_REJECTED', SITE_ID, [ 'ORDER_ID' => $orderId, 'REASON' => $data['reason'], ]); } } } How Integration of 1C-Bitrix with 1C-EDO Reduces Document Workflow Time
Automated exchange via 1C-EDO is 80 times faster than manual data entry. Before/after comparison from our practice:
| Metric | Before | After |
|---|---|---|
| Time from order to UPD sending | 1–2 days (manual) | 35 min (automatic) |
| Requisite errors (1C ↔ Bitrix mismatch) | ~12%/month | < 1% |
| Accountant busy with EDO (hours/day) | ~2 hours | ~15 minutes |
Why Standard CommerceML Exchange Needs Refinement
Case: Manufacturing Enterprise
Client: industrial equipment manufacturer. 1C UT 11.5 with 1C-EDO. Website on 1C-Bitrix Site Management for B2B dealer orders. Goal: dealer places order on site, UPD automatically created and sent via EDO; no manual document creation by accountant or manager.Issues:
- Standard CommerceML exchange had 30-minute delay and didn't transmit legal entity data (INN, KPP).
- 1C-EDO not set to automatic sending—required manual confirmation.
- Signing status not displayed in Bitrix.
Solutions:
- Extended CommerceML export via
OnBeforeSaleOrderExport—added legal entity fields to XML. - Configured automatic EDO rule in 1C: when creating a realization with a specific contract type—automatic sending.
- Developed reverse sync script: 1C calls Bitrix webhook every 15 minutes with statuses.
Mapping EDO Statuses to Bitrix Order Statuses
| 1C-EDO Status | Bitrix Order Status | Action |
|---|---|---|
| Sent | EDO_SENT | Notify manager |
| Delivered | EDO_DELIVERED | — |
| Signed by counterparty | EDO_SIGNED | Close deal in CRM |
| Rejected | EDO_REJECTED | Notify + task for manager |
| Annulled | EDO_ANNULLED | Mark order |
Considerations for Multiple EDO Operators
1C-EDO supports roaming between operators: a document sent through the operator serving the sender is delivered to the counterparty via their operator. In Bitrix code, this is transparent—routing logic is entirely on the 1C side.
What's Included in the Work
- Audit of current Bitrix ↔ 1C exchange scheme: CommerceML or REST
- Extension of export schema for EDO data (INN, KPP, document type)
- Configuration of auto-sending rules via 1C-EDO in 1C
- Reverse status synchronization: webhook or polling
- Display of EDO status in Bitrix order (custom field)
- Notifications for rejection or annulment
- Training for the accountant on the mechanism
Timeline: With an existing Bitrix-1C exchange, 2–4 weeks for the EDO part. If exchange needs to be built from scratch, add 2–3 weeks. We'll assess your project in 1 business day. Contact us for an audit of your exchange scheme. Order integration and receive a free consultation.
We have implemented over 50 such integrations in 7 years. Warranty: testing on real orders before launch.







