Cinema website development on 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.webp
    B2B ADVANCE company website development
    1356
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    943
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    828
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1073

A cinema website has one job — sell tickets for shows. Posters, trailers, descriptions — all serve the conversion from browsing to purchase. The technical challenge isn't content (you can pull that from TMDB automatically), but the schedule, which reshuffles every week, and the multiplex seating charts, where each hall has its own seat configuration, zones, and price categories. We build cinema sites on 1C-Bitrix that handle these tasks without constant developer involvement.

On the Bitrix platform, the project relies on two information blocks (Films and Sessions), the sale module for selling, The Movie Database integration for auto-populating cards, and a connection to the cinema management system. Project cost is calculated individually.

Using two information blocks for cinema site development on 1C-Bitrix

A cinema schedule is a three-dimensional matrix: film × hall × time. Trying to cram everything into one info block ends in a mess by the second month of operation. Two info blocks — the only working solution.

Info block Films — film card:

  • PROPERTY_TMDB_ID — identifier in The Movie Database (key field)
  • PROPERTY_TITLE_ORIGINAL — original title
  • PROPERTY_GENRES — genres (multiple reference)
  • PROPERTY_DURATION — runtime in minutes
  • PROPERTY_AGE_RATING — age rating (0+, 6+, 12+, 16+, 18+)
  • PROPERTY_FORMAT — screening formats (2D, 3D, IMAX, Dolby Atmos — multiple)
  • PROPERTY_RELEASE_DATE — release date
  • PROPERTY_TRAILER_URL — trailer link (YouTube)
  • PROPERTY_POSTER — poster (file)
  • PROPERTY_BACKDROP — background image for header

Manager enters only TMDB_ID. A Bitrix agent (CAgent::AddAgent) on element creation makes a GET request to api.themoviedb.org/3/movie/{id}?language=ru-RU and fills in: description, genres, runtime, poster, backdrop, cast. Poster and backdrop are downloaded from image.tmdb.org and saved locally — no external CDN dependency at runtime. Info blocks v2.0 documentation provides high-performance storage for unstructured data.

Data update — once daily by agent: checks rating changes, new trailers. Queries to TMDB are cached via Bitrix\Main\Data\Cache with TTL 86400 seconds. TMDB API limit is 40 requests per 10 seconds on the free tier. For a cinema with 15–30 films in release, that's plenty.

Info block Sessions — each screening as an element:

Property Type Description
PROPERTY_FILM_ID Link Film from Films
PROPERTY_HALL_ID Link Hall from Halls
PROPERTY_DATETIME Date/Time Screening start
PROPERTY_FORMAT List 2D / 3D / IMAX
PROPERTY_LANGUAGE List Dubbing / Original / Subtitles
PROPERTY_PRICES JSON Prices by zone: {"zone_a": 450, "zone_b": 350, "zone_c": 280, "zone_vip": 700}
PROPERTY_STATUS List Selling / Few seats / Sold out / Canceled

Updating the schedule: Managers fill an Excel template: film, hall, date, time, format, language. Uploads via a custom admin interface. A parser based on PhpSpreadsheet creates Sessions elements, validating each row: does the film exist in the database? Does the screening overlap with another in the same hall? Overlap check — film runtime + 30 minutes for cleaning and ads. If "Avatar 2" runs 192 minutes and the next screening in the same hall is set 200 minutes later, validation throws an error.

Display on the site. On the main page — a grid of "films × time" for today and tomorrow. The bitrix:news.list component with grouping by film, inside — buttons for screenings with price and format. Filter by date, genre, format — AJAX without reload. On the film page — full schedule for the current and next week, table by day.

Interactive seat selection

A multiplex with 5–8 halls means 5–8 different SVG files. An IMAX hall with 350 seats and a cozy 80-seat hall have completely different geometry. Regular seats, VIP sofas, love seats, wheelchair spaces — each type is drawn with its own icon.

Zone pricing. Price is tied to a zone, not an individual seat. Instead of setting a price for each of 300 seats — 4–5 zone prices per screening. Zone prices range from 280 to 700 rubles per seat.

  • zone_a — central rows with optimal view
  • zone_b — side and back rows
  • zone_c — front rows (closer to screen)
  • zone_vip — VIP section (wide seats, tables, increased spacing)

Zones are set in SVG via the data-zone attribute. Prices are stored in the screening's JSON property PROPERTY_PRICES. The administrator changes the price for a specific screening — no editing of SVG.

Interactive chart. The screen is drawn in SVG as a reference — the buyer understands where they will sit. On hover over a zone — entire zone highlights with price. On tap on a seat — added to cart with animation. Mobile version: on tap on hall area — zoom to section with individual seats shown. The svg-pan-zoom library for scaling.

Seat locking — Redis with TTL 480 seconds (8 minutes — buying a cinema ticket is faster than theatre). Using SETNX with key lock:session_{id}:row_{r}:seat_{s}. Timer expiration — automatic release. On a project for a 6-hall multiplex, we reduced the average ticket purchase time from 45 seconds to 12 seconds by caching SVG schemas and optimizing Redis lock checks.

