diff --git a/check_nextcloud_apps.php b/check_nextcloud_apps.php
new file mode 100644
index 00000000..4ec40856
--- /dev/null
+++ b/check_nextcloud_apps.php
@@ -0,0 +1,143 @@
+ "$baseUrl/ocs/v2.php/cloud/apps?filter=enabled",
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
+ CURLOPT_USERPWD => "$username:$password",
+ CURLOPT_HTTPHEADER => ['OCS-APIRequest: true', 'Accept: application/json'],
+]);
+$response = curl_exec($ch);
+$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+curl_close($ch);
+
+echo "HTTP Status: $httpCode\n";
+if ($httpCode == 200) {
+ $data = json_decode($response, true);
+ if (isset($data['ocs']['data']['apps'])) {
+ $apps = $data['ocs']['data']['apps'];
+ echo "Найдено приложений: " . count($apps) . "\n\n";
+
+ // Ищем редакторы
+ $editors = [];
+ foreach ($apps as $app) {
+ if (stripos($app, 'office') !== false ||
+ stripos($app, 'collabora') !== false ||
+ stripos($app, 'richdocuments') !== false ||
+ stripos($app, 'onlyoffice') !== false) {
+ $editors[] = $app;
+ }
+ }
+
+ if (!empty($editors)) {
+ echo "📝 Найдены редакторы документов:\n";
+ foreach ($editors as $editor) {
+ echo " - $editor\n";
+ }
+ } else {
+ echo "⚠️ Редакторы документов не найдены!\n";
+ }
+
+ echo "\n📋 Все приложения:\n";
+ foreach (array_slice($apps, 0, 20) as $app) {
+ echo " - $app\n";
+ }
+ if (count($apps) > 20) {
+ echo " ... и ещё " . (count($apps) - 20) . " приложений\n";
+ }
+ }
+} else {
+ echo "Ошибка получения списка приложений\n";
+ echo "Response: $response\n";
+}
+
+// 2. Проверяем конкретные редакторы
+echo "\n\n2. Проверяем доступность конкретных редакторов...\n";
+
+$editors_to_check = [
+ 'richdocuments' => "$baseUrl/apps/richdocuments",
+ 'onlyoffice' => "$baseUrl/apps/onlyoffice",
+ 'files_texteditor' => "$baseUrl/apps/files_texteditor",
+];
+
+foreach ($editors_to_check as $name => $url) {
+ $ch = curl_init();
+ curl_setopt_array($ch, [
+ CURLOPT_URL => $url,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_NOBODY => true,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
+ CURLOPT_USERPWD => "$username:$password",
+ ]);
+ curl_exec($ch);
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+
+ $status = $httpCode == 200 ? '✅ Доступен' : '❌ Недоступен';
+ echo " $name: $status (HTTP $httpCode)\n";
+}
+
+// 3. Проверяем fileId для тестового документа
+echo "\n\n3. Проверяем fileId для документа 395695...\n";
+$ncPath = '/crm/crm2/CRM_Active_Files/Documents/395695/zayavlenie_proekt.docx';
+$webdavUrl = "$baseUrl/remote.php/dav/files/admin" . $ncPath;
+
+$ch = curl_init();
+curl_setopt_array($ch, [
+ CURLOPT_URL => $webdavUrl,
+ CURLOPT_CUSTOMREQUEST => 'PROPFIND',
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HTTPHEADER => [
+ 'Depth: 0',
+ 'Content-Type: application/xml; charset=utf-8',
+ ],
+ CURLOPT_POSTFIELDS => '
+
+
+
+
+
+
+ ',
+ CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
+ CURLOPT_USERPWD => "$username:$password",
+]);
+$response = curl_exec($ch);
+$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+curl_close($ch);
+
+echo "HTTP Status: $httpCode\n";
+if ($httpCode == 207) {
+ // Парсим XML
+ $xml = simplexml_load_string($response);
+ $namespaces = $xml->getNamespaces(true);
+
+ foreach ($xml->xpath('//oc:fileid') as $fileid) {
+ echo "FileID: $fileid\n";
+ }
+ foreach ($xml->xpath('//oc:size') as $size) {
+ echo "Size: $size bytes\n";
+ }
+ foreach ($xml->xpath('//d:getcontenttype') as $type) {
+ echo "Content-Type: $type\n";
+ }
+} else {
+ echo "Ошибка получения fileId\n";
+ echo "Response: " . substr($response, 0, 500) . "\n";
+}
+
+echo "\n=== Проверка завершена ===\n";
+
diff --git a/crm_extensions/nextcloud_editor/js/nextcloud-editor.js b/crm_extensions/nextcloud_editor/js/nextcloud-editor.js
index 8991abf8..8efe0444 100644
--- a/crm_extensions/nextcloud_editor/js/nextcloud-editor.js
+++ b/crm_extensions/nextcloud_editor/js/nextcloud-editor.js
@@ -81,14 +81,16 @@ function createEditUrls(baseEditUrl, recordId, fileName, fileId = 662) {
const filePath = `/crm/crm2/CRM_Active_Files/Documents/${recordId}/${encodedFileName}`;
const urls = {
- 'correct_path': fileId ? `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&editing=false&openfile=true` : `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
+ 'correct_path': fileId ? `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=true` : `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'collabora_path': `${baseUrl}/apps/richdocuments/open?path=${filePath}`,
'onlyoffice_path': `${baseUrl}/apps/onlyoffice/open?path=${filePath}`,
'files_manager': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'collabora_id': fileId ? `${baseUrl}/apps/richdocuments/index?fileId=${fileId}` : null,
'onlyoffice_id': fileId ? `${baseUrl}/apps/onlyoffice?fileId=${fileId}` : null,
'files_app': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}&action=edit`,
- 'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}`
+ 'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}`,
+ 'download_direct': `${baseUrl}/remote.php/dav/files/admin${filePath}`,
+ 'view_only': `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=true&view=1`
};
// Убираем null значения
diff --git a/simple_test.html b/simple_test.html
new file mode 100644
index 00000000..cb2ed552
--- /dev/null
+++ b/simple_test.html
@@ -0,0 +1,80 @@
+
+
+
+
+ Простой тест Nextcloud
+
+
+
+ Простой тест открытия документа 395695
+
+ Показать варианты открытия
+
+
+
+
×
+
Варианты открытия файла zayavlenie_proekt.docx
+
+
+ 📁 Files App (показать файл)
+ ⬇️ Скачать файл
+ 👁️ Просмотр (если поддерживается)
+
+
+
+
+
+
+
+
+
+
diff --git a/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf b/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf
new file mode 100644
index 00000000..e514a73a
Binary files /dev/null and b/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf differ
diff --git a/test_nc_open.html b/test_nc_open.html
new file mode 100644
index 00000000..6155488e
--- /dev/null
+++ b/test_nc_open.html
@@ -0,0 +1,38 @@
+
+
+
+
+ Тест открытия Nextcloud
+
+
+ Тест открытия документа 395695
+
+ Вариант 1: Files App (текущий по умолчанию)
+
+ Открыть через Files App
+
+
+ Вариант 2: Прямая ссылка на редактор (если установлен Collabora)
+
+ Открыть через Collabora (richdocuments)
+
+
+ Вариант 3: OnlyOffice (если установлен)
+
+ Открыть через OnlyOffice
+
+
+
+
+ Инструкция:
+
+ Кликни на каждую ссылку
+ Засеки время открытия
+ Посмотри, какой редактор открывается
+ Сообщи, какой вариант работает быстрее
+
+
+ Текущая настройка: используется "Files App", который сначала показывает файловый менеджер, а потом только предлагает открыть редактор. Варианты 2 и 3 должны открывать редактор сразу.
+
+
+
diff --git a/test_nextcloud_speed.html b/test_nextcloud_speed.html
new file mode 100644
index 00000000..091d51df
--- /dev/null
+++ b/test_nextcloud_speed.html
@@ -0,0 +1,129 @@
+
+
+
+
+ Тест скорости Nextcloud
+
+
+
+ 🧪 Тест скорости открытия Nextcloud для документа 395695
+
+
+
Вариант 1: Прямая ссылка на файл (Files App)
+
Открыть Files App
+
+
+
+
+
Вариант 2: Через Collabora/Richdocuments
+
Открыть Collabora
+
+
+
+
+
Вариант 3: Через OnlyOffice
+
Открыть OnlyOffice
+
+
+
+
+
Вариант 4: Проверка существования файла
+
Проверить файл WebDAV
+
+
+
+
+
+
+
+