With a catalog of over 10,000 option combinations, standard trade offers SKU no longer suffice. The site slows down, adding a new option becomes problematic, and prices are calculated with errors. A typical case is a PC builder or kitchen configurator where parameters intersect with compatibility constraints. In such situations, a custom configurator on 1C-Bitrix is the only adequate solution. We have implemented over 30 such projects and know all the pitfalls. 1C-Bitrix official documentation recommends using trade offers only for simple combinations. The development cost is determined after analyzing your project complexity; contact us for a preliminary consultation.
When Standard Trade Offers Are Not Enough
Standard trade offers work for up to 4–5 parameters. With 6+ interdependent options or complex compatibility rules, the b_catalog_product_offer table becomes inefficient. A configurator with its own rule matrix solves this. In our projects, matrices reach 500,000 combinations — we know how to maintain this. Operational savings from caching optimization amount to up to 30%, which at an average turnover of 5 million rubles gives savings of up to 1.5 million rubles per year.
Data Storage: Infoblock or Custom Table?
The choice of storage method is critical for performance. Compare both options:
| Storage method | Number of combinations | Performance | Rule flexibility |
|---|---|---|---|
| Infoblock + trade offers | up to ~10,000 | Medium | Low |
| Custom compatibility table | from 10,000 to 1,000,000+ | High | High |
In practice, we combine: main data in the infoblock, compatibility rules in a separate table. This provides both speed and manageability. On a matrix of 100,000 combinations, a custom table with indexes performs 10 times faster than nested infoblock properties. This can reduce server hardware costs by 200,000–400,000 rubles per year.
Performance calculation example
With a matrix of 500,000 combinations, custom tables process a query in 2–3 ms, while nested properties take 50–70 ms. That's a 20–25 times difference.Technical Implementation
Compatibility Table in Action
Each step of the configurator is a set of options. Selection at step N dynamically limits options at step N+1. We use a simple SQL structure:
CREATE TABLE custom_configurator_rules ( id SERIAL PRIMARY KEY, product_id INT NOT NULL, param_key VARCHAR(100) NOT NULL, param_value VARCHAR(255) NOT NULL, depends_key VARCHAR(100) NOT NULL, depends_val VARCHAR(255) NOT NULL, available TINYINT DEFAULT 1 ); CREATE INDEX idx_rules_product ON custom_configurator_rules (product_id, param_key, param_value); When a user selects a parameter, an AJAX request is sent to /bitrix/services/main/ajax.php with action custom:configurator. The handler reads the rule table and returns available options for the next step and the current price.
Real-Time Price Calculation
Configuration price = base product price + markups for selected options. Markups are stored in a separate table:
CREATE TABLE custom_configurator_price_mod ( id SERIAL PRIMARY KEY, product_id INT NOT NULL, param_key VARCHAR(100) NOT NULL, param_value VARCHAR(255) NOT NULL, price_mod DECIMAL(12,2) NOT NULL, price_pct DECIMAL(5,2) DEFAULT 0 ); The handler sums markups, applies discounts via \Bitrix\Catalog\Discount\DiscountManager, and returns the total. The client sees how the price changes with each selection.
Integration with Cart and Orders
After the user completes the configuration, the product is added to the cart, and the JSON configuration is attached as a custom basket property:
\Bitrix\Sale\Basket::create(SITE_ID); $basketItem = $basket->createItem('catalog', $productId); $basketItem->setFields([ 'QUANTITY' => 1, 'PROPS' => [ ['NAME' => 'Configuration', 'CODE' => 'CONFIGURATION', 'VALUE' => json_encode($config)], ], ]); The configuration is displayed in the admin order card and in the confirmation email via the order_new template. Integration with 1C via CommerceML for stock and price synchronization is available on request.
Rule Management via Admin Panel
For content managers, we develop an interface in /bitrix/admin/ using standard CAdminList and CAdminForm classes. This allows adding new options, compatibility rules, and price markups without writing code. All changes are logged and revertible.
Process for adding a new option:
- In the admin panel, select the product and the "Configurator Parameters" section.
- Click "Add Step" and specify the name (e.g., "Case Color").
- List the option values and markups for each.
- In the "Compatibility Rules" section, link the new option to existing steps.
- Save — changes take effect immediately without cache reload thanks to agents.
Process and Timeline
Stages and Timelines
| Stage | What we do | Timeline |
|---|---|---|
| Design | Parameter analysis, DB schema, UI prototype | 3–4 days |
| Backend | Tables, handlers, price calculation, stock | 4–6 days |
| Frontend | Configurator UI, AJAX, price updates | 3–5 days |
| Cart and orders | Configuration transfer, display in order | 2–3 days |
| Admin interface | CRUD for rules and price modifiers | 2–3 days |
| Testing | All combinations, edge cases | 2–3 days |
Total: from 2.5 to 4 weeks depending on the number of parameters and matrix complexity. We provide an accurate estimate after analyzing your catalog. The multi-step configuration process with compatibility checks is implemented at each stage.
What's Included in Deliverables
- Project documentation: DB schema, API description, use cases.
- Configured access for content managers (roles in Bitrix).
- Manual for managing rules and price modifiers.
- Post-release support: 2 weeks of free consultations.
- Code warranty: 6 months from the date of signing the acceptance certificate.
Common Mistakes and How to Avoid Them
- Lack of caching. Without cache, AJAX requests for each step load the database — the site slows down even with 50 concurrent users.
- Storing rules in infoblock properties. With 50,000 combinations, queries to
b_iblock_element_propertybecome unbearably slow. - Ignoring stock. If you don't check availability of each component, the configurator will sell a configuration that cannot be assembled.
- Flat JSON in cart without verification. If the price changes, an attacker could tamper with parameters, so we recalculate the cost server-side.
A configurator is ideal for e-commerce stores with customizable products. Get a preliminary assessment of your project — contact us. Request a consultation — we will evaluate your project and propose an optimal plan.

