Files
crm.clientright.ru/ИСПРАВЛЕНИЕ_ОТКРЫТИЯ_ФАЙЛОВ_ИЗ_CRM.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

4.3 KiB
Raw Blame History

Исправление открытия файлов из CRM

Дата: 31 октября 2025
Проблема: Файлы не открывались из CRM для редактирования в Nextcloud

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

Проблема 1: 7,295 старых файлов в корне Documents

Симптомы: Папка Documents очень долго открывается
Причина: В корне папки Documents находилось 7,295 старых файлов/папок (структура до миграции)

SELECT 
    CASE 
        WHEN path LIKE '%Project/%' THEN 'В Project (OK)'
        WHEN path LIKE '%Contacts/%' THEN 'В Contacts (OK)'
        WHEN path LIKE '%Accounts/%' THEN 'В Accounts (OK)'
        WHEN path LIKE '%HelpDesk/%' THEN 'В HelpDesk (OK)'
        WHEN path LIKE '%Invoice/%' THEN 'В Invoice (OK)'
        ELSE 'В корне Documents (ПЛОХО!)'
    END as location,
    COUNT(*) as count
FROM oc_filecache 
WHERE storage = 4 
  AND path LIKE 'crm2/CRM_Active_Files/Documents/%'
GROUP BY location;

Результат:

  • Project: 11,547 файлов
  • Contacts: 2,323 файлов
  • Accounts: 155 файлов
  • HelpDesk: 71 файлов
  • Invoice: 38 файлов
  • В корне Documents: 7,295 файлов

Решение: Рекомендуется не открывать корень Documents, а работать напрямую с подпапками:

  • Documents/Project/
  • Documents/Contacts/
  • Documents/Accounts/

Проблема 2: Неправильный редирект в open_file_v2.php

Симптомы: Файлы не открывались из CRM после редиректа
Причина: URL содержал лишний параметр dir=/:

// ❌ БЫЛО:
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?dir=/&editing=true&openfile=true';

// ✅ СТАЛО:
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?editing=true&openfile=true';

Файл: /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php

Изменение: Удалён параметр dir=/ из редиректа


Проверка работоспособности

Тест скрипта локально:

php -r "
\$_GET['fileName'] = 'https://s3.twcstorage.ru/.../Исковоеаявление_(проект)_395695.docx';
\$_GET['recordId'] = '395695';
require '/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php';
"

Результат:

Nextcloud Editor: PROPFIND -> https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/...
Nextcloud Editor: HTTP код: 207
Nextcloud Editor: Получен fileId: 86323
Nextcloud Editor: Redirect to https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true

Работает!

Тест редиректа:

curl -I "https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true" --user admin:office

Результат: HTTP/2 200


📋 Осталось сделать

Опционально (не срочно):

  1. Очистить старые файлы из корня Documents - переместить их в архив или удалить
  2. Настроить автоматическую очистку при миграции файлов
  3. Скрыть корень Documents в интерфейсе, если он не используется

Текущее состояние:

  • Файлы открываются из CRM
  • Редактирование работает
  • Collabora Online подключён
  • ⚠️ Корень Documents открывается медленно (7,295 объектов)
  • Подпапки открываются быстро

🎯 Итог

Главное исправление: Удалён лишний параметр dir=/ из URL редиректа

Файл изменён:

  • /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php (строка 102)

Статус: Работает