Price list generation in Bitrix: turnkey product export setup

Manual preparation of price lists takes time and leads to errors in prices and stock. We set up product export to Bitrix on a turnkey basis: we generate files in the required formats and on your schedule. Our team handles the entire cycle — from audit to support — so you receive up-to-date price lists without extra effort.

Our competencies:

Frequently Asked Questions

Imagine: a wholesaler requests a price list with SKUs, warehouse stock, and photos in XLSX format, while the standard Bitrix export produces only CSV with ID, name, and price. You have to edit it manually — you lose hours, and errors multiply.

Writing an export from scratch takes a long time, and standard tools do not cover B2B specifics: different price types for wholesalers and retail, conditional formatting, automatic daily generation.

Turnkey setup of product export to price lists in 1C-Bitrix lets you solve this task without programming. Time savings — up to 20 hours per month, and maintenance costs decrease by 30% through automation.

Over 5+ years, we have configured exports for 50+ projects — from simple CSV to complex XLSX with macros. I will explain how we do it turnkey and which solutions really save time.

Typical situation: a manager spends every Friday manually creating a price list from an Excel export. The result is outdated prices and incorrect stock.

Automatic export on the Bitrix side solves the problem: you set the schedule, formats, and access — and clients receive up-to-date files without your involvement. Setup takes from two days, and time savings reach up to 20 hours per month.

Standard export profiles: what the out-of-the-box version provides

Module catalog out of the box offers several profiles: Store → Settings → Catalog export. Each profile is a PHP file in /bitrix/modules/catalog/load/.

  • CSV (cat_o_csv.php) — export with configurable delimiter, fields, and encoding. Suitable for Excel, Google Sheets, 1C.
  • Yandex.Market (YML) (yandex_run.php) — XML in YML format. Formally for Yandex.Market, but a universal product feed.
  • CommerceML — XML for exchange with 1C, a heavy format, not for price lists. Wikipedia.

Profile setup: you select the information block, price type, properties, and section filter. The result is a file at a URL or on disk.

Why is standard CSV not enough?

Standard CSV provides a basic set: ID, name, price, section. A real price list needs SKU, brand, warehouse stock, and photo links. Each field requires a separate customization. Critical for B2B: different customer groups see different prices. One profile = one price type.

For three groups — three profiles. We choose encoding based on the client's system: Windows-1251 for 1C, UTF-8 for the rest.

Standard export does not output warehouse stock — you need a custom handler with a call to CCatalogStoreProduct::GetList(). This increases the data volume, but without it the price list does not reflect actual availability.

How we set up custom export for your tasks

For non-standard requirements, we create a PHP file in /bitrix/php_interface/include/catalog_export/ with two functions: profile settings and export. Typical customizations:

  • Excel format (XLSX). Standard export does not generate XLSX. We connect PhpSpreadsheet via Composer. We build a file with formatting: header with logo, frozen row, auto-width columns. XLSX is better than CSV for reporting, but is generated 5 times slower.
  • Filtering by properties: only products with stock > 0, of a specific brand, with a discount.
  • Multiple price types in one file — columns “Retail”, “Wholesale from 10 pcs.”, “Dealer”. Each is pulled from its own price type.
  • Trade offers in rows: if a product has SKUs (size, color), each offer is a separate row indicating the variant.

Example from practice: we recently configured an export for a wholesale distributor with 15,000 products, five price types, and a requirement for XLSX with conditional formatting (green fill for in-stock products, red for backorder).

We solved it with a custom handler based on PhpSpreadsheet. Generating one price list takes about 30 seconds with a 30-minute cron interval.

Example signature of a custom handler
function CustomExportProfile(array $arProfile, array $arParams): bool { // your export code } 

How to set up automatic generation via cron?

The price list should be updated automatically. Setup:

  1. In the export profile, enable “Export file” — specify the path, for example /upload/pricelist/price_opt.csv.
  2. Add a cron job: */30 * * * * php /var/www/bitrix/modules/catalog/load/cat_o_csv.php PROFILE_ID — update every 30 minutes.
  3. Alternative — Bitrix agent: CCatalog::PreGenerateXML(PROFILE_ID). Works via cron_events.php.

For heavy catalogs (50,000+ products), CSV generation takes seconds, Excel — tens of seconds. YML — minutes. Take this into account when choosing the interval.

Format 1,000 products 10,000 products 50,000 products
CSV < 1 sec 2–5 sec 10–20 sec
XLSX 2–5 sec 15–30 sec 1–3 min
YML 1–3 sec 10–30 sec 1–5 min

How to choose the price list format?

CSV is fast and lightweight, suitable for Excel and 1C. XLSX has formatting but is slower. YML is for marketplaces. If you need compatibility with 1C, choose CSV with Windows-1251 encoding.

How to organize access to the price list?

The file is located in /upload/pricelist/ — a public directory. Restriction options:

  • Direct link — for partners manually.
  • Authorization via .htaccess (Basic Auth) or a PHP script with Bitrix user permission checks.
  • Token in URL — /upload/pricelist/price_opt.csv?token=abc123. A PHP wrapper checks the token linked to the counterparty.

Common mistakes when setting up export

  • Incorrect encoding: the client opens CSV in Excel and sees garbled characters. Solution — explicitly specify Windows-1251 encoding for 1C and UTF-8 for modern systems.
  • Stock mismatch: if stock export is not configured, the price list will show 0 even though the product is in the warehouse. Be sure to output actual stock via CCatalogStoreProduct::GetList().
  • They forget about trade offers: if a product has SKUs, they must be exported as separate rows or combined into one row with variants.

What is included in turnkey setup

We complete the project in 2–5 days depending on complexity. Included:

  • Requirements analysis (price types, formats, access).
  • Creation of export profiles (CSV/YML) or a custom handler (XLSX).
  • Setup of automatic generation (cron/agent).
  • Access organization (tokens, authorization).
  • Documentation and consultation on updates.

We guarantee stable export operation. Get an up-to-date price list without manual updates. Contact us to discuss your project. Order price list setup — and we will solve the task turnkey.