Перейти к содержанию

Онлайн-просмотр файлов — Решение проблем

Аудитория: инженеры поддержки, администраторы площадок

Руководство по диагностике проблем с онлайн-просмотром и редактированием файлов в 1Форме. Охватывает ONLYOFFICE, Р7-Офис и встроенный просмотрщик.


1. Настройка по умолчанию: Скачать vs Просмотр

Проблема

При клике на файл MS Office происходит скачивание вместо онлайн-просмотра.

Причина

Действие при клике управляется настройкой FileOnClickActionMode на двух уровнях:

Уровень Где настраивается Приоритет
Пользователь Личные настройки пользователя → «Действие с файлами MS Office при клике» Высший (если не «По умолчанию»)
Общие настройки Кастомные настройки приложения (sys_user) Применяется, когда у пользователя стоит «По умолчанию»

Значения FileOnClickActionMode (колонка Users.FileOnClickActionMode, тип int):

Значение Код Описание
0 Download Скачать файл
1 ShowInOfficeOnlineEditor Открыть для просмотра в веб-интерфейсе
2 EditInWebDav Открыть для редактирования в десктопном приложении (WebDav)
3 Default По умолчанию (берётся из общих настроек)

Типичный сценарий

У пользователя стоит Default (3) → система берёт значение из общих настроек → там стоит Download (0) → файл скачивается.

Диагностика

-- Проверить настройку конкретного пользователя
SELECT UserID, Login, FileOnClickActionMode
FROM Users
WHERE UserID = {userId};

-- Массовая проверка: сколько пользователей на каком режиме
SELECT FileOnClickActionMode, COUNT(*) AS Cnt
FROM Users
GROUP BY FileOnClickActionMode;

Решение

  1. Изменить настройку конкретного пользователя через UI: Настройки пользователя → «Действие с файлами MS Office при клике» → «Открыть для просмотра в веб-интерфейсе».
  2. Изменить общую настройку для всех пользователей с режимом «По умолчанию»: Администрирование → Кастомные настройки приложения.

2. ONLYOFFICE / Р7-Офис не отвечает

2.1 DNS resolution в Docker

Симптом: «онлайн просмотр периодически не работает — падает ошибка резолва DNS». Ошибка появляется нестабильно, может проходить и возвращаться.

Причина: сервер приложения 1Ф обращается к ONLYOFFICE по внутреннему hostname. Если ONLYOFFICE запущен в Docker, контейнер 1Ф (или хост) может не резолвить hostname ONLYOFFICE-сервера через стандартный DNS.

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

  1. Проверить, какой serverAddress указан в настройке OfficeOnlineEditor:

    SELECT [Key], [Value]
    FROM SettingsCustom
    WHERE [Key] = 'OfficeOnlineEditor';
    

  2. С сервера приложения 1Ф проверить доступность ONLYOFFICE:

    # Проверка DNS resolution
    nslookup <hostname-из-serverAddress>
    
    # Проверка доступности
    curl -I <serverAddress>
    

  3. Если ONLYOFFICE в Docker — проверить сетевую конфигурацию контейнера:

    docker inspect <container_name> | grep -A 20 "Networks"
    

Решение:

Добавить extra_hosts в docker-compose.yml контейнера, который обращается к ONLYOFFICE (или наоборот):

services:
  app:
    extra_hosts:
      - "onlyoffice.local:192.168.1.100"

Либо указать IP-адрес вместо hostname в serverAddress:

{"editor": "OnlyOffice", "settings": {"serverAddress": "https://192.168.1.100/office"}}

Альтернативы: - Использовать Docker bridge network для обоих контейнеров (если оба в Docker) - Настроить DNS-сервер внутренней сети для резолва hostname

2.2 Сервер ONLYOFFICE недоступен

Симптом: документы не открываются в онлайн-редакторе, ошибка в консоли браузера при загрузке iframe.

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

  1. Проверить serverAddress (см. SQL выше).
  2. С сервера 1Ф — curl -I <serverAddress>.
  3. Проверить, запущен ли контейнер/сервис ONLYOFFICE:
    docker ps | grep -i office
    systemctl status onlyoffice
    
  4. Проверить логи ONLYOFFICE:
    docker logs <onlyoffice-container> --tail 100
    

Решение: перезапустить контейнер/сервис, проверить сертификаты, проверить firewall.

2.3 Неверная конфигурация OfficeOnlineEditor

Симптом: редактор не открывается или открывается в неожиданном режиме.

Что проверить:

Параметр Что проверить
editor Версия <= 2.264: "r7" для OnlyOffice. Версия >= 2.265: "onlyOffice" для OnlyOffice, "r7" только для Р7-Офис. Также допустимо: "webApps"
serverAddress URL доступен с сервера 1Ф
allowedIPs IP сервера 1Ф входит в список (или список пуст)
Secret в appsettings.json Секция R7Secret задан и соответствует серверу
-- Проверка текущей конфигурации
SELECT [Key], [Value]
FROM SettingsCustom
WHERE [Key] = 'OfficeOnlineEditor';

Корректный формат ключа:

{"editor": "onlyOffice", "settings": {"serverAddress": "https://domain/office", "allowedIPs": []}}


3. Ошибки при открытии конкретных форматов

3.1 Старый формат .doc / .xls / .ppt

Симптом: файлы старых форматов Office не открываются или открываются с ошибками.

