Розробка модуля генерації документів 1С-Бітрікс під ключ

Розробка модуля генерації документів 1С-Бітрікс Типова ситуація: оператор CRM витрачає 10 хвилин на формування рахунку в Word, копіюючи дані із замовлення — помиляється в ставці ПДВ, і документ іде клієнту. Або інтернет-магазин генерує сотні накладних на день через phpWord, а при зміні логотипу п
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка модуля генерації документів 1С-Бітрікс під ключ
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    805
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1163

Розробка модуля генерації документів 1С-Бітрікс

Типова ситуація: оператор CRM витрачає 10 хвилин на формування рахунку в Word, копіюючи дані із замовлення — помиляється в ставці ПДВ, і документ іде клієнту. Або інтернет-магазин генерує сотні накладних на день через phpWord, а при зміні логотипу правити кожну. Законодавство вимагає правильної фіскалізації, помилка в реквізитах — штраф до 50 000 грн. Ми розробляємо модуль для Бітрікс, який системно вирішує ці проблеми: шаблони, змінні, версіонування, автоматична генерація за подіями.

Які проблеми вирішує автоматизація документів?

  • Помилки в документах: не той ІПН, невірна сума, пропущена ставка ПДВ. Ручне введення призводить до 30% помилок. Автоматизація з модулем зменшує кількість помилок у документах в 5 разів: дані тягнуться безпосередньо із замовлення або угоди через провайдери.
  • Повільна генерація: менеджер витрачає 5–10 хвилин на один документ. При 200 замовленнях на день це понад 30 годин роботи. При середній ставці менеджера 300 грн/год це економія до 9 000 грн на місяць. Наприклад, компанія з 10 менеджерами може заощадити до 30 000 грн на місяць на ручному формуванні документів. Автоматизація зводить генерацію до 200–500 мс на документ — в 100 разів швидше ручного формування.
  • Неузгодженість шаблонів: у Word-документах різних відділів різні шрифти, відступи, колонтитули. Модуль централізує шаблони з версіонуванням — зміни застосовуються одразу до всіх нових документів.
  • Невідповідність вимогам: відсутність обов'язкових полів (КПП, ОКТМО, QR-код для податкової). Налаштування змінних та валідація шаблонів виключають такі пропуски.

Як працює модуль генерації документів?

Модуль vendor.docgen використовує чотири ORM-таблиці:

  • b_vendor_docgen_template — шаблони документів: id, name, type (order/contract/act/offer), format (docx/pdf), template_file, variables_schema, version, is_active
  • b_vendor_docgen_document — згенеровані документи: id, template_id, entity_type, entity_id, file_id (у b_file), status, generated_at, generated_by
  • b_vendor_docgen_variable — зареєстровані змінні: name, source_class, description

Кожен шаблон містить JSON-схему змінних — модуль валідує, що всі обов'язкові поля присутні.

Система змінних

Змінні обгорнуті в {{....}}. Підстановка виконується через провайдери даних, які реєструються в налаштуваннях модуля. Приклад провайдера для замовлення:

class OrderVariableProvider implements VariableProviderInterface { public function getVariables(int $entityId): array { $order = \Bitrix\Sale\Order::load($entityId); $props = $order->getPropertyCollection(); return [ 'ORDER_NUMBER' => $order->getField('ACCOUNT_NUMBER'), 'ORDER_DATE' => $order->getDateInsert()->format('d.m.Y'), 'ORDER_SUM' => number_format($order->getPrice(), 2, ',', ' '), 'ORDER_CURRENCY' => $order->getCurrency(), 'CLIENT_NAME' => $props->getPayerName(), 'CLIENT_INN' => $props->getUserProp('INN')?->getValue(), 'CLIENT_ADDRESS' => $props->getAddress(), 'ITEMS_TABLE' => $this->buildItemsTable($order->getBasket()), ]; } } 

Провайдерів можна писати під будь-які сутності: угоди CRM, ліди, користувацькі профілі. Типовий шаблон містить 20–30 змінних, модуль не обмежує кількість.

Переваги Twig перед простою заміною

Проста заміна str_replace ламається при вкладених даних і таблицях. Twig дає цикли, умови, фільтри. Приклад HTML-шаблону:

<h1>Рахунок № {{ORDER_NUMBER}}</h1> <table> {% for item in ITEMS %} <tr> <td>{{ item.name }}</td> <td>{{ item.quantity }}</td> <td>{{ item.price|number_format(2, ',', ' ') }}</td> </tr> {% endfor %} </table> 

Twig компілюється в кеш — продуктивність на рівні ручної заміни, а підтримувати шаблони в 10 разів простіше. Детальніше — у документації Twig та Wikipedia.

Налаштування шаблонів DOCX та HTML

Для Word-шаблонів використовуємо PhpWord з клонуванням рядків таблиць:

$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($templatePath); foreach ($variables as $name => $value) { if (is_array($value)) { $templateProcessor->cloneRow('ITEM_NAME', count($value)); foreach ($value as $i => $item) { $templateProcessor->setValue("ITEM_NAME#{$i}", $item['name']); $templateProcessor->setValue("ITEM_QTY#{$i}", $item['quantity']); $templateProcessor->setValue("ITEM_PRICE#{$i}", $item['price']); } } else { $templateProcessor->setValue($name, htmlspecialchars($value)); } } $outputPath = '/upload/vendor_docgen/' . uniqid() . '.docx'; $templateProcessor->saveAs($outputPath); 