Checkout process:

  1. Validate seats (not sold, not locked)
  2. Create order in sale: film + screening + seat as cart items
  3. Online payment — YooKassa / CloudPayments / SBP
  4. Generate electronic ticket with QR code
  5. Send via email and optionally push via Telegram Bot API

QR contains an encrypted string: order ID, seat number, HMAC-SHA256 checksum. The terminal at hall entrance scans the QR and marks the ticket. Second scan — denied. For cinema chains, QR must be unique across the entire chain, not just one cinema — serial number includes venue code.

How is the schedule synchronized with cinema systems?

Chain cinemas work with automated systems. The site connects to them for schedule and sales sync:

System Protocol Data Provided
Kinoplan REST API Schedule, sales, booking, fiscalization, halls and charts
Vista Cinema SOAP / REST Screenings, prices, seat status, transactions
KSEA XML-RPC Subscriptions, gift cards, bonuses
Ticketon REST API Sales widget, status webhooks

When working with Kinoplan, the Bitrix site acts as a frontend, while the sales backend is on Kinoplan's side. A sync agent runs every 5 minutes: fetches schedule, seat statuses, new films. When a purchase is made via the site, the order is sent to Kinoplan's API, and a transaction ID comes back for the fiscal receipt.

For independent cinemas without an external system, all logic lives inside Bitrix. Fiscalization of the receipt — via the online cash register module: integration with Atol, OrangeData, or the cloud cash register of the payment provider (YooKassa can send receipts to OFD itself).

Bar menu with pre-order for the screening

At the ticket purchase stage, a step "Add to order" appears: popcorn (three sizes), drinks, combo packs, snacks. Items are stored in the BarMenu info block with prices and photos. When added — additional items in the sale cart.

After payment, the bar receives the order via an internal webhook: composition, order number, screening time. By the time the viewer arrives, the order is ready. Stock balances sync with 1C:Trade Management via the standard exchange module — if popcorn runs out, the item is deactivated on the site.

Combo packs are implemented via sale cart rules: "large popcorn + large cola = 15% discount." The administrator creates a combo in the visual discount constructor without developer involvement.

How does the loyalty program work?

Bonus system — via internal accounts of the sale module:

  • Accrue 5–10% of the receipt amount after visit
  • Spend up to 50% of the next ticket cost
  • Birthday — double bonuses within a week (handler checks UF_BIRTHDAY)
  • Accumulative tiers: Viewer → Cinemaphile → Critic (thresholds in HL block LoyaltyLevels)
View loyalty tiers - Viewer: 0-500 points - Cinemaphile: 501-2000 points - Critic: 2001+ points

Identification — by phone number. Login in personal account via SMS code: main module with custom handler through messageservice.

Deliverables

  • Project documentation: info block architecture, seating charts, integration descriptions
  • Source code of the site on 1C-Bitrix with comments (Git repository)
  • Administration and content management instructions
  • Training managers on schedule and sales management
  • Technical support for 3 months after launch

Our cinema website development on 1C-Bitrix includes online ticket sales with zone pricing and TMDB integration for automatic movie data. Our team of Bitrix developers has over 5 years of experience and has completed more than 20 cinema projects. We guarantee compatibility with Bitrix updates and provide 3 months of free support.

Technical timeline

Stage Duration
Design and prototype 2 weeks
Design (responsive, seating charts) 3–4 weeks
Layout 2–3 weeks
Development (info blocks, schedule, TMDB) 3–4 weeks
SVG seating charts and seat sales 2–3 weeks
Integration (payment system, online cash register, Kinoplan) 2–4 weeks
Bar menu and bonus system 1–2 weeks
Testing and content filling 2 weeks
Total 17–24 weeks

When integrating with Kinoplan or Vista, the schedule and seat sales stages partially overlap — reducing the timeline by 2–3 weeks. For a small single-screen cinema without external systems, the project fits into 10–12 weeks. Cost is calculated after requirements analysis: number of halls, presence of cinema system, integration scope.

Contact us for a consultation. We'll help you choose the optimal solution for your cinema.

How to properly design infoblocks?

When developing a 1C-Bitrix website, we see dozens of projects where poor infoblock structure slows down the site. Typical scenario: the client asks for a "product catalog." The developer creates one infoblock catalog, puts 15 properties in it. Six months later – 40 properties, 8 of which are used only for one category. The filter lags, the b_iblock_element_property table grows to millions of rows, CIBlockElement::GetList runs for 3 seconds. Consequences – conversion drop, loss of customers, additional optimization costs. In one project after catalog refactoring, page generation time dropped from 4.2 to 0.8 seconds, and annual support costs were reduced by over $10,000 through eliminated redundant queries and agents.

Our approach: design infoblocks before writing a single line of code. Separate infoblocks for entities (products, categories, brands), dictionary properties via highload blocks, trade offers for SKUs. This builds performance for years. If you want a preliminary audit of your infoblock schema, contact us for a free review of common mistakes and recommendations.

Why 1C-Bitrix outperforms most CMS for business