Причина: ONLYOFFICE / Р7-Офис поддерживает преимущественно новые форматы (.docx, .xlsx, .pptx). Старые форматы (.doc, .xls, .ppt) могут открываться с ограничениями.

Решение: - Конвертировать файлы в новые форматы - Скачать и открыть локально

3.2 Файлы из .eml — ArgumentNullException: fileKey

Симптом: System.ArgumentNullException: fileKey или ArgumentException: Invalid key (tus:...) при открытии office-документа из вложения .eml файла.

Причина: До версии 2.266.554 код OfficeOnlineEditorsService не поддерживал TUS-ключи (tempfile:tus:...) при работе с email-вложениями. Задача .

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

  1. Проверить версию системы.
  2. Проверить логи:
    grep -i "Invalid key" logs/uniform-api.log
    grep -i "ArgumentException\|ArgumentNullException" logs/tcclasslib.log
    

Решение: - Версия < 2.266.554 → обновить систему. Это критичное исправление. - Версия >= 2.266.554 → проверить настройки TUS в appsettings.json и работу job CleanExpiredFilesFromPreuploadedTusStoreJob.

Временное решение (для версий < 2.266.554): скачать файл и открыть локально.

3.3 Ограничение CE: 20 одновременных сессий

Симптом: документ открывается только в режиме просмотра, хотя у пользователя есть права на редактирование. Проблема проявляется при большом числе одновременных пользователей.

Причина: ONLYOFFICE Community Edition ограничивает число одновременных сессий редактирования — максимум 20 вкладок. При превышении все последующие подключения переходят в read-only.

Диагностика: - Проверить нагрузку на ONLYOFFICE: сколько пользователей одновременно работают. - Логи ONLYOFFICE: ограничение фиксируется в логах сервера.

Решение: - Для > 20 одновременных редакторов: перейти на Enterprise-версию ONLYOFFICE или Р7-Офис - Кластеризация CE не поддерживается. Можно запустить несколько независимых реплик, но при совместном редактировании одного документа возможна рассинхронизация

3.4 PDF не открывается в ONLYOFFICE

Симптом: PDF не открывается или открывается с ошибками в онлайн-редакторе.

Что проверить: - Поддерживает ли установленная версия ONLYOFFICE / Р7-Офис формат PDF - PDF-файлы открываются встроенным просмотрщиком 1Ф (без ONLYOFFICE). Если встроенный просмотрщик не работает — проблема на стороне браузера


4. Диагностика

4.1 Логи

Лог Что содержит
logs/uniform-api.log Ошибки API: R7Controller, FilesController, wopi-link
logs/tcclasslib.log Ошибки OfficeOnlineEditorsService: формат ключей, доступ к файлам
Консоль браузера Ошибки загрузки iframe, CORS, сетевые ошибки
Docker-логи ONLYOFFICE Внутренние ошибки сервера документов

Типичные ошибки в логах:

Ошибка Причина Решение
ArgumentException: Invalid key (tus:...) Версия < 2.266.554, TUS-ключи не поддерживаются Обновление системы
ArgumentNullException: fileKey fileKey не передан (null/empty) Проверить источник файла, логи
NotFoundException: Preuploaded file not found Файл в PreUploadedFiles отсутствует или истёк Проверить TTL, job очистки
UnauthorizedException: Access denied Нет прав на файл Проверить права пользователя
DNS resolution error Hostname ONLYOFFICE не резолвится См. секцию 2.1

4.2 Проверка конфигурации

-- 1. Настройки редактора
SELECT [Key], [Value]
FROM SettingsCustom
WHERE [Key] = 'OfficeOnlineEditor';

-- 2. Тип редактора
SELECT JSON_VALUE([Value], '$.editor') AS Editor,
       JSON_VALUE([Value], '$.settings.serverAddress') AS ServerAddress
FROM SettingsCustom
WHERE [Key] = 'OfficeOnlineEditor';

-- 3. Настройка действия при клике на файл (конкретный пользователь)
SELECT UserID, Login, FileOnClickActionMode
FROM Users
WHERE Login = '{login}';

-- 4. Preupload-файлы (диагностика проблем с eml)
SELECT ID, FileName, DateUploaded, UserID, DATALENGTH(FileContent) AS SizeBytes
FROM PreUploadedOnPostTaskFiles
WHERE ID = {id};

-- 5. Просроченные preupload-файлы (> 24 часа)
SELECT COUNT(*) AS ExpiredFiles
FROM PreUploadedOnPostTaskFiles
WHERE DateUploaded < DATEADD(HOUR, -24, GETDATE());

4.3 Проверка доступности сервера

# С сервера 1Ф:
curl -I <serverAddress-из-OfficeOnlineEditor>

# Проверка конфигурации через API 1Ф:
curl -s -H "1F-Pat: <token>" "https://<instance>/api/r7/config"

# Если ONLYOFFICE в Docker:
docker ps | grep -i office
docker logs <container> --tail 50

4.4 Чеклист для эскалации

Что приложить в тикет разработчикам:

  1. Версия платформы
  2. Значение OfficeOnlineEditor из CustomSettings (без секретов)
  3. Результат curl -I <serverAddress> с сервера 1Ф
  4. Логи uniform-api.log и tcclasslib.log в момент ошибки
  5. Скриншот ошибки из консоли браузера
  6. Формат и источник файла (ДП, комментарий, Диск, eml-вложение)