Skip to content
N1
CRM / Bitrix24 · 1C · used cars

A "Used cars" CRM flow in one quarter

Client: Automotive marketplace, NDA Category: CRM / Bitrix24 Stack: PHP 8.3, Bitrix24 D7, smart processes, 1C (incoming JSON), library-free XLSX (ZipArchive + DOM), cron Timeline: about 3 months, in stages
Problem

Used cars were sold in the same CRM as new ones, but without their own stock, selection or documents: the manager checked availability and price by hand, filled out the sales form on paper, and learned about price drops by chance.

Constraints

Stock arrives from 1C as full snapshots every ~30 minutes, and 1C changes prices without deal events; the new-car pipeline must not be affected — the two lines share dictionaries and rejection reasons.

What I did
  • Stock intake from 1C into a smart process: upsert by VIN and 1C id, make and model dictionaries, archiving of cars missing from the snapshot
  • Used-car selection right in the deal card, contract total recalculation and an "Update MSRP" button
  • Generating a "runner" sign-off sheet in XLSX from deal data using the business's template — no third-party libraries
  • A price-drop detector inside the stock sync: an activity for the manager and a daily reminder until they respond
  • A deal card with 11 sections and 66 fields, and rejection reasons narrowed to the pipeline
Architecture
1C: stock snapshot → "Stock" smart process → Selection in the deal → Contract total and XLSX form → Price-drop activity
Result

The flow is built and goes live in production in September 2026: the sync handles about 690 cars per snapshot and 38 batches a day, and price-drop notifications already run on real warehouse data.

What can be reused
Upsert receiver for 1C stock with archiving Filling an XLSX template without libraries Price-change detector inside the sync