
Доработка генератора документов Битрикс24. Внедряем собственный контент при экспорте в PDF
- Самостоятельная попытка клиента
- План действий
- HTML-поле
- Наследование описаний из CRM карточки товара
- Кастомизация генератора PDF
- Заключение
В июле 2019 года к нам обратилась музыкальная студия из Германии за доработкой коробочного Битрикс24. Клиенту требовалось произвольно менять описание товара в PDF-счетах.
Предстояло вмешаться в создание PDF, механизм связывания CRM-сущностей (сделки и лида, сделки и счета, счета и товаров и т.д.) и все это на немецком языке. Как говорится, wölfen бояться — в wald не ходить!
Самостоятельная попытка клиента
Команда заказчика уже пыталась решить эту задачу самостоятельно. Они попробовали изменить шаблон списка товаров. Но добавление HTML-разметки испортило отображение товара в остальных местах сайта:
Кроме того, при последующем обновлении Битрикса24 доработка слетала.
План действий
Мы предложили другой подход, не ломающий вывод товаров в CRM и сохраняющий обновления:
-
добавить новый тип свойства для карточки CRM: визуальный редактор;
-
создать в CRM Счете множественное поле «Описание товара»;
-
при создании Счета (или добавлении в существующий новых товаров) копировать в это поле оригинальное описание товара;
-
при генерации PDF заменять оригинальное описание описанием из поля в CRM Счете;
-
повторить логику для CRM Сделок, Лидов и Предложений, учесть конвертацию сущностей.
Вели обсуждение и писали ТЗ сразу на английском, у нас и команды заказчика с этим не было проблем.
HTML-поле
Несмотря на всю мощь Битрикс24, в нем иногда не хватает простых вещей. Мы добавили свойство «HTML-текст».
Кастомное поле корректно отображается на отдельной странице и в выдвижной карточке Сделки/Лида. Пришлось решать множество конфликтов javascript визуального редактора и карточки CRM. Хотя оба компонента стандартные, мы потратили 10 часов, прежде чем удалось их “подружить”.
Изначально мы выводили описания для товаров в том-же порядке что и товары в списке. Это работало, пока мы не столкнулись с самопроизвольным переставлением товаров в счете (сюрприз Битрикс24). Чтобы предотвратить ошибки пользователя, перед каждым описанием вывели подсказку — название товара.
Наследование описаний из CRM карточки товара
Для наследования описаний товаров мы использовали частично документированные события сущностей Лид, Сделка, Предложение, Счет:
-
OnAfterCrm...Update
-
OnAfterCrm...ProductRowsSave
При конвертации сущностей (лид->компания) и выставлении (сделка ->счет) кастомизированные описания товаров сохраняются.
Кастомизация генератора PDF
Самая сложная часть работы.
Общая схема работы модуля Битрикс24 «Генератор документов»:
Нам пригодилось событие onBeforeProcessDocument, которое испускается сразу после работы встроенного провайдера данных. Обработчик получает список товаров, заменяет оригинальные описания кастомными и возвращает обратно в генератор. Но и тут не обошлось без проблем. Событие подходит для подмены простых полей (адрес, телефон, ИНН...), а у нас поле было множественное. Разработчики Битрикс24 знают о проблеме и планируют ее решить, но без точных сроков.
Итоговая схема работы генератора документов:
Заключение
Мы получили опыт сразу в немецком, английском и узнали больше о внутренней кухне генератора документов. Задача выполнена в срок и перенесена на бой без инцидентов.
Данная доработка — небольшая, штучная, но интересная. Мы готовы помочь вам в решении нетиповых проблем с коробочным Битрикс24.
Статьи по теме






- аренда команды (от 2 человек, не менее 3 месяцев);
- итерации с фиксированной ценой (1-3 месяца длительностью).
- регулярные онлайн-планерки с заказчиком;
- квалифицированных специалистов;
- организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
- полную прозрачность и регулярность отчетов о результатах.
- нагруженный интернет-магазин;
- личный кабинет;
- оптовые продажи — B2B-платформа;
- маркетплейс;
- технический аудит сайта;
- Битрикс24 — корпоративные HR-порталы;
- Битрикс24 — построение CRM-системы;
- Битрикс24 — личные кабинеты сотрудников;
- Битрикс24 — аудит портала;
- 1С — интеграция с другими системами;
- 1С — доработка системы;
- маркетинг — комплексное интернет-продвижение;
- маркетинг — продвижение для B2B.