Разработка сайта типографии на 1С-Битрикс
Типография работает на стыке производства и сервиса: клиент ожидает точного расчёта стоимости, контроля качества макета до запуска в печать и прозрачного отслеживания заказа. Сайт на 1С-Битрикс закрывает все три потребности — онлайн-калькулятор с нелинейной тарификацией, модуль preflight-проверки загружаемых файлов и система статусов заказа с уведомлениями. Платформа Битрикс обеспечивает интеграцию с 1С:Полиграфия для синхронизации производственного цикла.
Каталог продукции
Продукция типографии оформляется в инфоблоке «Каталог» с разделами: визитки, буклеты, листовки, каталоги, упаковка, POS-материалы, широкоформатная печать. Каждый элемент содержит:
- Описание продукта — с примерами применения и фотографиями готовых изделий
- Доступные форматы — множественное свойство-список (A3, A4, A5, A6, евроформат, нестандартный)
- Типы бумаги — привязка к Highload-инфоблоку «Бумага» (мелованная, офсетная, дизайнерская, картон — с указанием плотности)
- Постпечатная обработка — множественный список: ламинация (матовая/глянцевая), УФ-лак, тиснение, вырубка, биговка, фальцовка
- Минимальный тираж — числовое свойство
- Технические требования к макету — HTML-блок со спецификацией: разрешение, цветовое пространство, вылеты
Загрузка макета с preflight-проверкой
Клиент загружает макет через форму на детальной странице продукта. Принимаемые форматы: PDF, AI, EPS, TIFF. Ограничение размера — 200 МБ на файл (настраивается через upload_max_filesize и post_max_size в PHP, а также параметр поля веб-формы).
После загрузки файл проходит автоматическую preflight-проверку через PHP-обёртку над ImageMagick (identify и convert):
- Разрешение — проверка DPI (минимум 300 для офсетной печати, 150 для широкоформатной)
- Цветовое пространство — CMYK для печати; если RGB — предупреждение клиенту
- Размер документа — сопоставление с выбранным форматом продукции (допуск ±3 мм на вылеты)
-
Наличие прозрачности — для PDF проверяется через
pdfinfo(Poppler utils)
Результат проверки сохраняется в свойствах заказа и отображается клиенту: зелёная индикация — макет соответствует требованиям, жёлтая — есть предупреждения (RGB, низкое разрешение), красная — критические ошибки (неподдерживаемый формат, повреждённый файл).
Для PDF дополнительно генерируется превью первой страницы через convert ImageMagick → JPEG, которое выводится клиенту для визуальной верификации.
Отслеживание заказа
Заказ проходит через производственные статусы, хранящиеся в модуле sale (компонент bitrix:sale.personal.order.detail):
- Принят — заказ оформлен, ожидает проверки макета
- Макет проверен — preflight пройден, заказ в очереди на производство
- В печати — заказ на печатном оборудовании
- Постпечатная обработка — ламинация, биговка, вырубка
- Готов к выдаче — продукция на складе готовой продукции
- Отгружен — передан курьеру или забран клиентом
При смене статуса срабатывает обработчик события OnSaleStatusOrder, отправляющий SMS через сервис (SMS.ru или аналог) и email через почтовое событие. Клиент также видит текущий статус в личном кабинете — визуальный прогресс-бар с подсветкой текущего этапа.
Интеграция с 1С:Полиграфия
Обмен данными настраивается через модуль catalog и кастомный обработчик:
- Из Битрикс в 1С: новые заказы выгружаются как заказы покупателей с привязкой к номенклатуре
-
Из 1С в Битрикс: статусы производства обновляются через REST-вызовы; при смене статуса в 1С скрипт обмена вызывает метод
CSaleOrder::Update()на стороне Битрикса - Номенклатура: справочник продукции синхронизируется из 1С, включая актуальные тарифы на материалы
Периодичность обмена — cron-задача каждые 15 минут для статусов, раз в сутки для номенклатуры и тарифов.
Deep-dive: калькулятор полиграфической продукции с нелинейной тарификацией
Калькулятор типографии — самый технически сложный элемент сайта. В отличие от линейного «цена × количество», стоимость полиграфии зависит от множества параметров с нелинейными зависимостями: тираж 100 визиток может стоить 5 рублей за штуку, а тираж 1000 — уже 1.5 рубля за штуку. Добавление ламинации увеличивает стоимость не пропорционально, а ступенчато. Цена бумаги зависит от плотности и формата нелинейно.
Модель данных
Тарификация хранится в нескольких связанных Highload-инфоблоках:
HlPaper (бумага):
| Поле | Тип | Пример |
|---|---|---|
| UF_NAME | строка | Мелованная глянцевая |
| UF_DENSITY | число | 300 |
| UF_PRICE_PER_KG | число | 85 |
| UF_SHEET_WEIGHT | число (float) | Вес листа формата в граммах |
| UF_FORMAT | список | SRA3, SRA2, 620×940 |
HlPrintRun (тарифы по тиражу):
| Поле | Тип | Пример |
|---|---|---|
| UF_PRODUCT_TYPE | привязка | Визитки |
| UF_RUN_FROM | число | 100 |
| UF_RUN_TO | число | 499 |
| UF_COLORS | список | 4+0, 4+4, 1+0, 1+1 |
| UF_SETUP_COST | число | Стоимость приладки |
| UF_PRINT_COST_PER_SHEET | число (float) | Стоимость печати за лист |
HlPostpress (постпечатная обработка):
| Поле | Тип | Пример |
|---|---|---|
| UF_TYPE | список | Ламинация матовая |
| UF_SETUP_COST | число | 800 |
| UF_COST_PER_UNIT | число (float) | 0.45 |
| UF_MIN_RUN | число | 100 |
| UF_DISCOUNT_THRESHOLD | число | 1000 |
| UF_DISCOUNT_PERCENT | число | 15 |
Формула расчёта
Итоговая стоимость складывается из компонентов:
-
Стоимость бумаги = количество листов × вес листа × цена за кг / 1000. Количество листов рассчитывается из тиража с учётом спуска полос: сколько изделий помещается на печатный лист (зависит от формата изделия и формата бумаги). Добавляется технологический запас: 3% для тиража до 500, 2% для 500–5000, 1.5% свыше 5000.
-
Стоимость печати = приладка + (количество печатных листов × стоимость за лист). Приладка — фиксированная сумма за настройку оборудования, не зависит от тиража. Стоимость за лист снижается ступенчато: определяется строкой из HlPrintRun по диапазону тиража.
-
Постпечатная обработка = приладка + (количество единиц × стоимость за единицу). Если тираж превышает порог
UF_DISCOUNT_THRESHOLD, применяется скидкаUF_DISCOUNT_PERCENT. -
Итого = бумага + печать + сумма постпечатных операций.
Backend-реализация
AJAX-обработчик (/ajax/calc_print.php) принимает параметры: тип продукции, формат, тираж, цветность, тип бумаги, плотность, массив постпечатных операций. Для каждого компонента формулы выполняется запрос к соответствующему Highload через ORM DataManager. Результаты промежуточных вычислений кэшируются в $_SESSION для отображения детализации.
Ответ содержит JSON с полной детализацией: стоимость бумаги, стоимость печати (с выделением приладки), стоимость каждой постпечатной операции, итого и цена за единицу. Клиент видит прозрачную структуру цены.
Интерфейс
Калькулятор встроен в детальную страницу каждого продукта. При выборе параметров пересчёт происходит в реальном времени через AJAX с debounce (300ms задержка после последнего изменения). Визуально результат отображается в закреплённой боковой панели (sticky sidebar), которая на мобильных устройствах превращается в нижнюю шторку (bottom sheet).
Этапы реализации
| Этап | Работы | Срок |
|---|---|---|
| Аналитика | Сбор тарифных матриц, формулы расчёта, ТЗ на калькулятор | 2 недели |
| Проектирование | Структура Highload, прототипы, UX калькулятора | 1.5 недели |
| Дизайн | Макеты каталога, калькулятора, личного кабинета | 2 недели |
| Backend | Инфоблоки, Highload-справочники, логика калькулятора | 4 недели |
| Preflight-модуль | Интеграция ImageMagick, обработчик проверки макетов | 1 неделя |
| Frontend | Вёрстка, интерактивный калькулятор, адаптив | 2 недели |
| Интеграция 1С | Настройка обмена статусов и номенклатуры | 1.5 недели |
| Тестирование | Проверка формул, нагрузочное тестирование, UAT | 1.5 недели |
| Запуск | Деплой, наполнение каталога, мониторинг | 1 неделя |







