7.1 KiB
7.1 KiB
📋 Настройка шаблонов документов в Nextcloud
Дата: 2025-01-XX
Статус: ✅ Готово к использованию
🎯 Обзор
Для генерации документов из шаблонов используется гибридный подход:
- Шаблоны хранятся в Nextcloud в папке
/crm/Templates/ - Заполнение переменных происходит через PHPWord
- Готовый документ сохраняется в папку проекта и открывается в OnlyOffice
📁 Структура шаблонов
1. Создание папки для шаблонов
В Nextcloud создайте папку:
/crm/Templates/
Как создать:
- Зайдите в Nextcloud:
https://office.clientright.ru:8443 - Перейдите в папку
/crm/ - Создайте папку
Templates - Загрузите туда типовые документы
2. Формат шаблонов
Формат переменных в шаблонах:
Вариант 1: Простые переменные
{CLIENT_NAME}
{DATE}
{AMOUNT}
Вариант 2: Двойные фигурные скобки
{{CLIENT_NAME}}
{{DATE}}
{{AMOUNT}}
Пример шаблона претензии:
ПРЕТЕНЗИЯ
Кому: {RESPONDENT_NAME}
От: {CLIENT_NAME}
Дата: {DATE}
Текст претензии:
{CLAIM_TEXT}
Требования:
1. Возместить ущерб в размере {AMOUNT} рублей
2. {OTHER_REQUIREMENTS}
С уважением,
{CLIENT_NAME}
🔧 Использование API
Endpoint: /crm_extensions/file_storage/api/create_from_template.php
Параметры:
module- модуль CRM (Project, Contacts, etc.)recordId- ID записиrecordName- название записиfileName- имя создаваемого файлаtemplateName- имя шаблона из Nextcloud (например,pretenziya.docx)variables- JSON объект с переменными для заполнения
Пример запроса:
const url = `/crm_extensions/file_storage/api/create_from_template.php?` +
`module=Project&` +
`recordId=123456&` +
`recordName=Проект_1&` +
`fileName=Претензия_УК&` +
`templateName=pretenziya.docx&` +
`variables=${encodeURIComponent(JSON.stringify({
CLIENT_NAME: 'Иванов Иван Иванович',
DATE: '15.01.2025',
AMOUNT: '400000',
RESPONDENT_NAME: 'УК "Жилищник"',
CLAIM_TEXT: 'УК отказывается возмещать ущерб от залива квартиры...',
OTHER_REQUIREMENTS: 'Провести экспертизу'
}))}`;
window.location.href = url;
🚀 Интеграция с AI Drawer
Пример использования в n8n:
// После генерации текста AI
const aiResponse = {
document_type: 'pretenziya',
client_name: 'Иванов Иван Иванович',
amount: '400000',
claim_text: '...',
// ... другие данные
};
// Определяем шаблон по типу документа
const templateMap = {
'pretenziya': 'pretenziya.docx',
'isk': 'iskovoe_zayavlenie.docx',
'zhaloba': 'zhaloba.docx',
'hodataystvo': 'hodataystvo.docx'
};
const templateName = templateMap[aiResponse.document_type] || 'pretenziya.docx';
// Формируем переменные
const variables = {
CLIENT_NAME: aiResponse.client_name,
DATE: new Date().toLocaleDateString('ru-RU'),
AMOUNT: aiResponse.amount,
CLAIM_TEXT: aiResponse.claim_text,
// ... другие переменные
};
// Вызываем API создания документа
const createUrl = `https://crm.clientright.ru/crm_extensions/file_storage/api/create_from_template.php?` +
`module=Project&` +
`recordId=${projectId}&` +
`recordName=${projectName}&` +
`fileName=${fileName}&` +
`templateName=${templateName}&` +
`variables=${encodeURIComponent(JSON.stringify(variables))}`;
// Открываем документ
return { url: createUrl };
📝 Создание шаблонов
Рекомендации по созданию шаблонов:
-
Используйте стандартные названия:
pretenziya.docx- Претензияiskovoe_zayavlenie.docx- Исковое заявлениеzhaloba.docx- Жалобаhodataystvo.docx- Ходатайство
-
Структура документа:
- Шапка (кому, от кого, дата)
- Фабула (описание ситуации)
- Требования
- Ссылки на право
- Приложения
-
Переменные:
- Используйте понятные названия:
CLIENT_NAME,AMOUNT,DATE - Все переменные в верхнем регистре
- Обрамляйте фигурными скобками:
{VAR}или{{VAR}}
- Используйте понятные названия:
🔍 Отладка
Логи:
tail -f /var/log/apache2/error.log | grep "CREATE FROM TEMPLATE"
Проверка шаблона:
# Проверить наличие шаблона в Nextcloud
curl -u admin:office "https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/Templates/pretenziya.docx" -k -I
⚠️ Ограничения
- PHPWord работает только с DOCX файлами
- Для XLSX и PPTX используется простая замена текста
- Сложное форматирование (таблицы, изображения) может не сохраниться при простой замене
🎯 Альтернативные подходы
Вариант A: Использование DOCX шаблонов с закладками
Вместо переменных {VAR} можно использовать закладки Word:
- В Word: Вставка → Закладка
- Создать закладку с именем переменной
- PHPWord может заполнять закладки
Вариант B: Использование только локальных шаблонов
Если не нужна синхронизация через Nextcloud:
- Хранить шаблоны в
/crm_extensions/file_storage/templates/ - Использовать напрямую без WebDAV
Вариант C: Генерация через PDFMaker
Если документ должен быть в PDF:
- Создать DOCX из шаблона
- Конвертировать через PDFMaker
- Сохранить PDF в проект