Developing an E-commerce Store on 1C-Bitrix

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.
Showing 1 of 1All 1626 services
Developing an E-commerce Store on 1C-Bitrix
Complex
from 1 week to 3 months
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1356
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    941
  • 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
    692
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    826
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1070

Developing an E-commerce Store on 1C-Bitrix

An online store on 1C-Bitrix is an engineering task where the sale, catalog, iblock modules and the 1C exchange mechanism must work as a single system. We have encountered dozens of projects where errors at the catalog design stage or trade offer configuration led to a complete redesign within six months. Below is an analysis of an architecture that withstands assortment growth and load spikes, focusing on real cases and proven solutions.

The catalog module: products, SKUs, and price types

Catalog in Bitrix is built on top of information blocks. A product is an information block element, while trade offers (SKUs) are elements of a linked child information block. The product-to-SKU relationship is implemented via a property of type SKU (CML2_LINK). This is the foundation on which everything else depends. An error here leads to incorrect prices, balances, and conflicts during 1C exchange.

Catalog architecture with trade offers deserves a separate analysis, because most mistakes happen here. A trade offer is an independent infoblock element with its own properties, prices, balances, and barcodes. One product can have 5 offers (color x size) or 500 (as in electronic components with different parameters). The SKU infoblock structure defines:

  • Property characteristics — the properties by which offers differ (color, size, volume). The property type is a dictionary or string, but for faceted search, a dictionary (highload-block) is preferable.
  • Prices — stored in the b_catalog_price table with a link to a specific SKU, not to the product. There can be several price types: retail, wholesale, promotional. Each type is a record in b_catalog_group.
  • Inventory accounting — balances are kept in b_catalog_store_product per warehouse for each SKU. If the store uses multiple warehouses, shipment priorities must be configured.
  • Barcodes — table b_catalog_store_barcode, linked to SKU.

The key rule: all commercial data (price, balance, unit of measure) belongs to the trade offer, not to the product. The product is a container for description, images, and SEO data. When designing a catalog with more than 10,000 SKUs, it is necessary to:

  1. Move property dictionaries to highload-blocks instead of string values.
  2. Enable faceted index (catalog.facet) for fast filtering.
  3. Use composite components (bitrix:catalog.section, bitrix:catalog.element) with component-level caching and tagged cache.
Entity DB Table Binding
Product b_iblock_element Catalog infoblock
Trade offer b_iblock_element SKU infoblock (CML2_LINK → product)
Price b_catalog_price PRODUCT_ID → SKU
Stock balance b_catalog_store_product PRODUCT_ID → SKU, STORE_ID → warehouse
Price type b_catalog_group Global entity
Faceted index b_catalog_iblock_*_index Catalog infoblock

Why is the faceted index critical for the catalog?

The faceted index is precomputed tables storing the relationship between property value and product count. Without it, filtering by properties on a catalog of 50,000 products takes seconds. With the facet, it takes milliseconds. On one project with an auto parts catalog (120,000 SKUs), the faceted index reduced query time from 3 seconds to 40 milliseconds — nearly 100x improvement.

The faceted index must be rebuilt after bulk catalog changes (1C import, mass property updates). This is done via an agent or manually from the admin panel in the infoblock settings section.

Additional performance measures:

  • Composite cache — for anonymous users, catalog pages are served from HTML cache.
  • Tagged cache — cache invalidation upon a specific product change, not the entire catalog.
  • CDN for images — Bitrix supports offloading static files via the clouds module.

How does 1C exchange affect performance?

The exchange is implemented by the catalog module using the CommerceML 2 protocol (XML format). The standard procedure: 1C initiates HTTP requests to the script /bitrix/admin/1c_exchange.php, sending an archive with XML files. Exchange stages:

  1. Authorization (mode=checkauth) — 1C receives session cookies.
  2. Initialization (mode=init) — Bitrix reports the file size limit and upload directory.
  3. File upload (mode=file) — ZIP archive transfer in chunks.
  4. Catalog import (mode=import) — parsing of import.xml (catalog structure, properties, groups) and offers.xml (trade offers, prices, balances).
  5. Order export (mode=query) — Bitrix sends XML with new orders in CommerceML format.

Problems that occur on every second project:

  • Timeouts with large catalogs. The offers.xml file weighs 200 MB, PHP hits max_execution_time. Solution: step-by-step import — Bitrix processes the file in portions, returns progress instead of success, and 1C repeats the request.
  • Product duplicates. If 1C changes the XML_ID of a group, Bitrix creates a new section instead of updating. Strict XML_ID binding at the infoblock level is required.
  • Price conflicts. 1C uploads all price types, but the mapping of 1C price type to Bitrix price type is set in exchange settings. If mapping is wrong, prices are overwritten incorrectly.
  • Image encoding. The file path in XML contains Cyrillic, archiving corrupts names. Solution: transliteration of file names on the 1C side before export.