The choice of CMS is dictated by business needs, not preferences. Native 1C exchange via catalog.import.1c provides two-way synchronization of products, prices, balances, and orders through CommerceML without third-party modules — five times faster than developing custom exchange on OpenCart or WordPress, saving hundreds of thousands of rubles. Proactive security module includes WAF, file integrity control, SQL injection protection, and two-factor authentication; it's certified for FSTEK requirements. Modular architecture lets you enable only needed modules — iblock, catalog, sale, search — reducing DB queries per hit. Regular patches close vulnerabilities faster than open-source projects (average CVE fix time two weeks). Official documentation is maintained on the vendor's site.

What highload blocks are and how they speed up the catalog

Highload blocks are an alternative to extended infoblock properties when the list of values can grow to thousands of entries. Typical example: manufacturers, countries, colors. If stored as list properties in an infoblock, each filter triggers a full scan of b_iblock_property_enum table. With HL-blocks, selection uses indexes – filter response time drops from 1–2 seconds to 50 ms. We use HLB component and custom queries via Bitrix\Highloadblock\DataManager. This is critical for catalogs with 100,000+ items.

From our practice: an online store with 500,000 items. Standard filter by brand took 4 seconds. The server couldn't handle 50 concurrent requests – pages crashed. We moved the brand directory to an HL-block, added tagged caching for 15 minutes, and set up an agent to clear cache on change. After optimization, filter time was 120 ms, average LCP was 1.8 seconds. The project runs stable without failures.

What integrations are critical for 1C-Bitrix stores

Each e‑commerce project requires reliable connections with payments, fiscalization, logistics, and CRM. We integrate YooKassa, CloudPayments, Tinkoff, Apple Pay, Google Pay for payments; ATOL and OrangeData for 54-FZ compliance via sale.cashbox; CDEK, Boxberry, PEC, Russian Post, Yandex.Delivery for logistics; Bitrix24, amoCRM, Roistat, Calltouch, Mindbox for analytics and CRM. All integrations are configured with proper error handling and fallback logic.

What's included in 1C-Bitrix website development

Each project includes a full set of documentation and artifacts to prevent knowledge loss after handover.

  • Technical specification – user stories, infoblock diagrams, integration schemas.
  • Source code in Git – with commit history, release tags, branching rules.
  • Administrative documentation – description of custom components, deployment instructions, list of agents and events.
  • Staff training – up to a 3-hour webinar: admin panel, order management, price settings. Recorded for later review.
  • Access to staging during development – test before production deployment.
  • Warranty support – bug fixes for 30 days after launch. Post-warranty support packages with SLA (response 2 hours, resolution 8 hours).

Our process and technologies

Project type Timeline Complexity Key features
Corporate website from 1 month Medium Catalog, news, forms, CRM integration
Online store from 2 months High 54-FZ, marketplaces, 1C exchange, SKU
B2B portal from 3 months Very high Personal prices, document flow, Bizproc
Landing page from 2 weeks Low LCP < 2s, composite cache, static
Multisite structure from 1.5 months High Separate content, shared catalog, hreflang

Tech stack: mobile-first markup, tested on physical devices (iPhone, iPad, Android). Use BrowserStack for Safari on iOS. Performance goals: LCP < 2.5 s, FID < 100 ms, CLS < 0.1. Enable composite site (composite module), CDN, tagged caching, WebP/AVIF, lazy loading. SEO: Schema.org via JSON-LD, auto-generation of sitemap.xml via seo module, canonical and hreflang for multilingual versions. robots.txt blocks /bitrix/ from indexing. CI/CD: Git, auto-deploy via GitLab CI, staging. DB migrations: sprint.migration module with versioning.

Process:

  1. Analytics – study competitors, gather requirements, create prototypes in Figma. Output: technical specification with user stories.
  2. Design – UI/UX with design system. Components are reusable.
  3. Development – write components with custom templates in local/templates/. Business logic in local/modules/.
  4. Testing – functional, cross-browser, load testing (up to 1000 requests). Critical bugs fixed before launch.
  5. Launch – deploy to production, monitoring via UptimeRobot, alerts in Telegram. Fixes for first 48 hours.

Multilingual support and redesign

Full localization via language files lang/ and SITE_ID mechanism. hreflang for each version. Regional versions with different prices and content – IP detection (main.geo) or manual selection. Multidomain – unified management of multiple domains.

Redesign without losing rankings: performance audit (PageSpeed, WebPageTest), SEO (Screaming Frog). New template in local/templates/ with preserved URL structure. 301 redirects only if URL changes significantly. Kernel update, migration to D7 ORM, infoblock restructuring, migration via sprint.migration with Git.

Guarantee and support

We have been working with 1C-Bitrix for 12+ years, completed 500+ projects. Certified developers on staff. Fixed price in contract – no surprises. Warranty period covers code errors. After warranty, subscription packages with SLA (response time 2 hours, resolution 8 hours). 24/7 availability monitoring, alerts in Telegram. Get a consultation and preliminary estimate: contact us via the form on the website or chat – we'll respond within an hour. Order turnkey development – we'll design infoblocks, integrate 1C, and speed up the catalog. If you already have a site on another CMS, order a performance audit and migration to Bitrix.