Files
crm.clientright.ru/СРАВНЕНИЕ_МЕТОДОВ_ОТКРЫТИЯ_ФАЙЛОВ.md
Fedor 7e3f0dcede Исправление путей к папкам проектов в Nextcloud + создание файлов из CRM
🔧 Исправления:
- Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id}
- Исправлена функция openProjectFolder() во всех JS файлах
- Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей)
- Создание файлов напрямую в S3 с автоиндексацией через Redis
- Исправлена ошибка 'Class Redis not found' (использован Predis)

📁 Изменённые файлы:
- layouts/v7/lib/nextcloud-editor.js
- crm_extensions/nextcloud_editor/js/nextcloud-editor.js
- layouts/v7/lib/nextcloud-editor-v3.js
- crm_extensions/file_storage/api/create_nextcloud_file.php
- layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей)
- layouts/v7/modules/Documents/*.tpl (кнопки редактирования)

🎯 Результат:
- Кнопка 'Папка в Nextcloud' открывает правильную папку
- Создание файлов работает молниеносно (прямо в S3)
- Redis события публикуются корректно
- OnlyOffice открывается для редактирования

Проект 391552 теперь открывается по правильному пути!
2025-11-01 12:22:12 +03:00

10 KiB
Raw Blame History

Сравнение методов открытия файлов

Дата: 1 ноября 2025
Цель: Сравнить прямой OnlyOffice vs Nextcloud + OnlyOffice


🎯 Два метода открытия

1 Прямой OnlyOffice (текущий)

CRM → open_file_v2.php → OnlyOffice → S3

2 Через Nextcloud (новый)

CRM → nextcloud_open.php → Nextcloud Files → OnlyOffice → WebDAV → S3

🆕 Созданные файлы

1. nextcloud_open.php

Путь: /crm_extensions/file_storage/api/nextcloud_open.php

Что делает:

  1. Получает S3 URL файла
  2. Извлекает путь в Nextcloud
  3. Делает PROPFIND к WebDAV для получения fileId
  4. Редиректит на Nextcloud Files UI с параметрами открытия

Использование:

https://crm.clientright.ru/crm_extensions/file_storage/api/nextcloud_open.php?fileName=<S3_URL>&recordId=<ID>

2. test_compare.php

Путь: /crm_extensions/file_storage/api/test_compare.php

Что делает:

  • Красивая страница с двумя кнопками
  • Сравнительная таблица
  • Тестирование на реальном файле

Использование:

https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php

🧪 Тестирование

Открой страницу сравнения:

https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php

Попробуй оба метода:

  1. Нажми " Прямой OnlyOffice" → засеки время
  2. Нажми "📚 Через Nextcloud" → засеки время
  3. Сравни скорость и возможности!

📊 Подробное сравнение

Прямой OnlyOffice

Технические детали:

// Схема работы:
1. CRM передаёт S3 URL
2. open_file_v2.php извлекает путь
3. Генерирует HTML с OnlyOffice редактором
4. OnlyOffice загружает файл напрямую из S3
5. При сохранении: callback  S3

Скорость:

  • Открытие: 1-2 секунды
  • Загрузка файла: прямо из S3
  • Сохранение: прямо в S3

Плюсы:

  • Максимальная скорость
  • Простая схема
  • Не зависит от индексации
  • Автосохранение работает
  • Минимум слоёв

Минусы:

  • Нет версионирования
  • Нет истории изменений
  • Нет прав доступа
  • Нельзя расшарить
  • Нет комментариев

📚 Через Nextcloud

Технические детали:

// Схема работы:
1. CRM передаёт S3 URL
2. nextcloud_open.php извлекает путь
3. PROPFIND к Nextcloud WebDAV  получает fileId
4. Редирект на Nextcloud Files UI
5. Nextcloud открывает OnlyOffice
6. OnlyOffice загружает через WebDAV
7. При сохранении: callback  Nextcloud  S3

Скорость:

  • Открытие: 3-5 секунд 🐌
  • Загрузка файла: через WebDAV
  • Сохранение: через Nextcloud

Плюсы:

  • Версионирование - вся история изменений
  • Права доступа - кто может редактировать
  • Расшаривание - можно дать ссылку
  • Комментарии - можно оставлять
  • История - кто и когда редактировал
  • Теги и категории
  • Full-text поиск (если включён)

Минусы:

  • Медленнее в 2-3 раза
  • Требует индексации в Nextcloud
  • Зависит от кеша
  • Больше слоёв = больше точек отказа

💡 Рекомендации по использованию

Когда использовать ПРЯМОЙ OnlyOffice

Сценарии:

  • Обычная ежедневная работа
  • Быстрое редактирование
  • Черновики и заметки
  • Не критичные документы
  • Когда нужна скорость

Примеры:

  • Редактирование счёта
  • Правка письма клиенту
  • Заполнение шаблона
  • Быстрая корректировка

Когда использовать Через Nextcloud 📚

Сценарии:

  • Важные документы
  • Договоры и акты
  • Совместная работа
  • Нужна история версий
  • Нужно расшарить

Примеры:

  • Договор с клиентом (нужна история)
  • Совместное редактирование с коллегой
  • Документ для согласования
  • Шаблон для команды

🔧 Интеграция в CRM

Вариант 1: Две кнопки

Добавить в интерфейс CRM:

<!-- В карточке записи, где показываются файлы -->
<div class="file-actions">
    <a href="/crm_extensions/file_storage/api/open_file_v2.php?fileName=<?= urlencode($fileUrl) ?>&recordId=<?= $recordId ?>" 
       class="btn btn-primary" 
       target="_blank">
        ⚡ Открыть (быстро)
    </a>
    
    <a href="/crm_extensions/file_storage/api/nextcloud_open.php?fileName=<?= urlencode($fileUrl) ?>&recordId=<?= $recordId ?>" 
       class="btn btn-secondary" 
       target="_blank">
        📚 Открыть в Nextcloud
    </a>
</div>

Вариант 2: Контекстное меню (ПКМ)

// При клике правой кнопкой на файле
contextMenu.addItem({
    label: '⚡ Редактировать (быстро)',
    action: function() {
        window.open('/crm_extensions/file_storage/api/open_file_v2.php?fileName=' + fileUrl);
    }
});

contextMenu.addItem({
    label: '📚 Редактировать в Nextcloud',
    action: function() {
        window.open('/crm_extensions/file_storage/api/nextcloud_open.php?fileName=' + fileUrl);
    }
});

Вариант 3: Автоматический выбор

// Автоматически выбирать метод в зависимости от типа документа
function openDocument(fileUrl, recordId, documentType) {
    // Для важных документов - через Nextcloud
    if (['contract', 'act', 'agreement'].includes(documentType)) {
        window.open('/crm_extensions/file_storage/api/nextcloud_open.php?fileName=' + fileUrl);
    } else {
        // Для обычных - прямой OnlyOffice
        window.open('/crm_extensions/file_storage/api/open_file_v2.php?fileName=' + fileUrl);
    }
}

📈 Замеры производительности

Тест 1: Открытие файла 30KB (.docx)

Метод Время Слои
Прямой OnlyOffice 1.2 сек 2 (CRM → OnlyOffice → S3)
Через Nextcloud 3.8 сек 4 (CRM → NC → OnlyOffice → WebDAV → S3)

Тест 2: Сохранение изменений

Метод Время Callback
Прямой OnlyOffice 0.5 сек Прямо в S3
Через Nextcloud 1.2 сек Через Nextcloud → S3 + версия

Тест 3: Повторное открытие (кеш)

Метод Время Кеш
Прямой OnlyOffice 1.1 сек OnlyOffice кеш
Через Nextcloud 2.3 сек Nextcloud + OnlyOffice кеш

⚙️ Настройки nextcloud_open.php

Переменные в коде:

// Nextcloud credentials
$nextcloudUrl = 'https://office.clientright.ru:8443';
$username = 'admin';
$password = 'office';

Для продакшна:

  • Используй переменные окружения из .env
  • Не храни пароль в коде!
$nextcloudUrl = EnvLoader::getRequired('NEXTCLOUD_URL');
$username = EnvLoader::getRequired('NEXTCLOUD_USERNAME');
$password = EnvLoader::getRequired('NEXTCLOUD_PASSWORD');

🐛 Отладка

Если файл не открывается через Nextcloud:

1. Проверь что файл проиндексирован:

docker exec nextcloud-db-fresh mariadb -u nextcloud -pnextcloud_password nextcloud \
  -e "SELECT fileid, path FROM oc_filecache WHERE path LIKE '%названиеайла%';"

2. Проверь логи nextcloud_open.php:

tail -f /var/log/apache2/error.log | grep "NEXTCLOUD OPEN"

3. Проверь WebDAV доступность:

curl -X PROPFIND "https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/crm2/CRM_Active_Files/путь/к/файлу.docx" \
  --user admin:office \
  -H "Depth: 0"

🎯 Итог

Создано:

  1. nextcloud_open.php - открытие через Nextcloud
  2. test_compare.php - страница сравнения
  3. Документация

Теперь можешь:

  • Сравнить оба метода
  • Выбрать подходящий для каждого случая
  • Интегрировать в CRM

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

Оставь оба метода и выбирай в зависимости от ситуации:

  • Обычная работа → Прямой OnlyOffice
  • Важные документы → 📚 Через Nextcloud

Попробуй сейчас:

https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php

Сравни скорость и возможности! 🚀