Розробка сайту типографії на 1С-Bitrix
Типографія працює на стику виробництва та сервісу: клієнт очікує точного розрахунку вартості, контролю якості макета до запуску в друк та прозорого стеження замовлення. Сайт на 1С-Bitrix закриває все три потреби — онлайн-калькулятор з нелінійною тарифікацією, модуль preflight-перевірки завантажених файлів та систему статусів замовлення з сповіщеннями. Платформа Bitrix забезпечує інтеграцію з 1С:Поліграфія для синхронізації виробничого циклу.
Каталог продукції
Продукція типографії оформляється в інфоблоці «Каталог» з розділами: візитки, буклети, листівки, каталоги, упаковка, POS-матеріали, широкоформатна друк. Кожен елемент містить:
- Опис продукту — з прикладами застосування та фотографіями готових виробів
- Доступні формати — множинна властивість-список (A3, A4, A5, A6, євроформат, нестандартний)
- Типи паперу — привязка до Highload-інфоблока «Папір» (мелована, офсетна, дизайнерська, картон — з указанням щільності)
- Постпечатна обробка — множинний список: ламінація (матова/глянцева), УФ-лак, тиснення, вирубка, биговка, фальцовка
- Мінімальний тираж — числова властивість
- Технічні вимоги до макета — HTML-блок з специфікацією: розрізняння, колірний простір, вильоти
Завантаження макета з preflight-перевіркою
Клієнт завантажує макет через форму на детальній сторінці продукту. Прийняті формати: PDF, AI, EPS, TIFF. Обмеження розміру — 200 МБ (настройка через upload_max_filesize, post_max_size та параметри поля).
Після завантаження файл проходить автоматичну preflight-перевірку через PHP-обёртку над ImageMagick (identify та convert):
- Розрізняння — перевірка DPI (мінімум 300 для офсету, 150 для широкоформатної)
- Колірний простір — CMYK для друку; якщо RGB — попередження клієнту
- Розмір документа — сопоставленн з обраним форматом продукції (допуск ±3 мм на вильоти)
-
Наявність прозорості — для PDF через
pdfinfo(Poppler)
Результат перевірки зберігається у властивостях замовлення та відображається клієнту: зелена індикація — макет відповідає вимогам, жовта — є попередження (RGB, низькі розрізняння), червона — критичні помилки (непідтримуваний формат, пошкоджений файл).
Для PDF додатково генерується превью першої сторінки через convert ImageMagick → JPEG, яке виводиться клієнту для візуальної верифікації.
Стеження замовлення
Замовлення проходить через виробничі статуси, зберігаються в модулі sale (компонент bitrix:sale.personal.order.detail):
- Прийнято — замовлення оформлене, очікує перевірки макета
- Макет перевірено — preflight пройдено, замовлення в черзі на виробництво
- У друці — замовлення на друкарському обладнанні
- Постпечатна обробка — ламінація, биговка, вирубка
- Готово до видачи — продукція на складі готової продукції
- Відправлено — передано курьєру або забрано клієнтом
При зміні статусу запускається обработчик подій OnSaleStatusOrder, що відправляє SMS через сервіс (SMS.ru або аналог) та email через поштову подію. Клієнт також видить поточний статус у особистому кабінету — візуальна шкала прогресу з підсвічуванням поточного етапу.
Інтеграція з 1С:Поліграфія
Обмін даними настроюється через модуль catalog та користувацький обработчик:
- З Bitrix в 1С: нові замовлення виготулюються як замовлення покупців з привязкою до номенклатури
-
З 1С в Bitrix: статуси виробництва оновлюються через REST-виклики; при зміні статусу в 1С скрипт обміну викликає метод
CSaleOrder::Update()на стороні Bitrix - Номенклатура: довідник продукції синхронізується з 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 тиждень |