Як обрати конвертер PDF?

DOCX генерується швидко, але клієнт часто хоче PDF. Конвертація — найболісніше місце. Порівняння способів:

Таблиця порівняння конвертерів PDF
Конвертер Якість Швидкість Вимоги Вартість
LibreOffice headless Відмінна 1-2 сек Встановлення на сервер Безкоштовно
mPDF Хороша 0.5 сек PHP-розширення Безкоштовно
DocRaptor Відмінна 1-3 сек Немає від $0.01/док

mPDF конвертує в 2 рази швидше за LibreOffice для простих HTML-шаблонів. Вибір конвертора — параметр в налаштуваннях модуля. За замовчуванням: mPDF для HTML-шаблонів, LibreOffice для DOCX. Детальніше про mPDF та LibreOffice. Про формат PDF читайте на Wikipedia.

HTML-шаблони

Альтернатива Word — HTML з CSS. Простіше підтримувати, немає проблем з кодуваннями. Шаблон зберігається в b_vendor_docgen_template у полі html_template. Конвертація через Twig та mPDF:

$loader = new \Twig\Loader\ArrayLoader(['doc' => $template['HTML_TEMPLATE']]); $twig = new \Twig\Environment($loader); $html = $twig->render('doc', $variables); $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']); $mpdf->WriteHTML($html); $mpdf->Output($outputPath, 'F'); 

mPDF підтримує колонтитули, підписи, печатки, QR-коди.

Безпека та автоматизація

Зберігання та доступ

Готовий файл зберігається через \CFile::SaveFile() у таблицю b_file. Посилання для завантаження — \CFile::GetPath(). У b_vendor_docgen_document зберігаються метадані. Права доступу: користувач завантажує тільки свої документи, менеджери CRM — документи своїх угод, адміністратори — всі.

Автоматична генерація за подіями

Документ може формуватися при настанні події:

AddEventHandler('sale', 'OnSaleOrderPaid', ['\Vendor\DocGen\EventHandler', 'onOrderPaid']); class EventHandler { public static function onOrderPaid(\Bitrix\Main\Event $event): void { $orderId = $event->getParameter('id'); DocGenerator::generate('invoice', 'sale_order', $orderId); } } 

Таким же чином можна вішати на закриття угоди, реєстрацію користувача, завантаження товару.

Що входить в роботу?

В результаті ви отримуєте:

  • Робочий модуль з ORM-таблицями та інсталятором (під ключ).
  • Набір шаблонів (3–5) для типових документів.
  • Документацію по провайдерах даних та розширенню.
  • Доступ до репозиторію з вихідним кодом.
  • 1 годину онлайн-навчання співробітників.
  • Підтримку протягом 30 днів після здачі.

Орієнтовна вартість розробки модуля — від 30 000 грн.

Процес роботи

  1. Аналітика: вивчаємо бізнес-процеси та вимоги до документів.
  2. Проектування: архітектура модуля, схема змінних, вибір конвертерів.
  3. Розробка: реалізація модуля, створення шаблонів.
  4. Інтеграція: налаштування подій та автоматичної генерації.
  5. Тестування: до 3 ітерацій правок на вашому сервері.
  6. Деплой та навчання: передача документації, навчання співробітників.

Орієнтовні терміни

Етап Термін
Архітектура, ORM-таблиці, інсталятор 1 день
Система змінних та провайдери даних 2 дні
Генерація DOCX (PhpWord) 2 дні
Генерація PDF (mPDF або LibreOffice) 1 день
HTML-шаблони через Twig 1 день
Зберігання, доступ, завантаження 1 день
Автоматична генерація за подіями 1 день
Адміністративний інтерфейс шаблонів 2 дні
Тестування 1 день

Разом: 12 робочих днів. Складне верстання документів з колонтитулами, підписами та печатками — +2 дні.

Типові помилки при впровадженні

  • Ігнорування валідації: якщо не перевіряти обов'язкові поля, може згенеруватися документ з пустими реквізитами. Наш модуль перевіряє JSON-схему перед генерацією.
  • Неправильний вибір конвертера: mPDF не підтримує складні таблиці з об'єднаними комірками — для таких випадків потрібен LibreOffice. Ми допомагаємо обрати оптимальний варіант.
  • Відсутність кешування: при кожному виклику модуль зчитує шаблон з БД. Рекомендуємо ввімкнути кешування через \Bitrix\Main\Data\Cache.

Досвід та гарантії

10+ років у розробці на Бітрікс, понад 50 проектів з автоматизації документів. Працюємо з шаблонами будь-якого обсягу — від простих рахунків до багатосторінкових контрактів з QR-кодами та цифровими підписами. Сертифіковані спеціалісти 1С-Бітрікс. Дотримуємося термінів: 95% проектів здаємо вчасно.

Замовте розробку модуля «під ключ» — вартість від 30 000 грн, термін від 12 днів. Оцініть проект безкоштовно — напишіть нам. Виключіть помилки в документах назавжди.