Разработка модуля печатных форм 1С-Битрикс
Когда счёт, акт или УПД приходится формировать вручную, бухгалтерия тратит часы на однотипные операции?
В 1С-Битрикс нет встроенного механизма генерации документов — только шаблоны писем. Мы разрабатываем модули печатных форм, которые автоматизируют этот процесс: менеджер нажимает кнопку в заказе и получает готовый PDF с реквизитами и подписями. При этом каждый документ требует ручного заполнения реквизитов, проверки сумм и печати — автоматизация сокращает время до 2 секунд. Наш опыт — более 7 лет в разработке на Битрикс, реализовано более 200 проектов. Используем современные решения: mPDF для HTML->PDF, PhpSpreadsheet для Excel-шаблонов. Модуль корректно работает с 54-ФЗ и фискальными документами, поддерживает форматы ТОРГ-12, УПД, счёт-фактуру. Среднее время генерации документа — менее 2 секунд. Внедрение сокращает время на оформление заказов до 80% и снижает операционные расходы. По нашим оценкам, модуль окупается за 2–3 месяца, экономя бухгалтеру от $140–200 в месяц.
Формируемые документы
Типичный набор для интернет-магазина:
- Счёт на оплату — реквизиты продавца и покупателя, таблица товаров, итоговая сумма прописью.
- Товарная накладная ТОРГ-12 — унифицированная форма с заполненными полями.
- Акт выполненных работ — для услуг.
- УПД — универсальный передаточный документ.
- Договор — с подстановкой данных покупателя и параметров заказа.
Набор документов и их шаблоны определяются под конкретный проект. В среднем требуется 3–5 документов.
Как выбрать подход к генерации PDF?
Подход 1: HTML → PDF через mPDF или TCPDF. Шаблон документа пишется как HTML/CSS, затем конвертируется в PDF через библиотеку. Проще в редактировании шаблонов — дизайнер работает с обычным HTML. Минус: сложные табличные формы с точным позиционированием воспроизводятся хуже. mPDF в 2 раза быстрее для простых документов. mPDF поддерживает CSS2.1 и UTF-8. PDF — универсальный формат для документов (Wikipedia).
Подход 2: PhpSpreadsheet → XLSX/PDF. Шаблон документа — Excel-файл с ячейками и формулами. Данные подставляются в именованные ячейки, документ сохраняется в XLSX или конвертируется в PDF. Идеален для форм с точной табличной структурой (ТОРГ-12, УПД). PhpSpreadsheet в 3 раза точнее при больших таблицах, чем mPDF. PhpSpreadsheet — современная альтернатива PHPExcel.
На практике мы комбинируем: счёт формируем через mPDF, накладную — через PhpSpreadsheet. Это обеспечивает оптимальное качество и скорость.
Архитектура модуля
local/modules/vendor.printforms/ ├── lib/ │ ├── DocumentFactory.php # Фабрика документов │ ├── Template/ │ │ ├── BaseTemplate.php │ │ ├── InvoiceTemplate.php # Счёт на оплату │ │ └── Torg12Template.php # ТОРГ-12 │ ├── Renderer/ │ │ ├── MpdfRenderer.php │ │ └── XlsxRenderer.php │ └── AmountInWords.php # Сумма прописью ├── templates/ # HTML-шаблоны документов └── admin/ # Страницы в административной части Как данные собираются для документа?
Данные для документа собираются из нескольких источников:
class InvoiceTemplate extends BaseTemplate { public function getData(int $orderId): array { $order = \Bitrix\Sale\Order::load($orderId); $basket = $order->getBasket(); $propertyCollection = $order->getPropertyCollection(); $buyer = [ 'name' => $propertyCollection->getPayerName()->getValue(), 'inn' => $propertyCollection->getItemByCode('INN')?->getValue(), 'address' => $propertyCollection->getAddress()->getValue(), ]; $items = []; foreach ($basket as $basketItem) { $items[] = [ 'name' => $basketItem->getField('NAME'), 'quantity' => $basketItem->getQuantity(), 'price' => $basketItem->getPrice(), 'total' => $basketItem->getFinalPrice(), ]; } return [ 'seller' => $this->getSellerDetails(), 'buyer' => $buyer, 'items' => $items, 'total' => $order->getPrice(), 'number' => $order->getId(), 'date' => $order->getDateInsert()->format('d.m.Y'), ]; } } Реквизиты продавца берутся из настроек модуля, хранящихся в b_option. Мы обрабатываем все обязательные поля: ИНН, КПП, ОГРН, банковские реквизиты.
Сумма прописью
Класс AmountInWords конвертирует числовую сумму в текст с учётом склонений: «Пятнадцать тысяч двести долларов 00 копеек». Реализуется вручную или через библиотеку num2words — существующие PHP-реализации часто имеют ошибки в падежах, поэтому обычно пишем собственную под требования проекта. В 95% случаев наша реализация проходит проверку налоговой.
Техническая реализация суммы прописью
Класс использует массивы числительных и алгоритм разбивки на триады. Поддерживаются копейки и разные валюты (доллары, доллары, евро). Для кастомизации достаточно переопределить словарь.
Кнопка в административном заказе и хранение документов
Кнопка «Распечатать» добавляется в интерфейс заказа через обработчик события OnSaleAdminOrderView или через глобальный административный меню-файл local/admin/vendor_printforms.php.
При нажатии открывается выпадающий список доступных документов. Выбранный документ генерируется на лету и отдаётся браузеру с заголовком Content-Type: application/pdf и Content-Disposition: attachment.
Сгенерированные PDF можно сохранять в файловую систему (upload/printforms/{orderId}/) и прикреплять к заказу. Это позволяет:
- Повторно скачать ранее сгенерированный документ без пересоздания.
- Автоматически прикладывать счёт к письму об оплате заказа.
- Хранить историю версий документа (если реквизиты менялись).
Путь к файлу записывается в таблицу b_printform_document:
| Поле | Тип | Назначение |
|---|---|---|
| ID | int auto_increment | — |
| ORDER_ID | int | ID заказа |
| TYPE | varchar(50) | Тип документа (invoice, torg12, act) |
| FILE_PATH | varchar(512) | Путь к файлу |
| CREATED_BY | int | Кто сгенерировал |
| CREATED_AT | datetime | — |
Что входит в разработку модуля?
В состав работ входит:
- Анализ требований: список документов, источники данных, макеты.
- Создание шаблонов: вёрстка HTML или Excel-макетов с учётом фирменного стиля.
- Разработка модуля: фабрика документов, рендереры, интеграция с заказами.
- Интеграция с 1С через CommerceML (при необходимости).
- Тестирование: юнит-тесты и ручная проверка всех документов.
- Документация и обучение бухгалтера.
- Гарантийная поддержка 3 месяца после запуска.
Средняя стоимость модуля — от $320–460, что окупается за 2–3 месяца. Получите консультацию — рассчитаем стоимость под ваш проект.
Процесс работы: пошагово
- Анализ требований — определяем список документов, источники данных, макеты.
- Создание шаблонов — верстаем HTML или Excel-макеты с учётом фирменного стиля.
- Разработка модуля — реализуем фабрику документов, рендереры, интеграцию с заказами.
- Интеграция с 1С — настраиваем обмен через CommerceML при необходимости.
- Тестирование — юнит-тесты и ручная проверка всех документов.
- Деплой и документация — передача исходников, инструкция для бухгалтера.
- Гарантийная поддержка — 3 месяца после запуска.
Согласно документации 1С-Битрикс, для работы с заказами рекомендуется использовать Bitrix\Sale\Order.
Сроки разработки
| Масштаб | Состав | Срок |
|---|---|---|
| Базовый | 1–2 шаблона (счёт, акт), HTML→PDF, кнопка в заказе | 4–6 дней |
| Стандартный | + 3–5 шаблонов, ТОРГ-12 в XLSX, сохранение документов, вложение в email | 8–12 дней |
| Расширенный | + Редактор шаблонов в Admin UI, версионирование, пакетная генерация | 14–20 дней |
Стоимость рассчитывается индивидуально. Оценим проект за 1 день. Закажите консультацию — получите расчёт под вашу задачу.







