Custom Bitrix24 List Views: Map, Calendar, and Gantt Integration

Custom Bitrix24 List Views: Map, Calendar, and Gantt Integration Standard Bitrix24 views—table and kanban—don't always display data in the needed dimension. For example, a sales manager with 5,000 deals needs to see them on a map for planning meetings. Or a project manager requires a Gantt chart

Our competencies:

Frequently Asked Questions

Custom Bitrix24 List Views: Map, Calendar, and Gantt Integration

Standard Bitrix24 views—table and kanban—don't always display data in the needed dimension. For example, a sales manager with 5,000 deals needs to see them on a map for planning meetings. Or a project manager requires a Gantt chart for tasks with dependencies. Bitrix24 provides the placement mechanism for embedding custom interfaces, but implementation requires understanding of the Bitrix24 REST API, batch queries, and client-side caching. We will develop a custom view that solves your specific problem, considering data volumes and business logic.

Why Standard Views Don't Fit

Tables and kanbans are not optimized for geographic data, time scales, or complex dependencies. A deal map speeds up finding nearby clients, a calendar enables drag-and-drop for dates, and Gantt visualizes the project's critical path. In our practice, a project for a chain of car dealers: 3,000 active deals on a map grouped by cities. We used Leaflet with MarkerCluster, batch requests via BX24.callBatch loaded data in 4 seconds, geocoding via Yandex.Geocoder with caching. Result: managers save 2 hours per day, operational costs reduced by 40%. Payback for such implementation is less than six months. Batch requests are 50 times faster than sequential REST requests. Typical implementation cost starts at $3,000 and can be recovered within 6 months through efficiency gains.

How to Embed a Custom View via Placement

Placement is the primary method to integrate REST applications into the Bitrix24 interface. For CRM lists, the following points are available: CRM_DEAL_LIST_TOOLBAR, CRM_ANALYTICS_TOOLBAR, and separate sections via LEFT_MENU. The application loads in an iframe, authorizes via BX24.init(), and obtains context. Data is requested via REST: crm.deal.list, crm.item.list, tasks.task.list.

Three Typical Custom Views

Map. Deals with addresses are displayed as markers on Yandex.Maps or Leaflet. Click opens the card via BX24.openPath(). REST request with fields ID, TITLE, UF_CRM_ADDRESS, STAGE_ID, OPPORTUNITY. Geocoding is done on the backend with caching.

Calendar. Items with dates (deadlines, events) in monthly/weekly format. FullCalendar library integrates in 1-2 days. Drag-and-drop for changing dates triggers crm.deal.update.

Gantt Chart. Tasks with dependencies from DATE_START to DATE_END. DHTMLX Gantt (paid, full-featured) or Frappe Gantt (open source, basic). Data from tasks.task.list or smart process.

How to Solve the Large List Problem

The REST API limits output to 50 records per request. For hundreds or thousands of items, use pagination via batch requests:

Batch request code example
// Get total from the first request BX24.callMethod('crm.deal.list', { select: ['ID', 'TITLE', 'UF_CRM_ADDRESS'], filter: {'STAGE_SEMANTIC_ID': 'P'} }, function(result) { var total = result.total(); var pages = Math.ceil(total / 50); // Form a batch of parallel requests var batch = {}; for (var i = 0; i < pages; i++) { batch['page_' + i] = ['crm.deal.list', { select: ['ID', 'TITLE', 'UF_CRM_ADDRESS'], filter: {'STAGE_SEMANTIC_ID': 'P'}, start: i * 50 }]; } BX24.callBatch(batch, renderAll); }); 

Up to 50 commands in one batch; for 5,000+ items, process in sequential batches. In practice, 2,500 deals load in 3–5 seconds.

Filtering and Synchronization with the Main Filter

Two approaches:

  • Custom filter. Configuration inside the application – simpler, but the user sees two filters.
  • Context passing. Via BX24.placement.info() you get the base context. For full synchronization – a "Show on map" button in toolbar-placement reads the page's GET parameters (encoded filter) and applies them. Unified UX, but more complex.

Client-Side Caching

For frequently used views (territory map, project Gantt), we apply IndexedDB:

  1. First open – full data retrieval via REST, save to IndexedDB with timestamp.
  2. Subsequent – render from cache, background request for updates.
  3. Invalidation – by timer (every 5 minutes) or via WebSocket (BX24 Push).
// Pseudocode: check cache if (cacheValid() && !forced) { renderFromCache(); } else { fetchDataAndCache(); } 

Gantt Library Comparison

Feature comparison
Library License Features Integration Complexity
DHTMLX Gantt Paid Dependencies, critical paths, grouping Medium
Frappe Gantt Open Source Basic chart without dependencies Low

What's Included in the Work

  • Analysis of business processes and selection of the optimal view.
  • Development of a REST application with placement.
  • Integration of visualization library (Leaflet, FullCalendar, DHTMLX).
  • Implementation of batch loading and caching.
  • Testing on real volumes.
  • Documentation and user manual.
  • Warranty support after delivery.

Step-by-Step Implementation of a Custom Map

  1. Create a REST application with placement CRM_DEAL_LIST_TOOLBAR.
  2. Set up iframe and authorization via BX24.init().
  3. Retrieve data via crm.deal.list with batch (code above).
  4. Render markers with clustering.
  5. Implement caching in IndexedDB.
  6. Add synchronization with deal filter.

Effort Estimation

View Complexity Timeline
Table with custom columns Low 2–3 days
Calendar (FullCalendar) Medium 4–5 days
Map with markers and clustering Medium 5–7 days
Gantt chart with dependencies High 7–10 days
Dashboard with charts (Chart.js) Medium 4–6 days

The main risk is performance with large data volumes. We prototype on actual volume: if your CRM has 20,000 deals, the view must handle 20,000 deals. Contact us to evaluate your project – we'll choose the best solution and propose timelines. Get a consultation for your scenario. Over 5 years of experience, 50+ implemented views. For more details, refer to the Bitrix24 Placement Documentation.