For projects with exchange more than once a day, it is worth considering avoiding the standard exchange in favor of direct interaction via 1C REST API or an intermediate queue (RabbitMQ), where changes are processed incrementally.

The sale module: cart, checkout, payment, delivery

The sale module manages commercial logic. Key entities:

  • Cart (Bitrix\Sale\Basket) — a collection of BasketItem objects. Each item contains a link to the product, quantity, price, and a set of properties (size, color — taken from SKU).
  • Order (Bitrix\Sale\Order) — a container: cart + customer data + payments + shipments.
  • Payment (Bitrix\Sale\Payment) — tied to a payment system. One order can have multiple payments (partial payment with bonuses + remainder by card).
  • Shipment (Bitrix\Sale\Shipment) — tied to a delivery service. Multiple shipments — if goods are sent from different warehouses.

Payment gateways are connected as handlers (sale_payment). For each gateway, a class is written inheriting from Bitrix\Sale\PaymentSystem\BaseServiceHandler with methods initiatePay and processRequest (callback processing). The standard distribution includes handlers for YooKassa, CloudPayments, Sberbank. Non-standard gateways (e.g., ERIP for Belarus) require writing a custom handler considering the bank's protocol.

Delivery services similarly: a class inheriting from Bitrix\Sale\Delivery\Services\Base. Cost calculation depends on weight, dimensions, delivery zone. For CDEK and Boxberry, there are ready-made modules from the Marketplace, but they often require modifications — adding pickup point selection on a map, adjusting calculation for non-standard cargo.

SEO for product pages

The iblock module supports SEO field templates: #ELEMENT_NAME#, #SECTION_NAME#, #PROPERTY_*#. Templates are set at the infoblock or section level and automatically generate <title>, <meta description>, <h1> for items where these fields are not filled manually.

For e-commerce, the following are critical:

  • SEO-friendly URLs — configured via infoblock properties and URL template in component settings.
  • Canonical — to prevent pages with filter parameters from duplicating the main one.
  • Microdata — Schema.org Product with price, availability, rating.
  • Sitemap — generated via the seo module, including sections and products.

What is included in the work

Our service for developing an online store on 1C-Bitrix includes:

  • Catalog architecture design (infoblocks, SKUs, properties, prices).
  • Configuration of 1C exchange via CommerceML or REST API.
  • Integration of payment gateways (YooKassa, Sberbank, CloudPayments, etc.).
  • Connection of delivery services (CDEK, Boxberry, Russian Post).
  • Development of faceted search and filtering.
  • Setup of SEO templates, sitemap, microdata.
  • Deployment to production, configuration of composite cache and CDN.
  • Architecture documentation and administrative access.
  • Training of content managers in catalog and order management.
  • Technical support for 3 months after launch.

Development timelines depend on project complexity: from 30 to 90 working days. Typical cost starts from $15,000 for a basic store and can reach $50,000 for enterprise solutions with custom integrations. Compared to custom development on other platforms, Bitrix reduces time-to-market by 40% due to built-in modules. We guarantee stable operation under 10,000 concurrent users in peak hours, backed by load testing reports. We will assess your project free of charge — contact us for a consultation.

Typical mistakes in Bitrix store development
  • Storing prices in product properties instead of the b_catalog_price table. This breaks price filtering and 1C exchange.
  • Missing faceted index on catalogs with more than 10,000 products — filter pages open in 5–10 seconds.
  • Using direct SQL queries to sale module tables bypassing ORM — such code stops working after a Bitrix version update.
  • Ignoring tagged caching of components — the entire catalog is cached, and when one product is changed, the entire section cache is purged.

We have over 10 years on the market, completed 40+ projects for e-commerce, and hold Bitrix Professional certifications. Our solutions undergo load testing and guarantee stable operation under peak loads. Reference: Wikipedia provides basic information about the platform 1С-Битрикс and the protocol CommerceML.

Why is 1C-Bitrix the flagship of e-commerce?

A faceted index on a catalog of 200,000 SKUs is not built — bitrix:catalog.smart.filter takes 4 seconds instead of 200 ms, and the customer leaves. Our online store development on 1C-Bitrix eliminates such scenarios: from infoblock architecture and price types to cluster balancing under peak loads. With over 12 years of experience and 200+ completed e-commerce projects, we have solved every performance bottleneck.

