# Файлы и Диск — Решение проблем

Руководство по разбору проблем с файлами и Диском: загрузка, скачивание, права, OnlyOffice/R7/WebApps, провайдеры, удаление, изображения, TUS, API и файловые ДП. Разделы организованы по типам проблем; для каждого указаны симптом, что проверить и решение.

## Как пользоваться этим документом

Секции организованы по типам проблем. Для каждой:

1. **Симптом** — что описывает пользователь
2. **Что проверить** — шаги диагностики
3. **Решение** — что сделать
4. **Когда обращаться в поддержку 1Ф** — если проблему не удаётся решить на месте

---

**1. Загрузка файлов**

Одна из самых частых тем. Ошибки при загрузке, ограничения размера и расширений.

**1.1 Ошибка при загрузке файла**

**Симптом:** при попытке приложить файл к задаче или комментарию — ошибка. Может быть 500, таймаут, или «невозможно загрузить».

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

- Размер файла — не превышает ли лимит (настройка `MaxFileSize` в общих настройках)
- Расширение файла — не попадает ли в список запрещённых расширений (настройка категории)
- ДП «Файл» — если загрузка в ДП, проверить настройку «Ограничения» (только изображения, допустимые расширения, макс. размер)
- Мультифайл — если ДП без мультифайла, повторная загрузка заменяет существующий файл
- Файловый провайдер — доступен ли активный провайдер

**Решение:**

- Проверить настройку максимального размера: Общие настройки → Файлы
- Проверить запрещённые расширения: Категория → Настройки → Запрещённые расширения
- Если ошибка 500 — проверить журнал ошибок, скорее всего проблема провайдера

> **Запрещённые расширения — проверяются все сегменты имени.** Список запрещённых расширений сверяется со всеми частями имени файла после точек, а не только с последней. Имя вида `payload.exe.pdf` отклоняется, если в запрете есть `exe` — хотя формально расширение у него `pdf`.

**1.2 Максимальный размер файла — где настроить**

**Симптом:** «где регулируется максимальный размер файла?», «увеличить допустимый размер файла для загрузки».

**Решение:**

- Общий лимит: Общие настройки приложения → Файлы → `MaxFileSize`
- На уровне ДП: настройка ДП «Файл» → Ограничения → Макс. размер
- На уровне веб-сервера: лимит в nginx/IIS (requestFiltering → maxAllowedContentLength)
- Для комментариев: отдельная настройка ограничения размера вложений

**1.3 Запрещённые расширения не работают для встреч**

**Симптом:** настройка «Запрещённые расширения» не отслеживает вложения во встречах.

**Решение:** известное ограничение — запрещённые расширения применяются только к задачам, а не к мероприятиям/встречам. Пока обходного решения нет.

**1.4 Не добавляет расширения png/jpg для ДП «Файл»**

**Симптом:** при настройке ДП «Файл» в режиме «Только изображения» — не принимает файлы png/jpg.

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

- Настройку ДП → Ограничения → «Только изображения» и/или «Допустимые расширения»
- Не конфликтуют ли настройки между собой

**1.5 Ошибка загрузки больших файлов (PG)**

**TUS-загрузка после ошибки начинается заново или не продолжается**

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

