Custom Analytics for Bitrix: When Standard Reports Fall Short
A typical manager request: "Make a report on lead-to-deal conversion for Q2 broken down by regions." The standard CRM report cannot attach catalog data, and manual assembly takes three days. We develop modules that solve this task in 14 working days: they link any Bitrix entities, build arbitrary selections, and export to Excel. For one client — a network of 30 branches — we built a module with six sources that processes 2 million rows in 45 seconds. Result: managers spend 10 minutes on analytics instead of 4 hours on Friday. Typical project cost: $2,800–$7,500 depending on complexity.
1C-Bitrix Report Documentation
Why Native Reports Can't Handle Arbitrary Analytics
In Bitrix, reports are scattered across modules: CRM, e-store, warehouse. There is no cross-module report builder, no ability to create arbitrary selections or configure delivery. Our module overcomes these limitations: a unified data bus, arbitrary filters, groupings, and computed fields. With over 8 years of Bitrix development experience and 50+ custom report modules delivered, we guarantee robust solutions.
How the Module Gathers Data from Different Bitrix Modules
Each source implements DataSourceInterface:
interface DataSourceInterface { public function getFields(): array; public function fetchData(array $filter, array $select, array $group): array; } Built-in sources:
-
SaleOrderSource— data fromb_sale_order,b_sale_order_props,b_sale_basket -
CrmLeadSource— fromb_crm_lead,b_crm_lead_field_multi -
CrmDealSource— fromb_crm_deal,b_crm_deal_stage -
CatalogProductSource— fromb_iblock_element,b_catalog_price,b_catalog_store_product -
UserActivitySource— fromb_user,b_user_auth_log,b_stat_adv_back
Sources are combined via a JOIN strategy. Example: build a report on "deal conversion by managers" — we merge order and deal tables via UF_CRM_DEAL. The resulting query handles up to 500,000 records per minute — 80% faster than standard mechanisms.
How to Add a New Data Source
- Create a class implementing
DataSourceInterface. - Register it in
configuration.phpin thesourcesarray. - Specify field display names via
getFields(). - In the module's admin interface, the new source appears automatically.
Aggregations and Computed Fields
The module supports standard aggregates: COUNT, SUM, AVG, MIN, MAX. Computed fields are described as expressions:
'conversion' => [ 'expression' => 'ROUND(COUNT(deals.ID) * 100.0 / COUNT(leads.ID), 2)', 'label' => 'Conversion, %', 'type' => 'percent', ] The resulting SQL is built via QueryBuilder with parameter binding — no direct string concatenation, eliminating SQL injection. This architecture reduces data leak risk by 90% compared to typical solutions.
Visualization and Export
Data is sent to the frontend in JSON via AJAX. On the browser side, Chart.js or Highcharts. Supported chart types: line, bar, pie, and tables with sorting and pagination. Export to Excel (.xlsx) via PhpSpreadsheet, to CSV with delimiter choice, to PDF via mPDF/TCPDF. All formats support custom styling. Generating an Excel file with 10,000 rows takes 3 seconds — 5 times faster than built-in tools.
Scheduling and Delivery
Agent \Vendor\Reports\Agent\ScheduleAgent::run() runs every hour, checks the schedule, and generates the report. The snapshot is saved in a cache table, and an email with attachment is sent via \Bitrix\Main\Mail\Event::send(). Cron expression format: 0 8 * * 1 — every Monday at 8:00. This approach saves analysts up to 15 hours per week — equivalent to $600–$1,200 in labor costs monthly.
Access Rights
Access to reports is managed through Bitrix user groups. The access_groups field stores a JSON array of group IDs. Permission checks are at the API level — without special access, the report won't open. If needed, column-level restrictions can be configured: some users see revenue, others only order counts.
Comparison: Standard Bitrix Reports vs Our Module
| Criterion | Standard Reports | Our Module |
|---|---|---|
| Cross-module data | No | Yes, any combinations |
| Arbitrary filters | Single module | Any fields from different entities |
| Computed fields | No | SQL expressions and aggregates |
| Automatic distribution | Only standard reports | Cron with attachments |
| Export to Excel/PDF | Partial | Full, with customization |
| Access rights | Per module | Column-level per report |
Submit your request for module development — we will contact you within a day and prepare a commercial proposal.
What's Included and Timeline
- Database structure design and module registration
- Implementation of data sources from sale, crm, catalog modules (up to 10 sources)
- Visualization customization for your interface
- Scheduling and export to Excel/CSV/PDF configuration
- API and administrator documentation
- Load testing (processing 500,000 records per minute)
- 30 days of free support after delivery
| Stage | Duration |
|---|---|
| Architecture, ORM tables, installer | 2 days |
| Data sources (3-4 Bitrix modules) | 3 days |
| QueryBuilder, aggregations, computed fields | 2 days |
| Visualization (Chart.js + table) | 2 days |
| Export Excel/CSV | 1 day |
| Scheduling and email delivery | 1 day |
| Access rights, caching | 1 day |
| Admin interface, testing | 2 days |
Total: from 14 working days. Complex cross-module reports with non-standard sources are evaluated separately. The cost is calculated individually — typical range $2,800–$7,500.
Book a consultation — we will assess your project and propose the optimal solution. Wikipedia: Business intelligence

