# DOCX-шаблоны name: docx_report version: 19.0.1.0.0 author: Mk.Lab ### 1. Общее описание Модуль добавляет в Odoo систему DOCX-шаблонов для печати документов. Вместо стандартных HTML-отчётов пользователь загружает файл `.docx` с разметкой переменных — и система формирует готовый документ Word, подставляя данные из карточки записи. Модуль расширяет возможности базового `docx_report_generation`: добавляет интерфейс управления шаблонами, валидацию, кастомные переменные и привязку шаблонов к моделям. ### 2. Установка 1. Убедитесь что установлены модули `docx_report_generation`, `account`, `sale`, `l10n_ru_contract` 2. Установите Python-пакеты: `pip install docxtpl docxcompose beautifulsoup4` 3. Скопируйте папку `docx_report` в директорию `addons` 4. Перезапустите сервер Odoo 5. Обновите список приложений: **Настройки → Приложения → Обновить список** 6. Найдите модуль **«DOCX Templates»** и установите ### 3. Функциональность 3.1 Основные возможности: - Загрузка `.docx`-файла как шаблона отчёта для любой модели Odoo - Подстановка данных из записи через переменные `{{ object.field }}` - Условные конструкции `{% if %}` и циклы `{% for %}` в шаблоне - Кастомные переменные с произвольными Python-выражениями - Валидация шаблона: проверка синтаксиса и существования полей модели - Подсказки доступных полей выбранной модели прямо в форме шаблона - Привязка шаблона к форме записи через меню печати 3.2 Синтаксис шаблона: | Конструкция | Пример | Описание | |---|---|---| | Переменная | `{{ object.name }}` | Значение поля записи | | Связанное поле | `{{ object.partner_id.name }}` | Поле через Many2one | | Условие | `{% if object.amount > 0 %}...{% endif %}` | Условный вывод | | Цикл | `{% for line in object.line_ids %}...{% endfor %}` | Перебор строк | | Кастомная переменная | `{{ my_var }}` | Переменная из вкладки «Кастомные переменные» | | Дата | `{{ time.strftime('%d.%m.%Y') }}` | Текущая дата | 3.3 Меню: В главном меню появляется пункт **«Шаблоны для отчетов»** — список всех DOCX-шаблонов. ![img_1.png](img_1.png) ## Как это выглядит в интерфейсе Форма шаблона содержит основные поля, кнопку **«Валидация»** и две вкладки: **«Кастомные переменные»** и **«Доступные переменные»**. ![img_2.png](img_2.png) После привязки шаблона к модели в меню **⚙️ Печать** записи появляется дополнительный пункт с именем шаблона. ![img_3.png](img_3.png) ### Пример использования ### Создать шаблон Перейдите в меню **«Шаблоны для отчетов»**, нажмите **Создать**. Укажите название, загрузите `.docx`-файл, выберите модель документа. ![img_4.png](img_4.png) ### Проверить доступные поля На вкладке **«Доступные переменные»** выберите модель для подсказки — отобразится список всех полей с техническими именами и типами. Используйте их при создании шаблона. ![img_5.png](img_5.png) ### Добавить кастомную переменную (если нужно) На вкладке **«Кастомные переменные»** добавьте переменную: укажите техническое имя и Python-выражение для вычисления значения. ![img_6.png](img_6.png) ### Проверить шаблон Нажмите кнопку **«Валидация»** в шапке формы. Система проверит синтаксис и существование всех полей в шаблоне, отобразит результат. ![img_7.png](img_7.png) ### Привязать шаблон к модели Нажмите кнопку **«Добавить печать в действия»** — шаблон появится в меню ⚙️ Печать для записей выбранной модели. ![img_8.png](img_8.png) ### Распечатать документ Откройте нужную запись (договор, заказ и т.д.) → меню **⚙️ Печать** → выберите название шаблона. Файл `.docx` скачается автоматически. ![img_9.png](img_9.png)