**Что проверить:** включена ли предварительная загрузка TUS на площадке — настройка описана в [Диск → Администрирование](https://help.1forma.ru/domains/disk/admin.md); дождалась ли загрузка терминальной ошибки и появился ли у файла элемент «Повторить» (если соединение восстановлено до появления ошибки, дождитесь результата автоматических повторов); повторяется ли проблема на актуальной сборке и при включённом TUS — укажите размер файла, примерную точку прерывания, место загрузки и текст ошибки.

**Ожидаемое поведение:** при включённом TUS ручной повтор после терминальной ошибки возобновляет передачу с последней успешно сохранённой позиции. Без TUS возобновление с сохранённой позиции не входит в этот сценарий: повторная загрузка начинается заново.

**Когда обращаться в поддержку 1Ф:** если TUS включён, ошибка стала терминальной, но повтор начинается с нуля либо файл не удаётся загрузить после восстановления соединения.

**Симптом:** при загрузке больших файлов на PostgreSQL — «invalid memory alloc request size».

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

- Тип провайдера — PostgreSQL использует bytea с лимитом 1 ГБ (для обычной загрузки в БД). При включённом TUS файлы загружаются по частям в S3/MinIO, минуя bytea-ограничение (формат ключа `tempfile:tus:{id}`)
- Размер файла
- Включён ли TUS (resumable upload) — если да, bytea-лимит не применяется

**Когда обращаться в поддержку 1Ф:** если файл меньше 1 ГБ и ошибка воспроизводится.

> **Таймаут на больших файлах (устранено).** Отдельный симптом — «Timeout during reading attempt» при загрузке или обработке файлов ~500 МБ и больше на PostgreSQL — был вызван дефолтным таймаутом команды СУБД (30 с). Для файловых операций PG-провайдера (загрузка, обновление, копирование, потоковая выгрузка) `CommandTimeout` поднят до 600 с — крупные файлы (в пределах bytea-лимита 1 ГБ) больше не обрываются по таймауту.

## 1.6 Загрузка данных из CSV / импорт

**Симптом:** при загрузке задач из CSV-файла — данные добавляются некорректно, или загрузка не работает.

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

- Формат CSV — кодировка (UTF-8), разделитель (;)
- Маппинг колонок — соответствуют ли заголовки ожидаемым полям
- После обновления — не изменился ли формат импорта

---

**2. Скачивание файлов**

**2.1 Ошибка при скачивании файла**

**Симптом:** при скачивании файла — ошибка, файл не загружается.

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

- Доступ пользователя к файлу / задаче / ДП
- Файловый провайдер — доступен ли (не переключён ли)
- Не удалён ли файл

**2.2 Скачивается не та версия файла**

**Симптом:** после загрузки новой версии файла по обычной ссылке на файл открывается или скачивается предыдущая версия.

**Ожидаемое поведение:** ссылка на файл без указания версии открывает его последнюю актуальную версию. Это правило действует для файлов из карточки задачи, комментариев и Диска.

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

- Откройте «Историю версий» и убедитесь, что новая версия создана.
- Сравните результат обычной ссылки на файл с последней строкой в истории версий.
- Если скачивание выполняется по ссылке на конкретную версию, проверьте номер версии в ссылке: такая ссылка намеренно открывает указанную версию, а не последнюю.

**Решение:**

- Для обычной ссылки без номера версии повторно откройте файл или скачайте его ещё раз: система должна выдать последнюю актуальную версию.
- Если после создания новой версии обычная ссылка стабильно выдаёт прежнее содержимое, приложите в обращение ссылку на файл, время загрузки новой версии и размер либо контрольную сумму обоих файлов.

**2.3 Не логируется скачивание файла**

**Симптом:** в журнале действий с файлами нет записей о скачивании.

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

- Включён ли флаг «Логировать действия с файлами» в настройках ДП
- Тип ДП — логирование работает для ДП «Файл» и колонок типа «Файл» в ДП «Таблица»

**Решение:** включить логирование в настройках ДП.

### 2.4 Файл, созданный в форме задачи и отредактированный в Р7, не скачивается

**Симптом:** документ или таблица созданы кнопкой «Создать файл» в форме создания задачи, в редакторе в них введён текст, задача поставлена. В задаче файл виден и открывается в просмотре с введённым текстом, но кнопка «Скачать» не срабатывает: в браузере «Сайт недоступен», сервер отвечает 502. Напрямую нода отвечает 500 с сообщением о внутренней ошибке сервера.

**Версии:** дефект воспроизводится на сборках до исправления. Точный номер сборки с исправлением уточнить у ответственного за выпуск.

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

- размер версии файла в базе — он должен совпадать с фактическим содержимым (таблица `FileStorageFileVersions`, колонка `Size`);
- если размер равен размеру пустого шаблона — 12 533 Б для `.docx` или 8 397 Б для `.xlsx`, — это именно тот дефект: правка сохранилась, а размер в метаданных остался от шаблона;
- в журнале ошибок при этом обычно есть запись о расхождении фактической длины ответа с объявленной — она подтверждает несовпадение размера и содержимого;
- для сравнения: файл, созданный тем же способом, но без правок в редакторе, скачивается нормально.

**Решение:** обновить систему до сборки с исправлением. Обходного пути у пользователя нет: файл не скачивается, пока размер в метаданных не совпадёт с содержимым.

**Когда обращаться в поддержку 1Ф:** если дефект воспроизводится после обновления, проверьте фактический размер версии и ошибки файлового провайдера и приложите к обращению пример файла, время сохранения в редакторе и результат скачивания. Файлы, созданные до обновления, правкой не восстанавливаются — их размер в базе остаётся от шаблона. Если такой файл нужен в работе, создайте его заново: сначала в форме задачи, затем откройте в редакторе, внесите правки, закройте редактор и только после этого поставьте задачу.

---

**3. Диск**

Операции с Диском: права, перемещение, удаление.

**3.1 Нет доступа к файлу/папке на Диске**

**Симптом:** «не работает доступ к файлам через Поделиться», «доступ к файлу с диска».

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

- Раздел Диска — «Мои файлы» (только владелец и руководители), «Общие файлы» (все), «Обмен файлами» (только по явному доступу)
- Права на папку — наследуются ли от родительской
- Для «Обмен файлами» — выдал ли владелец доступ

**Решение:**

- Проверить права через контекстное меню папки → «Доступ»
- Для «Мои файлы» — доступ только владельцу и прямым руководителям

**3.2 Как переименовать / переместить файл на Диске**

**Симптом:** «как переименовать файл на диске?», «добавить возможность переносить файлы».

**Решение:**

- Переименование: контекстное меню файла → «Переименовать»
- Перемещение: на текущий момент drag-and-drop не поддерживается; нужно скачать и загрузить заново (или использовать API v1.2)

**3.3 Ошибка при переходе в папку на Диске**

**Симптом:** ошибка при открытии раздела «Файлы автоматизации» или другой папки.

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

- Версия системы — известные ошибки в некоторых версиях
- Права на раздел

**3.4 API Диска — права не применяются к дочерним объектам**

**Симптом:** при использовании API v1.2 методов «Добавить/обновить права» и «Удалить разрешение» параметр `propagate` не работает.

**Когда обращаться в поддержку 1Ф:** это баг API.

---

**3.5 В «Общих файлах» или «Файлах автоматизации» нет колонки «Владелец»**

**Симптом:** пользователь открывает папку в разделе «Общие файлы» или «Файлы автоматизации» в виде «Таблица» или «Список» и не находит колонку «Владелец» между «Название» и «Дата загрузки».

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

- версию сборки: колонка входит в сборку 2.268 «Скульптор» и новее;
- раздел: колонка есть только в «Общих файлах» и «Файлах автоматизации»; в «Моих файлах», «Обмене файлами», «Файлах подчинённых» и «Файлах замещаемых» её не будет;
- вид: в коротком виде Диска (адрес страницы содержит `/short`) колонки нет — переключите вид на «Таблица» или «Список»;
- сохранённые пользователем настройки вида и колонок: сбросить и перезагрузить страницу.

**Решение:** если раздел и вид верные, а сборка новая — колонка должна отображаться. Значение берётся из владельца объекта, поэтому у объектов без владельца ячейка пустая; это штатное состояние, а не дефект.

**Когда обращаться в поддержку 1Ф:** если колонки нет в «Общих файлах» и «Файлах автоматизации» при виде «Таблица» или «Список» на актуальной сборке — приложить раздел, адрес папки, вид и версию.

**4. OnlyOffice / R7**

Онлайн-просмотр и редактирование документов через Р7-Офис (`OfficeOnlineEditor.editor=r7`) и OnlyOffice CE (`editor=OnlyOffice`). Office WebApps (OWA) удалён после миграции на .NET Core — диагностика по нему более неактуальна.

## 4.1 Не открываются файлы docx/xlsx в OnlyOffice

**Симптом:** файлы форматов docx и xlsx не открываются в онлайн-просмотре/редактировании.

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

- Настроен ли офисный пакет (R7/OnlyOffice) — ключ `OfficeOnlineEditor` в пользовательских настройках
- Доступен ли сервер R7 — проверить URL из конфигурации
- Список разрешённых подсетей (`allowedIPs`) — входит ли IP сервера 1Ф
- Не истёк ли сертификат сервера R7

**Решение:**

- Проверить appsettings.json → секция R7 → секретный ключ
- Проверить пользовательский ключ `OfficeOnlineEditor`
- Проверить доступность сервера R7 с веб-сервера 1Ф

**4.2 OnlyOffice и PDF**

**Симптом:** PDF не открывается в OnlyOffice, или открывается с ошибками.

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

- Поддерживает ли версия R7/OnlyOffice формат PDF
- Размер файла

**4.3 Как редактировать печатные формы без скачивания**

**Симптом:** «как редактировать печатные формы через OnlyOffice?»

**Решение:** печатные формы (Word-шаблоны) после генерации можно открыть в R7/OnlyOffice для редактирования, если настроено действие при клике — «Открыть для просмотра в WebApps». Настраивается на уровне пользователя.

**4.4 Ошибка doc/docx вложений из .eml через OnlyOffice**

**Симптом:** при открытии вложений из eml-файла через OnlyOffice — ошибка.

**Когда обращаться в поддержку 1Ф:** вложения из eml требуют предварительного извлечения; прямое открытие может не поддерживаться.

**4.5 Не открывается office-файл из email-вложения в Р7-Офис**

**Симптом:** «не могу открыть Word из письма в Р7-Офис», «ошибка при открытии Excel-вложения из .eml», «ArgumentException при попытке просмотра документа».

**Версии:**

- ❌ Версии до v2.266.554 — известная проблема
- ✅ Версии v2.266.554+ — исправлено

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

1. **Версия системы (критично!):**
   - Если < 2.266.554 → рекомендовать обновление
   - Если ≥ 2.266.554 → искать другие причины

2. **Формат файла:**
   - Р7-Офис поддерживает: `.docx` (полное редактирование), `.xlsx`, `.pptx`, `.dotx` (шаблоны Word), `.doc` (только чтение); неподдерживаемое расширение приводит к отказу с сообщением о формате — в журнал ошибок такой отказ не пишется
   - Старые форматы (`.doc`, `.xls`, `.ppt`) могут открываться с ограничениями

3. **Конфигурация Р7-Офис:**
   - Ключ `OfficeOnlineEditor` в Custom Settings
   - `R7` secret в `appsettings.json`
   - Доступность сервера Р7-Офис с веб-сервера 1Ф

4. **Тип ошибки в логах:**
   - `ArgumentException: Invalid key (tus:...)` — версия < 2.266.554
   - `NotFoundException: Preuploaded file not found` — файл не найден
   - `UnauthorizedException` — нет прав на файл

**Известные проблемы (до v2.266.554)**

**Причина:** Код не поддерживал **TUS-ключи** при работе с email-вложениями.

**Техническое объяснение:**

- Файлы загружались через TUS Protocol (формат: `tempfile:tus:abc-def-123`)
- Р7-Офис интеграция ожидала только числовой формат (`tempfile:12345`)
- При попытке открыть файл: `ArgumentException: Invalid key (tus:abc-def-123)`

**Затронутые сценарии:**

- Открытие office-файлов из вложений .eml писем
- Работа с большими файлами (> 50 MB), загруженными через TUS
- Email-вложения из Exchange (EWS)

## Решение

**Для версий < 2.266.554:**

1. **Обновить систему** до версии 2.266.554+ (критичное исправление)
2. Временное решение: скачать файл и открыть локально в десктопном приложении
3. Альтернатива: использовать OnlyOffice вместо Р7-Офис (если настроен)

**Для версий ≥ 2.266.554:**

1. Проверить настройки браузера (блокировка iframe, CORS)
2. Проверить доступность Р7-Офис сервера из браузера пользователя
3. Проверить права пользователя на файл
4. Проверить логи: `logs/uniform-api.log` и `logs/tcclasslib.log`

**Как протестировать**

**Проверка версии системы:**
```
Нижний левый угол SPA → О системе → Версия: 2.266.554+
```

**Проверка работы Р7-Офис:**

1. Открыть любой обычный файл (не из email) в Р7-Офис
2. Если работает → проблема специфична для email-вложений → проверить версию
3. Если не работает → проблема конфигурации Р7-Офис

**Проверка TUS:**

- Администратор → Общие настройки → Файлы → TUS enabled
- Если TUS включён и версия < 2.266.554 → обновление обязательно
- Если площадка собрана в редакции 1F Certificate Edition, TUS недоступен независимо от настройки; обычная загрузка файлов при этом работает — см. [диск → администрирование](https://help.1forma.ru/domains/disk/admin.md)

**Эскалация**

**Когда обращаться в поддержку 1Ф:**

- Версия < 2.266.554 и **нельзя обновить** — критичный баг, нужно workaround
- Версия ≥ 2.266.554, но email-вложения всё равно не открываются
- Ошибки в логах, отличающиеся от описанных выше

**Что приложить:**

- Версия системы
- Скриншот ошибки
- Логи: `logs/uniform-api.log` (последние 100 строк с меткой времени ошибки)
- Формат файла и размер
- Способ получения файла (Exchange, IMAP, .eml загрузка)

---

**4.6 Шаблон Word (.dotx) не открывался в Р7-Офис**

**Симптом:** файл `.dotx` не открывается в онлайн-редакторе, в журнале ошибок — `System.ArgumentException: File with extension 'DOTX' is not supported`.

**Версии:**

- ❌ Сборка 2.268 «Скульптор» (до исправления) — дефект: конфигурация редактора для `.dotx` не собиралась, запрос завершался необработанной ошибкой и записью в журнал
- ✅ После исправления — `.dotx` открывается в Р7-Офис как документ Word; для прочих неподдерживаемых расширений приходит понятное сообщение «Один или более файлов имеет неподдерживаемый формат(расширение).» без записи в журнал

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

- версию сборки (нижний левый угол SPA → «О системе»);
- расширение файла: шаблоны `.dotm`, `.potx` редактор по-прежнему не открывает — это ожидаемый отказ, а не дефект;
- версию системы: на старых сборках помогает открыть файл локально или сохранить его в `.docx`.

**Когда обращаться в поддержку 1Ф:** если на актуальной сборке `.dotx` не открывается или в журнале ошибок появляются новые записи `File with extension ... is not supported` с кадром `DocumentTypeHelper.cs` из запроса `/api/r7/config`.

**4.7 Документ открывается в редакторе, но сохранить изменения не получается**

**Симптом:** после обновления площадки документ в Р7-Офис или ONLYOFFICE открывается, но сохранение из редактора не создаёт новую версию; в журнале приложения есть строка отказа на маршруте редактора. Так проявляется неготовность площадки к обновлению: платформа принимает сохранение только с подписанным обратным вызовом и только с адреса сервиса документов, указанного в настройке.

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

- Задан ли общий секрет: `R7:SecretKey` в конфигурации приложения (на Linux — `CORE_R7_SECRET_KEY`) и `JWT_SECRET` у сервиса документов — одно и то же значение, не короче 32 символов, без пробелов и переводов строк на концах.
- Включена ли подпись исходящих запросов на стороне сервиса документов (`JWT_ENABLED=true`, `JWT_HEADER=Authorization`, `JWT_IN_BODY=true`).
- Совпадает ли `serverAddress` в ключе `OfficeOnlineEditor` с адресом, с которого сервис фактически отдаёт содержимое: сверяются схема, хост и порт.
- Расхождение часов сервера 1Ф и сервиса документов — допускается не больше 5 минут.

**Расшифровка отказа по журналу:**

| Код | Строка журнала | Действие |
|---|---|---|
| 401 | `the signature token is missing.` | Включить подпись в сервисе документов |
| 401 | `the signature token is not valid.` | Секреты сторон разные — сверить посимвольно |
| 401 | `the signature token is expired.` | Разъехались часы — NTP на обеих машинах |
| 401 | `the callback body does not match the signed callback (…)` | Прокси правит тело вызова |
| 401 | `the R7 signing secret is not configured.` | Не задан секрет в конфигурации 1Ф |
| 400 | `the content url is not the configured editor server address: <адрес>` | Адрес содержимого не совпал с `serverAddress` |
| 400 | `the content size limit is exceeded` | Документ больше `MaxRequestLength` |
| 403 | — | Адрес вызывающего не входит в `allowedIPs` |
| 410 | `the file <id> has a newer version uploaded by another user.` | Штатная защита версий, настройка ни при чём |

**Решение:** привести обе стороны к одному секрету, включить подпись у сервиса документов, свести адрес содержимого к `serverAddress` и синхронизировать часы. Настройку `OfficeOnlineEditor` менять только через форму кастомных настроек. Пошаговая настройка сервиса документов — в руководстве [ONLYOFFICE Docs](https://help.1forma.ru/maintenance_guide/office/onlyofficedocs.md).

**Когда обращаться в поддержку 1Ф:** если браузер обращается к сервису документов по одному адресу, а содержимое приходит с другого и свести их нельзя, — сохранение на такой площадке не заработает настройкой, нужна доработка. Приложить: адрес из `serverAddress`, фактический адрес содержимого из строки журнала, версию сборки.

---

**5. Файловые провайдеры**

Настройка и переключение провайдеров.

**5.1 Создание / переключение файлового провайдера**

**Симптом:** «создание новой БД для файлов», «изменить файловые провайдеры на тесте».

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

- Тип провайдера (MS SQL, PostgreSQL, S3)
- Для MS SQL: создана ли таблица с нужной структурой (identity, varbinary(max), varchar)
- Для S3: настроены ли endpoint, bucket, ключи доступа

**Решение:**

- Для переключения: Общие настройки → «Вкладывать новые файлы через провайдер»
- Старые файлы остаются в прежнем провайдере — переключение влияет только на новые

**5.2 Tika не обрабатывает старые файлы**

**Симптом:** «почему сервис Tika обрабатывает только новые файлы?»

**Решение:** TikaJob обрабатывает файлы, у которых ещё нет извлечённого текста. Для обработки старых файлов нужно очистить поле текстового содержимого в таблице провайдера.

**5.3 Вопрос по хранению файлов в БД**

**Симптом:** «как хранятся файлы?», «рекомендации по разбивке».

**Решение:**

- Рекомендация: разбивать файловые БД на части по 100–200 ГБ
- Файловые БД не требуют быстрых дисков
- Провайдеры, используемые в категориях, нельзя удалить
- Для PG: bytea (лимит 1 ГБ), компрессию включать не нужно (TOAST)

---

**6. Файлы в ДП «Таблица»**

## 6.1 Изменение файла в таблице помечает его на удаление

**Симптом:** при изменении файла в колонке «Файл» ДП «Таблица» — старый файл помечается на удаление.

**Решение:** ожидаемое поведение — при замене файла старая версия помечается как неактуальная. История файлов по отдельной ячейке недоступна.

**6.2 Виртуальная колонка на ДП «Файл» отображается как ссылка**

**Симптом:** в гриде множественного выбора виртуальная колонка на ДП «Файл» (с галкой «Изображение») показывается как текстовая ссылка вместо превью.

**Решение:** это ограничение грида — превью изображений работает не во всех режимах отображения.

**6.3 Неверный перевод кнопки «вложить файл» в ДП «Таблица»**

**Симптом:** кнопка «вложить файл» в ДП «Таблица» переведена некорректно.

**Решение:** проблема локализации — сообщить команде разработки.

---

**7. Экспорт и печать**

**7.1 Файлы не экспортируются / экспортируются некорректно в Excel**

**Симптом:** при экспорте задач в Excel файлы не отображаются или ссылки нерабочие.

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

- ДП «Файл» — значение экспортируется как гиперссылка
- Вложенные файлы (не через ДП) — **не экспортируются** в Excel
- Авторизация — при скачивании из Excel добавляется `?auth=true`, нужна настройка `AuthTokenLoginUrl`

**Решение:**

- Для вложенных файлов без ДП: создать скрытый ДП со ссылкой через смарт-автоматизацию
- Проверить настройку `AuthTokenLoginUrl` в appsettings.json

**7.2 Шаблоны печати — пропали / не работают**

**Симптом:** «можно вернуть шаблоны, которые были?», «настройка шаблона печати задачи».

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

- Версия системы — шаблоны печати могут меняться при обновлении
- Настройки печати в категории

**7.3 Некорректное формирование PDF**

**Симптом:** PDF генерируется с ошибками или с надписью о лицензии FastReport.

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

- Лицензия FastReport — активна ли
- Шаблон отчёта — нет ли ошибок

---

**8. Антивирус и безопасность**

**8.1 Антивирусная проверка вложений**

**Симптом:** «есть ли возможность добавить антивирус для проверки вложений?»

**Решение:** начиная с версии 2.267.370 (февраль 2026) доступна встроенная интеграция с **PT Sandbox** (Positive Technologies). Проверка файлов выполняется автоматически при загрузке — до записи в хранилище. Настройка через AdminSPA → Сервисы → PT Sandbox.

Подробнее: [`docs/domains/integrations/pt-sandbox.md`](https://help.1forma.ru/domains/integrations/pt-sandbox.md)

Альтернативный вариант (для других антивирусов): интеграция через смарт-скрипт (Lua/JS) + HTTP-action к внешнему API.

**8.2 Возможность скачать чужие файлы при аплоаде**

**Симптом:** в старой ДП «Таблица» при сохранении можно скачать чужие файлы.

**Когда обращаться в поддержку 1Ф:** проблема безопасности — обратиться срочно.

**8.3 Защита от скачивания**

**Симптом:** вопросы о настройке защиты файлов от скачивания.

**Решение:** флаг «Защита от скачивания» в настройках ДП «Файл» — это UI-ограничение: интерфейс скрывает кнопку «Скачать», остаётся постраничный просмотр. Действует для всех пользователей, включая владельца. Прямой запрос к API вернёт оригинал; единственный серверный эффект — исключение защищённого файла из архива «Скачать все».

---

## 9. Вложения в комментарии и чат

**После перехода на другую страницу сообщение с файлом не отправилось**

Симптом: пользователь отправил сообщение с крупным файлом и ушёл на другую страницу, а после возвращения сообщения в ленте нет.

Почему: догрузка и отправка идут, пока открыто приложение. Закрытие вкладки или обновление страницы прерывают отправку — браузер спрашивает подтверждение, и если его закрыть, сообщение остаётся неотправленным.

Что делать: открыть исходное место сообщения и нажать «Повторить отправку». Если отправка шла в фоне и завершилась ошибкой, придёт уведомление «Не удалось отправить сообщение» с действием «Перейти» — оно открывает нужное место.

**9.1 Невозможность отправки сообщения при добавлении файла**

**Симптом:** при добавлении файла к комментарию или сообщению — ошибка отправки.

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

- Размер файла — не превышает ли лимит для комментариев
- Расширение — не в запрещённых

**9.2 При удалении комментария — что происходит с вложением**

**Симптом:** при удалении комментария с вложением файл остаётся / не удаляется.

**Решение:** на текущий момент при удалении комментария вложение не удаляется автоматически. Предложение добавить диалог выбора — в бэклоге.

**9.3 Вложение живого комментария не открывается**

**Симптом:** вложение в комментарии или в сообщении чата не открывается и не скачивается — сообщение «File content is missing in the storage provider» или ошибка сервера при скачивании; сам комментарий и карточка вложения на месте.

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

- Открываются ли другие версии этого файла из окна «История версий» — если да, у вложения жива привязка к версии, содержимое которой удалено из хранилища
- Число версий файла: поле `VersionCount` в `FileStorageFiles` и строки с тем же `FileId` в `FileStorageFileVersions`
- Остался ли у провайдера объект с ключом `FileProviderKey` этой версии

**Решение:** содержимое удалено у провайдера и из системы не восстанавливается — вложение нужно загрузить заново. Если такие ошибки появляются на текущей сборке, передать разработке задачу с примером файла и комментария.

---

**10. Не вкладываются файлы во встречу**

**Симптом:** «не вкладываются файлы во встречу».

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

- Права пользователя на встречу
- Максимальный размер файла
- Запрещённые расширения (не применяются к встречам — см. 1.3)

---

**11. Генерация файлов по шаблону**

**11.1 Параметры шаблона не подставляются / null**

**Симптом:** действие «Сгенерировать файл по шаблону» создаёт файл, но значения из smart-выражений или ДП не подтягиваются — в документе пустые поля или нулевые значения.

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

- Синтаксис smart-выражений в шаблоне — корректность ключей, скобок
- Типы ДП — совместимы ли с шаблоном (например, число vs строка)
- Есть ли значение в ДП на момент генерации — если ДП пустой, результат будет null
- Порядок действий в автоматизации — заполняется ли ДП до генерации файла

**Решение:**

- Проверить шаблон на тестовой задаче с заполненными ДП
- Убедиться, что smart-выражения корректны через предпросмотр
- Если значение null — проверить, что ДП заполнен до запуска действия

**11.2 Смарт-действие «наложить изображение на документ» работает некорректно**

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

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

- Параметры действия: координаты, размер, страница
- Формат исходного документа (PDF vs DOCX)
- Размер и формат изображения

**Когда обращаться в поддержку 1Ф:** если параметры корректны, но результат неверный — передать разработке с примером файлов (исходник + результат + ожидание).

---

**12. Ссылки на файлы и блок «Используется»**

**12.1 Не открывается ссылка на файл в блоке «Используется»**

**Симптом:** в задаче в блоке «Используется» ссылка на файл не работает — ошибка или пустая страница.

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

- Не удалён ли файл из исходной задачи
- Права пользователя на исходную задачу с файлом
- Версия системы — возможен баг в конкретной сборке

**Когда обращаться в поддержку 1Ф:** если файл существует и права есть — баг, обратиться в поддержку 1Ф со скриншотом и URL.

---

**13. Файлы и автоматизации (смарт-скрипты)**

## 13.1 Как в смарт-скрипте отправить email с вложениями из задачи

**Симптом:** «как приложить файлы из задачи к email через смарт-действие?», «вложить файл из ДП в письмо».

**Решение:**

- Использовать действие «Отправить email» с параметром вложений
- Файлы можно указать через ДП «Файл» или через ID файла из блока «Файлы»
- Для ДП «Файл»: в параметре вложений указать ссылку на ДП

**Когда обращаться в поддержку 1Ф:** если стандартные параметры не позволяют прикрепить нужный файл — обратиться в поддержку 1Ф.

**13.2 Смарт-процесс «Вложить файл» — уточнения по работе**

**Симптом:** вопросы о работе смарт-процесса «Вложить файл» — когда срабатывает, какие файлы захватывает.

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

- Настройки смарт-процесса: триггер, условия, целевой ДП
- Тип файла: ДП «Файл» vs вложение комментария vs блок «Файлы»

---

**14. Файлы и API**

**14.1 Как импортировать файл в задачу через API**

**Симптом:** «как загрузить файл в задачу через REST API?», «импорт файлов через интеграцию».

**Решение:**

- Загрузка файла: `POST /api/files/upload/ToPreUploadedFiles` — получить ключ preupload
- Привязка к задаче: через обновление ДП «Файл» (`POST /api/extParams/update`) или через добавление вложения

---

**15. Файлы приложений и конфигурация**

**15.1 Файлы приложений перезатираются при обновлении**

**Симптом:** «после обновления пропали пользовательскые файлы», «как не потерять файлы при обновлении».

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

- Какие именно файлы: логотипы, фоны авторизации, пользовательскые скрипты
- Расположение файлов — в папке приложения (перезатираются) или в отдельном хранилище

**Решение:**

- Пользовательскые файлы (логотипы, фоны) размещать через настройки системы, а не заменой файлов на диске
- Фон экрана авторизации: Общие настройки → Авторизация → Фоновое изображение
- Логотипы: Общие настройки → Внешний вид
- Если файлы размещены вручную на диске — делать бэкап перед обновлением

**15.2 Ошибка сохранения файлового провайдера**

**Симптом:** при создании или редактировании файлового провайдера — ошибка сохранения.

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

- Корректность параметров подключения (строка подключения, endpoint S3, bucket)
- Доступность целевого хранилища с веб-сервера
- Права учётной записи на целевую БД или S3-бакет

**Когда обращаться в поддержку 1Ф:** если параметры корректны и хранилище доступно — обратиться в поддержку 1Ф с текстом ошибки из логов.

**15.3 Отсутствует data.json при экспорте конфигурации**

**Симптом:** при экспорте конфигурации файл data.json не создаётся или пустой.

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

- Версия системы
- Наличие данных для экспорта — не пустая ли конфигурация
- Логи экспорта — нет ли ошибок

**Когда обращаться в поддержку 1Ф:** обратиться в поддержку 1Ф с версией системы и логами.

---

**16. Скачивание файлов из ДП «Таблица» (массовое)**

## 16.1 Как скачать все файлы из колонок таблицы

**Симптом:** «как скачать все файлы из таблицы одним архивом?», «массовая выгрузка файлов из ДП Таблица».

**Решение:**

- Штатная кнопка «Скачать все» доступна в контекстном меню ДП «Таблица» (зависит от версии)
- Альтернатива: API — получить список файлов через `task_files_get_ext_param_files_by_task_id`, затем скачать каждый по URL
- Для единичных строк: клик по файлу в ячейке → скачивание

---

**17. Блок «Файлы»: вид и кнопки**

## 17.2 При наведении на файл в виде «Плитка» всплывает «Поделиться в сообщении» и закрывает «⋮»

**Симптом:** в блоке «Файлы» в виде «Плитка» при наведении на файл справа появляется панель с кнопкой «Поделиться в сообщении» и закрывает кнопку «Больше действий» (⋮). У файла с длинным именем навести курсор на «⋮» и нажать её нельзя; у короткого имени перекрытия нет. Встречается везде, где блок вложений показан плиткой: в карточке задачи, в окне «Посмотреть все», в пространстве, в чате и во встрече.

**Версии:** дефект есть в сборке 2.268 до тега 2.268.722, исправлен в 2.268.722.

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

- версию сборки (нижний левый угол SPA → «О системе»);
- вид блока — «Плитка»;
- не путать с разделом 17.1: там клик уходит в флажок выбора файла, здесь кнопку закрывает всплывающая панель.

**Решение:** обновить систему до 2.268.722 или новее. До обновления меню открывается правым кликом по файлу — в нём есть «Поделиться в сообщении». После обновления при наведении на плитку ничего не всплывает, а действие остаётся в меню «Больше действий», в контекстном меню, в виде «Таблица» и на Диске.

### Пункт создания файла из шаблона не появляется в меню «Создать»

**Симптом:** администратор настроил шаблон создания файла, но пункт не появляется в меню «Создать» — у всех пользователей или у части, в зависимости от условия видимости.

**Что проверить:** условие видимости пункта — пустой фильтр показывает его всем, непустой только тем, кто под него подходит; на сборках до 2.268 значение фильтра сохранялось без проверки, поэтому в список мог попасть несуществующий, удалённый или чужой фильтр — такой пункт не показывается никому, и причина по интерфейсу не видна; фильтр должен принадлежать этой же категории либо быть общим для всех категорий.

**Решение:** пересохранить пункт с корректным фильтром. Уже сохранённые пункты автоматически не исправляются. Если список перестал сохраняться целиком, проверьте условия видимости всех пунктов: отказ от одного негодного фильтра отменяет сохранение всего списка, а текст ошибки не называет поле.

**Когда обращаться в поддержку 1Ф:** если пункт с заведомо корректным фильтром своей категории или с пустым условием всё равно не появляется — приложите категорию, наименование пункта и сборку стенда.

## 17.1 Не срабатывает кнопка «Больше действий» (⋮) у файла в виде «Плитка»

**Симптом:** в модальном окне «Файлы» карточки задачи в виде «Плитка» кнопка «Больше действий» у файла не реагирует на наведение и клик — чаще при горизонтальном подводе курсора; клик уходит в чекбокс выбора файла.

**Версии:** дефект есть на spa 2.268.611–2.268.721, исправлено в 2.268.722.

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

- версию сборки (нижний левый угол SPA → О системе);
- вид блока — «Плитка» (переключатель в шапке окна «Файлы»);
- есть ли у задачи право удалять файлы: без него чекбоксы выбора не рисуются, и дефекта нет.

**Решение:** обновить систему до 2.268.722 или новее. До обновления — обходные пути: переключить вид блока на «Таблица»; открывать меню правым кликом по плитке; подводить курсор к «⋮» вертикально.

---

**Чеклист для первичной диагностики**

1. **Контекст** — ДП «Файл», Диск, комментарий, встреча
2. **Операция** — загрузка, скачивание, просмотр, удаление
3. **Размер и формат файла**
4. **Тип провайдера** — MS SQL, PostgreSQL, S3
5. **Версия системы**
6. **Один пользователь или все**
7. **Скриншот / текст ошибки**

**Когда обращаться в поддержку 1Ф**

- Ошибки провайдера (500, таймаут при загрузке/скачивании)
- Проблемы безопасности (доступ к чужим файлам)
- Ошибки PostgreSQL (invalid memory alloc)
- OnlyOffice/R7 не работает при корректных настройках
- Баги API Диска
- Генерация файлов по шаблону — smart-выражения не подставляются при корректных настройках
- Смарт-действие «наложить изображение» — некорректный результат при верных параметрах
- Экспорт конфигурации — отсутствует data.json

**Кнопка «Создать» на форме постановки задачи или сохранения встречи не нажимается, хотя вложение уже в списке.** Это штатное поведение: кнопка ждёт окончания всех файловых операций — в том числе создания файла и выбора файла с Диска. Проверьте, не идёт ли ещё загрузка; если файл уже загружен, а кнопка закрыта, укажите сборку стенда — на сборках ниже 2.268 счётчик операций не вёлся, и кнопка могла оставаться закрытой после ошибки загрузки. Обходной путь — обновить страницу и повторить.