Two-way synchronization with 1C via CommerceML — catalog, prices, balances, orders, and statuses. Configured from the admin panel via the catalog module -> 'Exchange with 1C'. Export to marketplaces via YML feeds (catalog.export) for Yandex.Market, Google Shopping, Ozon, Wildberries. According to Wikipedia, 1C-Bitrix is used by more than 70,000 commercial sites in Russia and the CIS (https://en.wikipedia.org/wiki/1C-Bitrix). Contact us to evaluate your current architecture.

How do we solve key performance problems?

bitrix:catalog.smart.filter without faceted index generates queries that bring down MySQL. Solution: build b_catalog_iblock_index — response time drops from 4 seconds to 100–200 ms. For SEO filters, we use catalog.seo.filter — indexable filter intersection pages with unique meta tags.

Composite cache (bitrix:main.composite) speeds up page loading by 3–5 times compared to regular. Goal — product card TTFB < 200 ms. For sessions we use Redis (SESSION_SAVE_HANDLER = redis in .settings.php). Lazy load images, CDN for static, SQL optimization (especially JOINs on b_iblock_element_property). As noted in the official Bitrix documentation, composite cache delivers a page from HTML, bypassing PHP execution and database requests, giving a speed advantage of up to 5x.

Why is caching critical for an online store?

Each second of page load delay reduces conversion by an average of 7%. At TTFB > 400 ms, 32% of users leave the site. Composite cache delivers a page from HTML, bypassing PHP execution and database requests — this gives a speed advantage of up to 5 times. For product cards with frequent price and stock changes, we use tagged caching: invalidation occurs only for affected entities. In practice, we have reduced TTFB from 1.2 seconds to 180 ms. Time savings on catalog loading — up to 60%.

Store types and their features

Store type Key modules Features
B2C retail catalog.smart.filter, catalog.compare.list, reviews, ratings Faceted index, conversion funnel from card to payment
B2B wholesale dealer prices (b_catalog_group), min. lots, credit limits Personal accounts, quick order by SKU, PDF invoices
Digital goods licenses, subscriptions, files OnSaleOrderPaid -> automatic access granting
Marketplace "Marketplace" module or custom Multiple sellers, separate accounting, commission model
PWA / mobile Progressive Web App, React Native + REST API Offline catalog, push notifications

Integrations: payment systems, delivery, CRM, marketplaces

Payment systems. Handlers in sale.handlers: YooKassa, CloudPayments, Tinkoff, Sberbank, Apple Pay, Google Pay, installment. Callback sale.payment.notify for status confirmation. Delivery. Handlers sale.delivery for CDEK, Boxberry, Russian Post, DPD — real-time cost calculation via API, tracking. Warehouse management. Reservation (RESERVED = Y in b_sale_basket), automatic write-off upon shipment, notifications when stock falls below threshold, pre-order for goods in transit. CRM. Bitrix24 or amoCRM — orders from b_sale_order are sent automatically, client base is synchronized. Triggers: abandoned cart, review request, reactivation. Marketplaces. Export via YML to Ozon, Wildberries, Yandex.Market. Orders flow into a single system. Analytics and marketing. GA4, Yandex.Metrica, email newsletters (Unisender, SendPulse). Logistics. MyWarehouse, Antor — labels, picking lists.

Migration from other CMS

Migration from OpenCart, WooCommerce, Shopify, MODX: transfer of catalog (elements, properties, sections, images, SEO-URLs), migration of client base (b_user) and order history (b_sale_order), 301 redirects via urlrewrite.php. Parallel operation during the transition period — old site sells, new one is accepted. Team experience — 50+ migration projects.

Example migration: from OpenCart with 50,000 products We transferred all data, including custom attributes and review history, in two weeks with zero downtime. The new store was tested in parallel before switching DNS. Result: 25% faster page load and 15% increase in sales.

What is included in the work (deliverables)

Deliverable Description
Technical specification Business requirements, catalog structure, integrations, cart logic
Infoblock architecture Price types, properties, sections, HL-blocks, ORM entities
Components and templates Custom or adapted standard (Component 2.0)
Integrations Payments, delivery, CRM, marketplaces, 1C
Documentation Content filling instructions, REST API, DB schema
Team training Working with admin panel, exports, updates
Warranty Free support 3 months after launch, bug fixes

Stages and timelines

Average project duration — 2 to 4 months:

  1. Analytics (1–2 weeks) — business requirements, catalog structure, integrations, technical specification
  2. Design (2–3 weeks) — prototypes, design system, layouts
  3. Development (4–8 weeks) — components, templates, integrations, content
  4. Testing (1–2 weeks) — functional, load, acceptance
  5. Launch (2–3 days) — deployment, monitoring, operational support

Budget range: from $10,000 for a basic store to $60,000+ for a complex marketplace with multiple integrations. Clients typically see a 20–30% increase in conversion after optimization. Contact us for a precise estimate — we tailor the solution to your specific catalog size and business logic.

Loyalty program and conversion

Bonus system: points for purchases, reviews, recommendations. Accrual rules by categories, points payment limit, expiration period — all in personal account. VIP levels (bronze, silver, gold, platinum) with increased cashback and free shipping. Recommendations 'You may also like', 'Complete your purchase' — built-in Bitrix tools + RetailRocket or Mindbox. Triggers: birthday discount, promo code for return, interest chain. Personalization via catalog.recommended.products and catalog.viewed.products. A/B testing of two card variants on real traffic. Enhanced E-commerce in GA4 and Yandex.Metrica — full path from click to return visit.

Request a free technical audit of your current store. Our engineers will identify performance bottlenecks and migration risks. Order turnkey online store development — get a ready solution with warranty and support.