Setting up Bitrix24 and 1C deal exchange

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Configuring Deal Exchange between Bitrix24 and 1C

A deal in Bitrix24 CRM is a sales pipeline and customer communication. In 1C it is a customer order, invoice, and sales. Deal exchange bridges the gap: the manager leads the customer in Bitrix24, and the accountant prepares documents in 1C without manual data transfer.

Typical scenario

  1. Manager creates a deal in Bitrix24, adds products from the catalog (CRM products).
  2. When transitioning to "Agreed" stage — the deal automatically goes to 1C as a customer order.
  3. In 1C accountant creates an invoice, posts the sale.
  4. Invoice and payment status return to Bitrix24 — manager sees if the deal is paid.

What is transmitted in a deal

From Bitrix24 to 1C:

Bitrix24 field 1C entity
TITLE Order purpose / comment
CONTACT_ID → contact data Individual counterparty
COMPANY_ID → company data Organization counterparty
OPPORTUNITY Order amount
CURRENCY_ID Currency
Deal products (crm.deal.productrows.get) Order composition (nomenclature)
ASSIGNED_BY_ID Responsible manager

From 1C to Bitrix24:

  • Invoice number and PDF link
  • Payment status (paid/partial/unpaid)
  • Shipment date (actual)
  • Tracking number (if delivery integration exists)

Implementation: Bitrix24 → 1C

Exchange is initiated by an event in Bitrix24. Two approaches:

Via webhook on stage change. In outgoing webhooks settings, subscribe to ONCRMDEALSTAGECHAGE event. When deal transitions to the desired stage — POST to handler.

Via business process. A BP template in Bitrix24 is configured for the "In work" stage. An "REST" action in BP sends data to 1C HTTP service. Better for complex conditions (e.g., only if amount > N rubles).

Getting full deal data:

crm.deal.get → crm.deal.productrows.get → crm.contact.get / crm.company.get

Transmission to 1C — via HTTP POST to configuration's HTTP service. In 1C, a "Customer Order" is created with composition from deal products. Nomenclature is searched by XML_ID (if CRM products are synchronized with 1C) or by product code.

Product mapping

Products in Bitrix24 CRM catalog and 1C nomenclature are two different bases. Synchronization options:

  • Simple mapping by product code. When transmitting deal, search for nomenclature in 1C by product code from PROPERTY_ARTNUMBER field in CRM product.
  • Synchronized catalog. 1C nomenclature is exported to Bitrix24 CRM catalog via REST API crm.product.add. CRM product XML_ID = 1C nomenclature ID. When transmitting deal — direct mapping by XML_ID.

The second option is more reliable but requires catalog synchronization setup.

Implementation: 1C → Bitrix24

When order status changes or invoice is created in 1C — handler sends data to Bitrix24:

// In 1C when posting invoice
RequestData = New Map;
RequestData.Insert("DEAL_ID", IDDealBitrix24);
RequestData.Insert("UF_CRM_INVOICE_NUMBER", InvoiceNumber);
RequestData.Insert("UF_CRM_INVOICE_URL", URLPDFInvoice);
// HTTP request to crm.deal.update

Payment status — via crm.deal.update on UF_CRM_PAYMENT_STATUS field (user field, created beforehand).

Invoice from 1C to Bitrix24

If PDF invoice is needed in deal card, 1C:

  1. Generates PDF invoice
  2. Uploads to Bitrix.Disk via disk.file.uploadbyurl or direct upload
  3. Attaches to deal via crm.deal.update or adds to comment

Duplicate control

In bidirectional exchange, it's important to maintain cross-references:

  • In Bitrix24 deal — user field UF_CRM_1C_ORDER_ID with 1C order ID
  • In 1C order — property "Bitrix24 deal ID"

This allows updating existing order on resynchronization instead of creating a new one.