Files
crm.clientright.ru/crm_extensions/file_storage/docs/ONLYOFFICE_TEMPLATES_ANALYSIS.md

6.4 KiB
Raw Blame History

🔍 Анализ системы шаблонов ONLYOFFICE в Nextcloud

Дата: 2025-01-XX
Статус: Найдено решение

🎯 Проблема

В настройках ONLYOFFICE видно раздел "Общие шаблоны" с шаблоном:

  • Соглашение_№_71_06_об_оказании_юридической_помощи_от_01_10_2025_года.docx

Но при попытке получить список через API Nextcloud Direct Editing - шаблоны не возвращаются.

🔬 Диагностика

1. Проверка папки Templates

Найдено: Папка /Templates/ существует в корне пользователя admin

Содержимое:

  • Стандартные шаблоны Nextcloud (ODT, ODS, ODP)
  • Различные типы документов (Letter, Invoice, Resume и т.д.)

WebDAV путь:

https://office.clientright.ru:8443/remote.php/dav/files/admin/Templates/

2. Структура шаблонов ONLYOFFICE

ONLYOFFICE использует два типа шаблонов:

  1. Стандартные шаблоны Nextcloud (/Templates/)

    • Доступны через WebDAV
    • Форматы: ODT, ODS, ODP
    • Стандартные шаблоны из коробки
  2. Общие шаблоны ONLYOFFICE (General Templates)

    • Хранятся в специальной системе ONLYOFFICE
    • Могут быть в формате DOCX, XLSX, PPTX
    • Управляются через интерфейс настроек ONLYOFFICE
    • Могут храниться в базе данных или специальной папке

3. Где хранятся "Общие шаблоны" ONLYOFFICE?

Варианты хранения:

Вариант A: В базе данных Nextcloud

  • ONLYOFFICE может хранить метаданные шаблонов в БД
  • Файлы могут быть в специальной папке приложения

Вариант B: В папке приложения ONLYOFFICE

  • Возможно: /apps/onlyoffice/templates/
  • Или: /data/admin/files/Templates/ (но это обычная папка)

Вариант C: В специальной папке ONLYOFFICE

  • Может быть скрытая папка или папка с особыми правами
  • Возможно, в корне пользователя, но с особым флагом

Решение

Подход 1: Использовать WebDAV для получения всех шаблонов

Текущее решение работает:

  • Скрипт list_templates.php получает список файлов из /Templates/
  • Можно использовать для стандартных шаблонов

Ограничение:

  • Не получает "Общие шаблоны" ONLYOFFICE, если они хранятся отдельно

Подход 2: Добавить шаблоны в папку Templates

Рекомендация:

  1. Скачать шаблон "Соглашение..." из настроек ONLYOFFICE
  2. Загрузить его в папку /Templates/ через WebDAV или веб-интерфейс
  3. Теперь он будет доступен через наш API

Преимущества:

  • Единая точка доступа ко всем шаблонам
  • Работает через WebDAV (стандартный протокол)
  • Не зависит от внутренней структуры ONLYOFFICE

Подход 3: Использовать API ONLYOFFICE напрямую (если доступен)

Проверка:

# Попытка получить шаблоны через ONLYOFFICE API
curl "https://office.clientright.ru:8443/index.php/apps/onlyoffice/ajax/templates"

Статус: Не работает (возвращает 404)

📝 Рекомендации

Для использования шаблонов:

  1. Создать папку /crm/Templates/ для наших шаблонов:

    • Хранить типовые документы (претензии, иски, жалобы)
    • Использовать формат DOCX с переменными {VAR_NAME}
  2. Использовать существующую папку /Templates/:

    • Добавить туда наши шаблоны
    • Использовать наш API для получения списка
  3. Для "Общих шаблонов" ONLYOFFICE:

    • Экспортировать их из настроек ONLYOFFICE
    • Загрузить в папку /Templates/ или /crm/Templates/
    • Использовать через наш API

🔧 Обновленные скрипты

list_templates.php

  • Исправлен путь на /Templates/ (корень пользователя)
  • Работает с WebDAV PROPFIND
  • Возвращает список всех Office файлов

create_from_template.php

  • Исправлен путь на /Templates/{templateName}
  • Скачивает шаблон через WebDAV
  • Заполняет переменные через PHPWord
  • Сохраняет готовый документ

🎯 Выводы

  1. Шаблоны ONLYOFFICE хранятся в папке /Templates/ в корне пользователя
  2. "Общие шаблоны" ONLYOFFICE могут быть в той же папке или в специальной системе
  3. Наш подход через WebDAV работает для всех шаблонов в папке /Templates/
  4. Рекомендуется: Добавить наши шаблоны в /Templates/ или создать /crm/Templates/ для наших документов

📚 Следующие шаги

  1. Проверить, есть ли шаблон "Соглашение..." в папке /Templates/
  2. Если нет - экспортировать из настроек ONLYOFFICE и загрузить в папку
  3. Протестировать получение списка через list_templates.php
  4. Использовать шаблоны через create_from_template.php