Developing a printing house website using 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Print Shop Website Development on 1C-Bitrix

Printing shop operates at production and service intersection: customer expects accurate cost calculation, quality control before print run, and transparent order tracking. Website on 1C-Bitrix covers all three needs — online calculator with non-linear pricing, preflight file check module, and order status system with notifications. Bitrix integrates with 1C:Polygraphia for production cycle sync.

Product Catalog

Printing products in "Catalog" info block with sections: business cards, brochures, leaflets, catalogs, packaging, POS materials, wide-format printing. Each element contains:

  • Product Description — with usage examples and finished product photos
  • Available Formats — multiple-list property (A3, A4, A5, A6, eurosize, custom)
  • Paper Types — binding to "Paper" Highload (coated, offset, design, cardboard — with density)
  • Post-Press Processing — multiple list: lamination (matte/gloss), UV varnish, embossing, die-cutting, scoring, folding
  • Minimum Run — numeric
  • Technical Mackeup Requirements — HTML block with spec: resolution, color space, bleeds

Mackeup Upload with Preflight Check

Customer uploads mackeup via form on detail page. Accepted: PDF, AI, EPS, TIFF. Size limit — 200 MB (via upload_max_filesize, post_max_size, and field settings).

Post-upload, file passes auto preflight check via PHP ImageMagick wrapper (identify, convert):

  • Resolution — DPI check (minimum 300 for offset, 150 for wide-format)
  • Color Space — CMYK for print; if RGB — client warning
  • Document Size — match with selected product format (±3 mm bleeds tolerance)
  • Transparency Check — for PDF via pdfinfo (Poppler)

Check result saved to order properties, displayed to client: green — mackeup meets requirements, yellow — warnings (RGB, low res), red — critical (unsupported, corrupted).

PDF preview generated via ImageMagick convert → JPEG, shown to client for visual verification.

Order Tracking

Order goes through production statuses in sale module (bitrix:sale.personal.order.detail component):

  • Accepted — order placed, awaiting mackeup check
  • Mackeup Checked — preflight passed, queued for production
  • In Print — on printing equipment
  • Post-Press Processing — lamination, scoring, die-cutting
  • Ready for Pickup — on finished goods warehouse
  • Shipped — passed to courier or picked by client

Status change triggers OnSaleStatusOrder handler, sending SMS via service (SMS.ru) and email via mail events. Client sees status in personal cabinet — visual progress bar with current stage highlight.

1C:Polygraphia Integration

Exchange via catalog module and custom handler:

  • Bitrix to 1C: new orders exported as customer orders with nomenclature binding
  • 1C to Bitrix: production statuses update via REST-calls; status change calls CSaleOrder::Update()
  • Nomenclature: product reference syncs from 1C with current tariffs

Exchange every 15 minutes for statuses, daily for nomenclature and tariffs.

Deep-Dive: Print Product Calculator with Non-Linear Pricing

Print calculator — most technically complex element. Unlike linear "price × quantity", printing cost depends on multiple non-linear parameters: 100 business cards may cost 5 rubles each, 1000 — already 1.5 per unit. Adding lamination increases cost non-proportionally, stepwise. Paper price depends on density non-linearly.

Data Model

Pricing stored in interconnected Highload blocks:

HlPaper (paper):

Field Type Example
UF_NAME string Coated Gloss
UF_DENSITY number 300
UF_PRICE_PER_KG number 85
UF_SHEET_WEIGHT number (float) Sheet weight grams
UF_FORMAT list SRA3, SRA2, 620×940

HlPrintRun (run tariffs):

Field Type Example
UF_PRODUCT_TYPE binding Business Cards
UF_RUN_FROM number 100
UF_RUN_TO number 499
UF_COLORS list 4+0, 4+4, 1+0, 1+1
UF_SETUP_COST number Setup cost
UF_PRINT_COST_PER_SHEET number (float) Print cost per sheet

HlPostpress (post-press):

Field Type Example
UF_TYPE list Matte Lamination
UF_SETUP_COST number 800
UF_COST_PER_UNIT number (float) 0.45
UF_MIN_RUN number 100
UF_DISCOUNT_THRESHOLD number 1000
UF_DISCOUNT_PERCENT number 15

Calculation Formula

Total cost comprises:

  1. Paper Cost = print sheets × sheet weight × price per kg / 1000. Print sheet quantity from run considering imposition: how many items fit on sheet (depends on item and paper format). Adds technology margin: 3% for runs to 500, 2% for 500–5000, 1.5% above 5000.

  2. Print Cost = setup + (print sheets × cost per sheet). Setup — fixed equipment setup, run-independent. Cost per sheet drops stepwise: determined by HlPrintRun row per run range.

  3. Post-Press = setup + (units × cost per unit). If run exceeds UF_DISCOUNT_THRESHOLD, apply UF_DISCOUNT_PERCENT discount.

  4. Total = paper + print + post-press sum.

Backend Implementation

AJAX handler (/ajax/calc_print.php) receives: product type, format, run, colors, paper type, density, post-press array. Each formula component queries respective Highload via ORM DataManager. Intermediate results cached in $_SESSION for detail display.

Response contains JSON: paper cost, print cost (setup highlighted), each post-press operation cost, total, unit price. Client sees transparent cost structure.

Interface

Calculator embedded in each product detail page. Parameter selection triggers real-time recalc via AJAX with debounce (300ms after last change). Visually on desktop sticky sidebar, on mobile bottom sheet.

Development Stages

Stage Work Timeline
Analysis Tariff matrix collection, calculation formulas, calculator TZ 2 weeks
Design Highload structure, prototypes, calculator UX 1.5 weeks
Design Catalog, calculator, personal cabinet mockups 2 weeks
Backend Info blocks, Highload references, calculator logic 4 weeks
Preflight Module ImageMagick integration, mackeup check handler 1 week
Frontend Markup, interactive calculator, responsive 2 weeks
1C Integration Exchange setup, status/nomenclature sync 1.5 weeks
Testing Formula check, load testing, UAT 1.5 weeks
Launch Deploy, catalog population, monitoring 1 week