# Файлы

Работа с файлами в 1Форме охватывает весь их жизненный цикл: загрузку, хранение, версии, конвертацию, просмотр и скачивание. Файлы находятся в двух контекстах — на Диске (файловое хранилище с папками) и в задачах (вложения через ДП типа «Файл» и комментарии). Поддерживаются полнотекстовый поиск по содержимому, онлайн-редактирование документов в офисном пакете Р7 и автоматическая конвертация видео. Технические детали хранения (провайдеры, сжатие, конвертация) — в [admin.md](https://help.1forma.ru/domains/files/admin.md).

## Хранилища файлов

Диск — централизованное файловое хранилище с разделами «Мои файлы», «Общие файлы», «Обмен файлами», «Файлы автоматизации» и др. Пользовательские сценарии работы с Диском, его разделы, права и интерфейс подробно описаны в [disk/business.md](https://help.1forma.ru/domains/disk/business.md).

Через смарт-действие «Связать файловую папку с задачей» можно привязать к задаче папку из раздела «Файлы автоматизации». После этого все файлы, вложенные в задачу или ДП, автоматически попадают в эту папку. Возможен и обратный сценарий: файлы загружаются в привязанную папку, а затем вставляются в ДП через пункт «Вставить из диска». Права доступа к папке формируются аналогично правам доступа к задаче (по группам, тегам, смарт-доступу, роли пользователя). При завершении всех связанных задач редактирование папки блокируется.

Файлы хранятся через **провайдеры** — адаптеры к разным типам хранилищ (база данных или S3-совместимое хранилище). Тип хранилища, сжатие и полнотекстовый поиск настраивает администратор; для пользователя это прозрачно. Подробности — в [admin.md](https://help.1forma.ru/domains/files/admin.md).

Сжатие уменьшает объём хранилища, но отключает поиск по содержимому файлов. Чтобы поиск работал и при сжатии, система отдельно извлекает текст из документов (PDF, Word, Excel, PowerPoint и т.п.).

Дополнительный параметр (ДП) типа «Файл» — основной способ прикрепления файлов к задачам. Ключевые настройки:

- **Мультифайл** — хранение нескольких файлов в одном ДП (имена нумеруются автоматически: `name.pdf`, `name-1.pdf`, `name-2.pdf`)
- **Имя файла** — режимы: не менять, добавить версию (с датой и временем), фиксированное имя, имя по смарт-выражению. Если смарт-выражение возвращает пустоту, имя не меняется
- **Логирование** — запись действий (скачивание, просмотр, редактирование, удаление) в журнал Диска
- **Ограничения** — запрет удаления, только изображения, максимальный размер, список допустимых расширений
- **Загрузка** — разрешение или запрет загрузки из файловой системы и из Диска
- **Защита от скачивания** — UI-ограничение для всех пользователей, включая владельца: интерфейс скрывает кнопку «Скачать», остаётся постраничный просмотр. Сервер оригинал по прямому запросу отдаёт; защищённый файл исключается из архива «Скачать все»
- **Файловый провайдер** — для конкретного ДП можно выбрать отдельное хранилище
- **Системные копии при акцепте** — создание скрытой версии файла при согласовании подписи (чтобы зафиксировать состояние на момент подписания)
- **Работа с Word** — сравнение версий, объединение файлов, запрет файлов с вложениями или паролем

Загруженные видеофайлы (MP4, WMV, MOV, AVI) система автоматически конвертирует в единый формат MP4 — чтобы они воспроизводились во встроенном веб-плеере. Конвертация выполняется в фоне; техническая настройка описана в [admin.md](https://help.1forma.ru/domains/files/admin.md).

## Интеграция с редакторами (Р7 / OnlyOffice)

Документы можно просматривать и редактировать онлайн, прямо в браузере, через офисный пакет Р7 Офис. Подключение и настройку выполняет администратор (см. [admin.md](https://help.1forma.ru/domains/files/admin.md)).

> **В сертифицированной сборке 1F Certificate Edition (ФСТЭК)** действие «Открыть в онлайн-редакторе» недоступно: подсистема онлайн-редакторов (Р7 / OnlyOffice / Office WebApps) исключена из сборки целиком. Файлы по-прежнему можно открывать в локальных приложениях через «Скачать», а документы Word, Excel и PowerPoint — просматривать прямо в браузере локальным просмотрщиком, без серверного редактора: содержимое отображается в окне просмотра, редактирование при этом недоступно.

### Р7 Офис

Р7 Офис — профессиональный офисный пакет инструментов; его редактор позволяет просматривать и редактировать файлы офисных форматов непосредственно в окне браузера. Поддерживаемые форматы: `.docx` (полное редактирование), `.doc` (только чтение), `.dotx` (шаблоны Word — открываются как обычный документ Word), `.xlsx`, `.pptx` и их аналоги в форматах OpenDocument.

Если расширение файла не входит в список поддерживаемых редактором, документ не откроется: система отвечает сообщением «Один или более файлов имеет неподдерживаемый формат(расширение).». Это отказ, а не сбой системы — попытка открыть такой файл не попадает в журнал ошибок сервера. Файл при этом доступен для скачивания и открытия в локальном приложении.

Для работы интеграции необходимо наличие лицензии Р7 Офис. Если лицензия на Р7 Офис активирована в настройках пользователя, для редактирования файлов формата `.docx` используется Р7 Офис. При этом в прочих настройках пользователя в поле «Действие с файлами MS Office при клике» нужно активировать опцию «Открыть для просмотра в веб-интерфейсе (WebApps)».

Подробнее о работе с Р7 — на [сайте компании](https://r7-office.ru/).

### OnlyOffice

OnlyOffice — офисный пакет для работы с документами, таблицами и презентациями в режиме реального времени. Он позволяет просматривать и редактировать документы прямо в браузере, а также совместно работать над файлами с коллегами с функцией одновременного редактирования. Интеграция с OnlyOffice обеспечивает работу с файлами без необходимости загрузки и использования сторонних программ.

Подробнее о работе с OnlyOffice — на [сайте компании](https://www.onlyoffice.com/ru/).

Действие при клике на файл MS Office настраивается на уровне пользователя: скачать, открыть для просмотра в WebApps или по умолчанию (из общих настроек).

### Office WebApps (OfficeOnline) — недоступно

> **Эта функция больше не поддерживается.** После миграции на .NET Core интеграция с Office Web Apps Server / Office Online удалена из платформы. Для онлайн-просмотра и редактирования офисных документов в браузере используйте **Р7-Офис** или **OnlyOffice** — см. разделы выше. Текст ниже сохранён для пользователей старых стендов, где OWA ещё развёрнут параллельно с платформой.

Приложения WebApps позволяют просматривать и редактировать офисные документы непосредственно в окне браузера. Работа с WebApps возможна практически на любом устройстве, которое поддерживает работу с интерфейсом «Первой Формы». Аналогичным образом можно работать с документами Word, Excel, PowerPoint и OneNote.

Чтобы отредактировать документ, нужно нажать кнопку «Изменить в браузере» — файл перейдёт в режим редактирования с помощью веб-приложения.

Набор инструментов редактирования в WebApps чуть меньше, чем в локальном офисном приложении, однако его вполне достаточно для полноценной работы. Если же возможностей WebApps недостаточно для редактирования, файл можно загрузить на локальный компьютер, кликнув на кнопку экспорта рядом с названием файла, и затем открыть его с помощью обычного приложения MS Office.

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

При многопользовательской работе в WebApps, если правки разных пользователей конфликтуют (редактировался один и тот же абзац), по нажатию кнопки «Разрешить конфликты» отображается окно выбора. Пользователю нужно выбрать один из вариантов: сохранить свои изменения, но удалить изменения коллег, или принять изменения коллег, отменив свои собственные.

Подробнее о работе с Office WebApps — на [сайте компании Microsoft](http://products.office.com/).
### WebDAV — не поддерживается

> **Редактирование документов через WebDAV не поддерживается.** Кнопки «Редактировать в WebDAV» в ленте сообщений нет: документ открывается в просмотрщике, в онлайн-редакторе Р7 / OnlyOffice или скачивается — в зависимости от формата и настроек.

### Работа в редакторе

По умолчанию офисный документ открывается в режиме онлайн-просмотра. Переключение в редактирование — кнопкой **«Редактировать»** в панели инструментов просмотрщика: документ открывается в окне редактора. Кнопка доступна одинаково из всех точек входа — из блока «Файлы» в карточке задачи, из вложений в ленте комментариев, из ленты задач и ленты публикаций, из результатов поиска публикаций.

Ограничения и поведение:

- Файлы старых форматов — **.doc**, **.xls**, **.ppt** — редактировать нельзя, они доступны только для чтения.
- Файл с расширением, которое редактор не поддерживает, не открывается в онлайн-редакторе: система сообщает о неподдерживаемом формате вместо перехода в редактор.
- Редактирование доступно только для актуальной версии: если открыта историческая версия файла, кнопка редактирования скрыта, а в шапке просмотрщика показан баннер о просмотре неактуальной версии — перейти в режим правки можно по ссылке на актуальную версию.
- Кнопка показывается, если у пользователя есть право изменять файлы задачи и файл не является вложением письма или встречи.
- Просмотр и правка расходятся. Открытая версия — та, с которой пришли: из комментария, из истории версий или по адресу с номером версии. В режим правки при этом попадает только актуальная версия: на старой версии кнопка «Редактировать» скрыта, а перейти к правке можно по ссылке «Последняя версия» в баннере.
- Файл можно скачать на локальный компьютер по иконке загрузки рядом с названием.
- В OnlyOffice в меню «Вид» доступен выбор темы интерфейса; тема применяется ко всему документу.
- При открытии офисного документа на редактирование система показывает уведомление «Включено автосохранение» — см. «Многопользовательское редактирование» выше.

Доступны три режима работы:

| Режим | Что позволяет |
|---|---|
| Редактирование | Свободное изменение содержимого и форматирования |
| Рецензирование | Все правки фиксируются как пометки, могут быть приняты или отклонены позже |
| Просмотр | Запрещено редактирование, доступны навигация, масштабирование, комментирование |

В Рецензировании активен блок «Просмотр изменений» — список добавленных, удалённых и отредактированных фрагментов с возможностью переходов между ними.

### Многопользовательское редактирование

При одновременном открытии одного файла несколькими пользователями каждый видит:

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

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

- Если правки разных пользователей не пересекаются (разные абзацы) — все сохраняются.
- Если правки в одном абзаце — система информирует пользователя о чужих изменениях после завершения его сессии.

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

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

**Как сообщить пользователю, что автосохранение включено.** При открытии офисного документа на редактирование — из просмотрщика или в отдельной вкладке Р7 — 1Форма показывает системное уведомление «Включено автосохранение». Уведомление появляется снова, когда вы возвращаетесь на уже открытую вкладку редактора, и само исчезает, не прерывая работу. Уведомление нужно потому, что единственный индикатор сохранения внутри Р7 — короткая строка в нижней панели самого редактора, которая появляется на пару секунд после правки и может быть скрыта.

Когда показывается:

- при открытии документа на редактирование — и в просмотрщике, и в отдельной вкладке Р7;
- при возврате на уже открытую вкладку редактора;
- при каждом показе текст один: «Включено автосохранение».

Когда не показывается:

- если файл открыт в режиме просмотра — там правки невозможны, сообщать не о чем;
- в OnlyOffice: уведомление относится только к редактору Р7.

Другие системные уведомления 1Формы не меняются.

## Импорт Excel в базу данных

Администратор может импортировать данные из Excel-файла в таблицу рабочей базы 1Формы — через сервисный endpoint `POST api/files/import/exceltodb` или стандартное смарт-действие **«Импортировать лист Excel в таблицу БД»** (см. [smart-actions/actions-reference-files-data.md](https://help.1forma.ru/domains/smart-actions/actions-reference-files-data.md)). Операция создаёт или обновляет таблицу в базе, поэтому доступна **только администраторам**: вызов от обычного сотрудника отклоняется без изменений в базе.

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

**Допустимые имена таблицы и колонок.** Имя таблицы задаётся в запросе, имена колонок берутся из заголовков первой строки Excel. Обычные заголовки работают без ошибок — кириллица, пробелы, дефисы, точки, скобки, запятые, процент, плюс, двоеточие, косая черта (например, «Дата отгрузки», «Кол-во (шт.)», «% выполнения», «№ п/п»). Имя отклоняется с ошибкой, если оно пустое, длиннее 128 символов или содержит служебные символы SQL-разметки — `[`, `]`, `"`, `'`, `\`, `;`, обратный апостроф, управляющие.

## Способы вложить файл в задачу

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

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

- через меню «Файлы» в панели инструментов задачи;
- при отправке сообщения в ленту;
- в блоке «Файлы»;
- в ДП типа «Файл», предназначенный для хранения файлов;
- из Диска (прикрепление существующего файла);
- письмом из почтового клиента (см. «Привязка письма к задаче» в [mail/business.md](https://help.1forma.ru/domains/mail/business.md)).

### Загрузка файла перетаскиванием

Файл с компьютера можно добавить в задачу, перетащив его мышью из проводника или с рабочего стола в окно браузера.

При перетаскивании интерфейс подсказывает доступные места загрузки в два этапа:

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

Если перетаскивание отменено — нажата клавиша `Esc` или файл уведён за пределы окна браузера, — подсветка снимается сама. Перетаскивание выделенного текста или ссылок зоны не подсвечивает.

В карточке существующей задачи файл можно перетащить и на поле дополнительного параметра «Файл» или «Мультифайл» — зоной приёма служит само поле. На Диске и в полях типа «Файл» подсветка работает как в этих разделах.

Если у пользователя нет права добавлять файлы в задачу или категория запрещает вложения, блок «Файлы» при занесении файла над окном не подсвечивается, а при наведении на него показывает предупреждение о запрете и отклоняет сброс файла.
### Создание файла по шаблону

Кроме пустых документов, в задаче можно создать файл по заранее заготовленному шаблону и тем же действием прикрепить его к нужному месту. Для этого у дополнительного параметра «Файл» и у блока вложений задачи настраивается список шаблонов.

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

Список шаблонов у ДП «Файл» и у вложений настраивается отдельно: у файлового параметра — свой, у блока вложений — общий для задачи. Тот же список вложений используется при создании файла из скрепки в ленте. Для ДП «Мультифайл» шаблоны не настраиваются. Настройку выполняет глобальный администратор — экран списка шаблонов живёт в свойствах ДП «Файл» в категории (см. [«Дополнительные параметры» → «Справочник настроек ДП „Файл“»](https://help.1forma.ru/domains/ext-params/file/settings-reference.md)).

Отдельно от выбора шаблона каждый пункт списка может быть доступен не всегда, а по условию — это задаётся в самой настройке списка.

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

## Блок «Файлы» в карточке задачи

В блоке отображаются последние вложенные файлы. Полный список открывается ссылкой «Посмотреть все» или кнопкой раскрытия.

![Блок «Файлы»: вкладки по типам, файлы и панель инструментов](https://help.1forma.ru/help-images/files/file_block_task_01.png)

### Группировка по вкладкам

Вложения задачи автоматически распределяются по тематическим вкладкам на основе единого классификатора типов файлов. Вкладка показывается, только если в задаче есть файлы соответствующей группы, а рядом с её названием на бейдже выводится точное число таких файлов. Вкладка «Вложения» всегда остаётся первой и содержит все файлы задачи, кроме файлов из дополнительных параметров; файлы из ДП типа «Файл» показываются на отдельных вкладках с названиями соответствующих полей.

| Вкладка | Что показывает | Примеры форматов |
|---|---|---|
| Вложения | Все файлы задачи без фильтрации по типу, кроме файлов из ДП | — |
| Документы | Текстовые документы и офисные текстовые форматы | doc, docx, rtf, odt, pdf, txt |
| Таблицы | Электронные таблицы и табличные данные | xls, xlsx, xlsm, xlsb, ods, csv |
| Презентации | Файлы презентаций | ppt, pptx, odp, key |
| Медиа | Изображения, видео и аудио (вид по умолчанию — «Галерея») | jpg, png, gif, webp, svg, mp4, mov, mp3, wav |
| Архивы | Архивы и сжатые наборы | zip, rar, 7z, tar, gz |
| Прочее | Файлы, не попавшие ни в одну из групп | остальные расширения |


### Просмотр текстовых файлов и Markdown

Текстовые вложения (`.txt`, `.sql`, `.json` и другие) открываются в редакторе с подсветкой. В тёмной теме редактор тёмный, подсветка и подсказки читаются на тёмном фоне. Если переключить тему приложения, пока файл открыт, редактор перекрасится без закрытия просмотрщика.

Файл Markdown показывается как оформленный текст. Диаграмма, вставленная в такой файл, подстраивается под оформление просмотрщика: линии, стрелки и подписи остаются контрастными и в светлом, и в тёмном режиме. Режим задаётся в меню оформления просмотрщика — «Как в приложении», «Светлая», «Тёмная» — и не зависит от темы приложения; при смене режима диаграмма перерисовывается.

### Вкладка «Загрузка»

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

На превью файла во время загрузки показывается кольцо прогресса на полупрозрачной подложке, поэтому изображение файла остаётся видимым; в центре кольца — крестик отмены загрузки. Сам процент вынесен в строку сведений под именем файла («61 % загружено»), в круге его нет. Если загрузка не удалась, значок заменяется значком повтора, а под именем появляется красная строка «Повторить · Ошибка загрузки»; клик по значку или по этой строке запускает загрузку заново.

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

Вкладка открывается сама, как только началось добавление файлов, — искать её вручную не нужно. Если какая-то загрузка прервалась, счётчик в заголовке выделяется красным и остаётся таким до успешной повторной попытки. Когда очередь пуста, вкладка исчезает, а активной становится соседняя — без скачка фокуса. Загруженный файл уходит с «Загрузки» и появляется во вкладке своего типа или во «Вложения», а счётчик типовой вкладки увеличивается.

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

Обновляется при этом список вложений, а не вся карточка задачи: завершённый файл адресно попадает в общий список и в список своего типа, счётчики пересчитываются без полного перезапроса.

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

### Вкладка «Ссылки»

Вкладка собирает ссылки, которые участники упоминали в переписке задачи: внутренние ссылки на задачи и внешние адреса. Файлы на неё не попадают — они остаются во вкладке «Вложения». Список идёт по дате комментария, свежие ссылки выше; ссылки на задачи и внешние адреса не разложены по двум блокам, а идут вперемешку в одном порядке переписки. Когда блок вложений развёрнут, ссылки дополнительно группируются по месяцу даты комментария; в свёрнутом блоке это один плоский список без заголовков.

Каждая ссылка показана карточкой: превью страницы, заголовок, описание и адрес. Ссылки со скрытыми карточками — например, у комментариев, отправленных через API или агентом, — на вкладке не показываются, как и в самой ленте. На счётчике вкладки стоит число собранных ссылок. Если файлов в задаче нет, но ссылки из переписки есть, блок вложений показывается ради одной этой вкладки.

Правый клик по карточке открывает меню из двух пунктов: «Перейти к сообщению» и «Скопировать ссылку». Переход показывается не всегда: пункт есть, когда исходный комментарий лежит в загруженной части ленты либо экран умеет догрузить ленту до него. В полноэкранном окне вложений, открытом без перехода к источнику, пункт скрыт — лента за окном не видна. Обычный клик по карточке открывает внешний адрес в новой вкладке браузера, а ссылку на задачу — в текущей; при клике с зажатым `Ctrl`/`Cmd` ссылка на задачу открывается в новой вкладке, а на мобильном — модальным окном. Вид вкладки одинаков в карточке задачи и в чате: на подробном экране чата блок вложений содержит ту же вкладку «Ссылки».

Меню кнопки «Больше действий» (⋮) шире, чем меню по правому клику: кроме перечисленных пунктов в нём есть «Заменить файл» — заменить текущий файл другим, не удаляя его. Порядок пунктов в меню ⋮ тот же, что в таблице выше.

### Переключение представлений

В каждой вкладке блока «Файлы» доступны несколько представлений; переключатель находится в шапке блока. Выбранное представление и активная вкладка запоминаются на уровне пользователя и применяются ко всем блокам вложений в карточках задач (без учёта категории).

| Представление | Назначение | Когда по умолчанию |
|---|---|---|
| Плитка | Карточки с превью и названием | Вкладки «Вложения», «Документы», «Почта и подписи», «Имя ДП» |
| Галерея | Увеличенные превью для просмотра медиафайлов | Вкладка «Медиа» |
| Таблица | Плотный список с колонками: имя, размер, дата, **владелец файла** | Не по умолчанию ни для одной вкладки; включается явно |

Табличный вид аналогичен просмотру файлов в папке на Диске.

### Как выглядит вложение

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

**Значок слева.** Для картинки показывается само изображение — во всех местах, где файл виден, включая письма. У остальных типов вид значка зависит от формата: у картинок-превью и изображений — квадрат превью со штатным аватаром без подложки, у документов, таблиц, презентаций, pdf, архивов, аудио и видео — цветная иконка типа, у незнакомого формата — скрепка. У файла, вложенного из Диска, в углу значка остаётся значок облака. Тот же компонент превью используется в поле «Файлы» формы создания задачи: файл, выбранный локально и ещё не отправленный на сервер, показывается такой же миниатюрой или значком типа, а список обновляется при удалении файла до сохранения задачи.

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

| Ситуация | Что справа |
|---|---|
| Обычный файл | только ⋮ |
| У файла несколько версий | кнопка истории версий и ⋮ |
| Меню недоступно (незагруженный файл в ленте, вложение в черновике письма) | крестик удаления |
| Идёт загрузка | кнопок нет, отмена — на значке |

Крестик и ⋮ не показываются вместе: удаление всегда последним пунктом меню. Скачивание, переименование, история версий, закрепление, копирование ссылки — пункты меню. **Заменить файл** — тоже пункт меню.

**Пока идёт загрузка.** Значок закрывается полупрозрачной подложкой с кольцом прогресса, в центре — крестик отмены. Процент загрузки показан в строке сведений под именем («61 % загружено»); кнопок справа в это время нет. Если загрузка сорвалась, имя и строка сведений становятся красными, на значке появляется значок повтора. Начать загрузку заново можно кликом по значку или по строке «Повторить · Ошибка загрузки».

**С клавиатуры.** На плашку можно попасть клавишей `Tab`; `Enter` или `Space` открывают файл так же, как клик мышью. Кнопки справа работают независимо от открытия файла — клик по кнопке файл не открывает.

### Кнопка «Больше действий» у файла

В каждом представлении блока «Файлы» у файла есть кнопка **«Больше действий»** (⋮): она открывает меню действий с файлом — просмотр, скачивание, переименование, история версий, закрепление, удаление (см. «Контекстное меню файла»).

Меню открывается кликом в любую точку кнопки. Кнопка и флажок выбора файла в представлении «Плитка» — независимые элементы плитки: выбор файла не перехватывает клик по меню, а меню не переключает выбор.

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

В сборке 2.268 в виде «Плитка» при наведении на файл некоторое время показывалась отдельная кнопка «Поделиться в сообщении». У файла с длинным именем она закрывала кнопку «Больше действий», и открыть меню было нельзя. С 2.268.722 этой кнопки нет: при наведении на плитку ничего не всплывает, а «Поделиться в сообщении» открывается из меню «Больше действий» и из контекстного меню по правому клику. В виде «Таблица» и на Диске действие доступно из контекстного меню файла, как и раньше.

### Поиск по вложениям

Над вкладками блока «Файлы» есть строка **«Поиск по имени файла»**. Введённый текст отбирает вложения по имени сразу по всей задаче — включая файлы из дополнительных параметров, а не только по открытой вкладке. Вкладки, в которых совпадений нет, при активном поиске не показываются; очистка строки возвращает обычный состав блока.

Отбор выполняется на сервере до постраничной выдачи, поэтому находятся и файлы, ещё не загруженные в список. Поиск не учитывает регистр, служебные символы в запросе экранируются и ищутся как обычный текст.

### Панель инструментов блока

В шапке блока «Файлы» доступны кнопки для работы с вложениями:

| Кнопка | Действие |
|---|---|
| Прикрепить файл | До завершения загрузки в окне отображается надпись о статусе загрузки; незавершённые файлы видны на вкладке «Загрузка» |
| Вставить из диска | Открывает Диск для выбора файла. После смены версии файла на Диске он обновляется и в задаче |
| Вставить из буфера обмена | Добавляет файлы и изображения из буфера обмена (Ctrl+V). Доступно на блоках вложений с поддержкой предзагрузки, в том числе в формах создания задачи (НТФ/МТФ) |
| Создать файл | Создание Word (`.docx`), Excel (`.xlsx`) или презентации PowerPoint (`.pptx`) с автоименем «Новый документ» / «Новая таблица» / «Новая презентация» (с цифрой в скобках при дубликате имени) |
| Раскрыть | Полный список вложений в модальном окне |
| Скачать всё | Архив с файлами из «Все» (без файлов из ДП) |
| Прикрепить письмо | Открывает окно выбора письма: доступны все включённые ящики пользователя и любые их папки. Кнопки нет, если у пользователя нет ни одного включённого ящика |
| Очистить удалённые | Стирает помеченные на удаление файлы |
| Показывать удалённые | Включает отображение удалённых файлов в списке |

### Выделение нескольких файлов и массовое удаление

Вложения можно выделить — по одному или все сразу — и удалить выбранные одной операцией. Режим доступен в окне со всеми вложениями задачи, которое открывается кнопкой «Раскрыть», и только если в задаче разрешено удаление файлов. В самом блоке карточки, без раскрытия в окно, выделение не включается.

**Выделение.** У каждого файла появляется флажок: в представлениях «Плитка» и «Галерея» — на карточке файла, в представлении «Таблица» — в строке. Удалённые файлы флажка не получают и в выборку не попадают. В панели инструментов окна есть кнопка выделения всех файлов: пока выделены не все, она подписана «Выделить все», когда выделены все — «Снять выделение».

**Удаление.** Как только выбран хотя бы один файл, в панели инструментов появляется кнопка удаления с подсказкой «Удалить (N)», где N — число выбранных файлов; то же действие с подписью доступно в меню дополнительных действий блока. Перед удалением запрашивается подтверждение «Удалить выбранные файлы (N)?».

Файлы удаляются последовательно, по одному, а вместо кнопки удаления показывается ход операции — «Удаление файлов: N из M»; пока идёт удаление, выделение и запуск повторной операции недоступны. Если часть файлов удалить не удалось, они остаются в задаче, а система выводит сообщение «Не удалось удалить файлы:» с их перечнем.

### Контекстное меню файла

Правый клик по файлу в блоке:

| Пункт | Описание |
|---|---|
| Просмотр | Открыть файл (как клик по нему) |
| Скачать | Сохранить локально. Заблокировано, если нет прав (в т.ч. при перевоплощении) |
| Переименовать | Изменить имя файла, не загружая его заново. Пункт показывается, если есть право изменять файлы в задаче, статус задачи не запрещает правку файлов и файл не зашифрован |
| Заменить файл | Прикрепить другой файл вместо текущего. Пункт доступен там, где файл можно заменить — например, в поле выбора файла и в блоке вложений с правом на изменение |
| Открыть в папке диска | Перейти к папке Диска (только для файлов, вложенных из Диска — отмечены специальной иконкой) |
| Открыть в новой вкладке | Просмотр файла в новой вкладке браузера |
| Закрепить | Закрепляет файл в верхней части блока (иконка-звёздочка) |
| История версий | Окно истории версий: для каждой версии — её номер, вложившие файл пользователи, дата вложения и размер файла. Актуальная версия выделена цветом и стоит верхней строкой, а открытая сейчас отмечена отдельно — это не всегда актуальная версия. В строке есть действие «Открыть эту версию»: просмотр переключается на неё по тем же правилам, что ссылка «Последняя версия», а окно истории закрывается |
| Скопировать ссылку | Копирует прямую ссылку на файл |
| Поделиться в сообщении | Отправляет файл в сообщение выбранной задачи или чата: файл встаёт вложением в поле ввода открывшейся ленты — тем же файлом, без копии и новой версии |
| Удалить | Удалить файл из задачи |

### Копирование и перемещение файла между файловыми полями

Файл можно добавить в дополнительный параметр типа «Файл» или «Мультифайл» прямо из блока «Файлы» задачи или из сообщения в ленте. Откройте меню файла (⋮ или правой кнопкой мыши), выберите «Сохранить копию в» или «Поместить», а затем укажите целевое файловое поле.

- **«Сохранить копию в»** создаёт отдельную копию файла и помещает её в выбранное поле. Исходный файл остаётся на месте.
- **«Поместить»** добавляет тот же файл в выбранное поле, не удаляя его из блока «Файлы» или из исходного сообщения. Это связывание файла, а не его перенос.
- Из поля «Файл» или «Мультифайл» файл можно скопировать в другое файловое поле либо переместить. При перемещении связь с исходным полем заменяется связью с целевым; файл остаётся вложением задачи, новая версия при этом не создаётся.

В списке целей показываются доступные пользователю файловые поля в порядке их расположения в форме. Поле «Файл», уже содержащее файл, и поля, недоступные для редактирования, выбрать нельзя. Если подходящих полей нет, соответствующие команды в меню файла не отображаются.

При связывании или перемещении файла, прикреплённого с Диска, признак Диска сохраняется.

Переименовать файл можно везде, где он показан в задаче: в блоке «Файлы», в ДП «Файл» и «Мультифайл», в том числе в табличном представлении, а также у аудио- и видеовложений. Вводится имя без расширения — расширение сохраняется. Право на переименование — это право изменять файлы, а не удалять их: в категории с запрещённым удалением переименование остаётся доступным. У интерактивных отчётов (вложения `*.dash.html`) пункта нет: имя файла служит признаком, по которому отчёт распознаётся.

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

Выбор «оставить оба» и переименование вручную дают второй самостоятельный файл, а не новую версию первого. У него своя история: первая версия, своя лента изменений и своё окно «История версий». Версии исходного файла дубль не наследует, даже если у исходного их несколько. Если вместо этого выбран пункт «Заменить файл», новая версия пишется в тот же файл — прежняя остаётся в истории.

**Одноимённые файлы при создании задачи.** На форме создания задачи файл создаётся кнопкой «Создать файл» с автоименем, и задать имя вручную нельзя — все созданные файлы одного типа получают одинаковое имя (`text.txt`, `Новый документ.docx`, `Новая таблица.xlsx`). Если таких файлов несколько, каждый становится отдельным вложением задачи, а совпадающие имена разводятся номером в скобках: `text.txt` и `text (1).txt`, `Новый документ.docx` и `Новый документ (1).docx`. Число вложений задачи равно числу файлов, приложенных на форме: ни один файл не теряется и не заменяется версией другого файла. Технические подробности — механизм предзагрузки, признаки «файл с таким именем уже есть» и «создаётся новый файл», порядок привязки файла к задаче и поднятия событий — в документе домена «Files — Backend», раздел о завершении загрузки файла в задачу.

Если документ открыт на редактирование в редакторе Р7 в другой вкладке этого же браузера, переименовать его нельзя — ни в задаче, ни на Диске, ни из просмотрщика: вместо формы появляется окно «Нельзя переименовать документ» с пояснением «Документ редактируется в другой вкладке. Закройте его для переименования.». Открытие документа на другом устройстве, в другом браузере или другим пользователем переименованию не мешает.

В окне «История версий» для каждой версии (кроме единственной и подписанной ЭЦП) отображается кнопка удаления. Когда файл открыт со страницы задачи, права считаются по этой задаче: кнопку видят владелец файла, загрузивший, заказчик задачи и администратор категории, а также все, кому разрешено удаление настройкой категории. Она доступна, если у пользователя есть право на удаление файла — право определяется так же, как право на удаление файла из задачи: пользователь должен быть владельцем файла, загрузившим файл, заказчиком задачи, администратором категории, либо в категории должна быть включена настройка «Разрешить удаление файлов».

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

**Вложения в комментариях и ДП при удалении версии.** Вложение комментария и файл в ДП привязаны к конкретной версии файла, и её удаление привязку не рвёт. Если удаляется версия, на которую смотрит вложение живого комментария или файл в ДП — вручную из истории версий или автоматически, когда число версий превысило разрешённое, — вложение остаётся на месте и показывает оставшуюся версию файла. Содержимое удаляемой версии уходит из хранилища только тогда, когда на тот же объект не ссылается больше никто: ни другая версия файла, ни preupload-запись, ни файл в ДП, ни значение по умолчанию, ни сохранённые правки.Когда пользователь удаляет само сообщение, вложения уходят вместе с ним по тому же правилу «файл или версия»: снятие идёт по всем вложениям сообщения, а если часть файлов снять не удалось, остальные всё равно обрабатываются, а неудавшиеся показываются списком. Подробности — в домене [«Комментарии»](https://help.1forma.ru/domains/comments/business.md).

Версию можно сравнить с текущей: на строке любой неактуальной версии есть кнопка «Сравнить с текущей версией». Она открывает документ в редакторе в отдельной вкладке и показывает различия между выбранной и актуальной версией в режиме рецензирования. Документ при этом открывается только для просмотра, а окно истории версий закрывается. Сравнение доступно для файлов формата `doc`, `docx` и `rtf` при наличии более одной версии; для остальных форматов и на строке текущей версии кнопка не отображается. Нет её и в окне «История изменения» дополнительного параметра, где собрана история файлов по всему параметру, а не по одному файлу.

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

При удалении **текущей** версии файла, привязанного к ДП-параметру, в окне подтверждения выводится предупреждение «Удаление текущей версии удалит файл из ДП».

![Окно «История версий файла»: версии, кто и когда вложил, размер](https://help.1forma.ru/help-images/files/dp_file-history.png)

Прикреплённые файлы отображаются в ленте задачи по-разному:

- Изображения, аудио, видео — превью как для вложений в комментарий.
- Остальные типы — служебное сообщение «Вложен файл `Название файла`» с кликабельной ссылкой.

Если вложить файл с именем, совпадающим с уже существующим **вложением задачи**, он записывается как **новая версия** этого файла, а предыдущая версия отображается в ленте зачёркнутой — как неактуальная. Автоматика, настроенная на событие «новая версия файла», срабатывает именно в этом случае — когда версия записана в уже существующий файл. По переименованному дублю срабатывает только событие «вложен файл»: для дубля это новый файл, а не новая версия. Это системное поведение отображения версий: оно не связано с настройками категории и не отключается.

Правка изображения во встроенном редакторе (см. «Редактирование изображений») попадает в это же правило: отредактированный файл загружается в тот же дополнительный параметр или в ту же ячейку таблицы под исходным именем и становится новой версией того же файла. Новый файл в карточке не заводится, исходная версия остаётся в истории.

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

Совпадение проверяется по имени файла — содержимое не сравнивается. Два разных файла с одинаковым именем становятся версиями одного файла; один и тот же файл, вложенный под разными именами, — двумя разными файлами.

Имя сравнивается только внутри своей группы вложений, и таких групп в задаче несколько:

| Группа | Что в неё входит |
|---|---|
| Вложения задачи | Файлы, вложенные в задачу, и файлы из комментариев — файл из комментария и есть вложение задачи, поэтому он виден на вкладке «Вложения» |
| ДП «Файл» / «Мультифайл» | Файлы этого ДП в этой задаче — у каждого ДП своя группа |
| Столбец ДП «Таблица» с типом «Файл» | Файлы этой ячейки таблицы — своя группа у каждой ячейки |

Между группами имена не пересекаются. Поэтому файл, вложенный в комментарий, не заменяет одноимённый файл в ДП и не создаёт ему новую версию — в задаче окажутся два файла с одинаковым именем, но с разными идентификаторами, правами и историями версий. То же верно для одноимённых файлов в разных ДП одной задачи.

Права на ДП при вложении файла в задачу или в комментарий не проверяются: ДП в этой операции не участвует. Поэтому файл в ДП, доступном только на чтение, вложением из комментария не перезаписывается.

**Запрет перетаскивания (drag) файлов, картинок и аватарок.** Файловые вложения (в блоке «Файлы» и в ленте), медиа-превью в ленте, аватар задачи и общий компонент аватара (используется не только в задачах) блокируют браузерное перетаскивание элемента курсором мыши. Это защищает от случайного «захвата» файла или картинки, которое могло привести к непреднамеренному повторному вложению с тем же именем — а значит, к созданию новой версии файла (см. выше про поведение при совпадении имени).

## Просмотрщик файлов

Большинство файлов можно открыть и посмотреть прямо в системе, не скачивая.

![Просмотрщик файлов с панелью инструментов (поворот, масштаб, информация)](https://help.1forma.ru/help-images/files/file_viewer_image.png)

### Поддерживаемые форматы

Прямо в просмотрщике открываются файлы следующих типов:

| Тип | Расширения |
|---|---|
| Изображения | jpg, jpeg, png, gif, webp, svg, jfif |
| Видео | mp4, webm, ogg, mov |
| Аудио | mp3, ogg, aac |
| PDF | pdf |
| Офисные | doc, docx, xls, xlsx, csv, ppt, pptx, ods, mpp, vsd, vsdx, pub и др. |
| Текст и код | txt, md, json, xml, html, sql, js, ts, cs, py, java, css, yaml, sh, log и др. |
| Письма | msg (Outlook), eml |

Остальные форматы при клике скачиваются.

> В Firefox и Safari не поддерживается воспроизведение `.webm`.

Файл может открываться двумя способами в зависимости от размера экрана и режима просмотра задачи:

- **Боковая панель справа** (на больших экранах) — для задач, чатов и Диска. Сохраняет видимым основной контент. Из боковой панели можно перейти в полноэкранный режим.
- **Полноэкранное модальное окно** — на небольших экранах, а также если для задачи выбран режим просмотра «снизу».

Помимо размера экрана, система выбирает режим в зависимости от формата файла и его пропорций:

| Тип файла | Режим открытия |
|-----------|----------------|
| Видео | Полный экран |
| Презентации (PPTX) | Полный экран |
| Excel (XLSX, CSV — если расширение распознаётся как Excel) | Полный экран |
| Горизонтальные и квадратные изображения (`width/height > 0.7`) | Полный экран |
| Изображения, у которых отсутствуют сохранённые размеры (`extInfo.width/height` не переданы) | Полный экран |
| Word (DOCX) | Сбоку |
| Вертикальные изображения (`width/height ≤ 0.7`) | Сбоку |
| PDF | Сбоку (чаще A4-сканы) |
| Текстовые файлы, txt, прочие форматы | Сбоку |

Порог `0.7` соответствует соотношению `1/1.43` — граница книжного формата A4 (вертикальные изображения открываются сбоку как раньше).

**Исключение — страница «Информация» чата.** Файл из блока «Файлы» открывается там боковой панелью справа независимо от настройки «просмотр задач»: режимы «снизу» и «во всплывающем окне» на него не действуют. Полноэкранный показ остаётся для узкого экрана и для форматов из таблицы выше.

### Оформление просмотрщика

Просмотрщик использует единое системное оформление и в боковой панели, и в полноэкранном модальном окне:

- Шапка оформляется в системных цветах интерфейса: фон шапки, цвет имени файла и цвет кнопок зависят от текущей темы приложения.
- Шапка отделена от содержимого отдельным разделителем, поэтому панель просмотра визуально отделена от содержимого файла.
- Область просмотра использует системный фон интерфейса (светлый в светлой теме, тёмный — в тёмной).
- Модальное окно подчиняется теме приложения: затемняющий фон заменён на системный нейтральный фон интерфейса.

Внешнее оформление просмотрщика (шапка, кнопки, рамка, фон контейнера) подчиняется теме приложения. При этом отдельные особенности показа конкретного формата могут зависеть от его просмотрщика — например, у Markdown-файлов часть параметров отображения доступна в самом просмотрщике.

### Панель инструментов просмотрщика

В шапке просмотрщика доступны действия с открытым файлом:

| Кнопка | Действие |
|---|---|
| Повернуть | На 90° по часовой стрелке. Каждое нажатие |
| По размеру экрана | Вписывает изображение в область просмотра целиком, без обрезки — в том числе маленькое, для которого это больше 200%. Пока картинка вписана, кнопка приглушена; режим включается сам, когда масштаб уменьшили до вписанного вручную. Выход из режима зависит от направления действия: если вписанный масштаб меньше 100% (оригинал не помещается в зону), «Приблизить» и колесо вверх переводят изображение на 100% и центрируют его, а «Уменьшить» и колесо вниз масштаб не меняют; если картинка открыта увеличенной сверх оригинала, «Уменьшить» переводит её на 100%, а «Приблизить» меняет масштаб обычным шагом |
| Увеличить / Уменьшить масштаб | Изменение масштаба (также колесом мыши) |
| Информация | Модальное окно: пункты зависят от типа (для видео — продолжительность, для изображений — разрешение и т.п.) |
| Кодировка | Список кодировок: UTF-8, WINDOWS-1251, UTF-16, KOI8-R. Текущая кодировка определяется автоматически, при необходимости её можно выбрать вручную. Ручной выбор имеет приоритет и сохраняется при переходе в редактирование |
| Редактировать | Для текстовых и кодовых файлов, в том числе JSON, Markdown и HTML: переводит файл из просмотра в правку без перезагрузки просмотрщика — см. «Просмотр и редактирование» ниже |
| Сохранить | В режиме редактирования; активна только после первой правки |
| Редактировать изображение | Для изображений: открывает встроенный редактор (поворот, кадрирование). Сохранение правки создаёт новую версию того же файла — см. «Редактирование изображений» ниже |
| Отмена | В режиме редактирования: отбрасывает несохранённые правки и возвращает к просмотру |
| Поиск | Поиск по содержимому файла (для текстовых и кодовых файлов); то же действие, что `Ctrl/Cmd+F`, с подсветкой вхождений. Недоступен для Markdown в режиме просмотра и для HTML в режиме предпросмотра — у HTML для поиска переключитесь в режим кода; в режиме редактирования доступен для любого текстового файла |
| Открыть в новой вкладке | Открыть файл в новой вкладке. Контекст (чат, задача, список соседних вложений) при этом не передаётся — пользователь видит только этот файл без переключения на соседние |
| Скопировать ссылку | Копирует прямую полную ссылку на текущую открытую версию файла (не на открытый в просмотрщике файл); просмотрщик при этом не закрывается. Ссылка идентична ссылке для действия «Открыть в новой вкладке» и тоже ведёт в просмотрщик; контекст по ней не передаётся |
| Скачать | Сохранить локально. Заблокировано без прав, в т.ч. при перевоплощении |
| Скачать всё | ZIP-архив всех файлов. **Не включает** файлы с опцией «Защитить файл от загрузки» |
| Просмотр версий | Окно истории версий: актуальная версия помечена цветом, открытая сейчас — отдельно; из строки можно открыть выбранную версию |
| Переименовать | Пункт меню «Ещё». Открывает форму нового имени — см. «Переименование из просмотрщика» ниже |

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

1. Имя файла.
2. Размер.
3. Дата создания — дата и время создания первой версии.
4. Последнее изменение — дата и время последней версии; строка показывается, только если эта дата отличается от даты создания.
5. Количество версий.
6. Метаданные файла: разрешение для изображения или продолжительность для видео.
7. Формат.
8. Владелец.
9. Автор.

Даты создания и последнего изменения не показываются там, где просмотрщик не получает историю версий, — например, при просмотре вложения письма или встречи либо предзагруженного файла. Метаданные изображения и видео берутся из сведений о файле, а если их нет — из открытых изображения или видео. Владелец и автор показываются, когда соответствующие данные доступны.

Первый показ изображения зависит от того, как оно соотносится с областью просмотра, а не от формальных размеров файла.

| Как выглядит картинка при открытии | Что происходит |
|---|---|
| Не помещается в область просмотра целиком | Открывается вписанной целиком — по ширине окна и без полос прокрутки, даже если одна сторона картинки заметно длиннее другой (широкий кроп экрана, вертикальный скриншот телефона) |
| Меньше области просмотра | Увеличивается до размера области, но не более 200% от исходного размера: маленькое лого 400×400 показывается как 800×800 и не размывается на весь экран |
| Очень длинная — вписывание уменьшило бы её более чем в 4 раза (длинная лента, панорама) | Открывается в масштабе 100% с прокруткой — мелкий вписанный вариант был бы нечитаем |

**Границы масштаба.** Уменьшать масштаб можно до исходного размера изображения, а если оно не помещается в окно — до вписанного. Увеличивать — до 400% исходного размера на любой картинке. Шаг изменения масштаба — 10% при каждом нажатии кнопок или прокрутке колеса.

**Кнопка «По размеру экрана»** вписывает изображение целиком — в том числе маленькое, для которого это больше 200%: такое изображение по кнопке растягивается до полного размера области просмотра. Пока картинка показана вписанной, кнопка приглушена; режим включается сам, когда масштаб уменьшили до вписанного вручную.

Дальнейшее поведение зависит от того, с какой стороны от 100% находится вписанный масштаб, и от направления действия:

- **Оригинал больше зоны (вписанный масштаб меньше 100%).** «Приблизить» и колесо вверх переводят изображение на 100%; «Уменьшить» и колесо вниз масштаб не меняют — изображение остаётся вписанным, кнопка «По размеру экрана» остаётся приглушённой. Уменьшить можно до вписанного масштаба, ниже — нельзя.
- **Картинка открыта увеличенной сверх оригинала (например, 400×400 → 190%).** «Уменьшить» переводит её на 100% — дальше она не уменьшается; «Приблизить» меняет масштаб обычным шагом.

**Увеличение при наведении.** В просмотрщике, открытом в боковой панели справа — в карточке задачи, в чате, на Диске и в виджете ленты, — изображение, показанное меньше своего исходного размера, при наведении курсора временно увеличивается до исходного размера. Видимая часть следует за курсором: у левого верхнего края панели видна левая верхняя часть изображения, у правого нижнего — правая нижняя. Пока действует увеличение, изображение нельзя перетаскивать. Когда курсор уходит из области просмотра, возвращаются прежний масштаб и положение по центру. После ручного изменения масштаба — кнопками, колесом мыши или жестом — увеличение при наведении в этом просмотрщике больше не срабатывает.

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

Пункт показывается, когда просмотрщик знает, где лежит файл: он открыт из задачи, из файлового ДП или из папки Диска. Его нет у файла, открытого без сведений о папке-родителе — например, после перехода к соседнему файлу на Диске стрелками, — у файлов из ячеек ДП «Таблица», в режиме «только просмотр», у предзагруженного файла и при просмотре вложений письма и встречи. Зашифрованный файл переименовать нельзя: пункт доступен, но операция отклоняется с ошибкой. Права для показа пункта просмотрщик не запрашивает — их проверяет сервер при сохранении нового имени: нужно право изменять файлы в задаче или в папке Диска, где лежит файл, а у файлов задачи и её ДП статус задачи не должен запрещать правку файлов; иначе операция отклоняется с ошибкой.

### Порядок соседних файлов

Если файл открыт из контекста с несколькими вложениями (лента комментариев задачи, блок файлов в карточке или таблица папки Диска), в просмотрщике активны кнопки перехода к соседним файлам, а в подписи отображается порядковый номер вида «N из M». Список формируется детерминированно: по дате загрузки от новых к старым, при совпадении даты — по убыванию идентификатора файла. Порядковый номер не меняется при повторном открытии. Файлы из ленты комментариев и из дополнительных параметров (ДП) образуют отдельные списки и в один не смешиваются.

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

### Старая версия файла

Если открыта не последняя версия, в шапке просмотрщика показывается баннер **«Вы смотрите старую версию файла»**. Баннер один для всех типов, которые открываются в просмотрщике: изображение, PDF, видео, аудио, документ Word или Excel, текст и код, письмо. Условие одно — открытая версия не совпадает с последней.

В баннере две ссылки.

| Ссылка | Что делает |
|---|---|
| История версий | Открывает окно истории. Открытая сейчас версия отмечена в нём отдельно от актуальной |
| Последняя версия | Переключает **это же** окно просмотра на последнюю версию и снимает баннер. Второе окно не открывается — ни в боковой панели ленты или карточки задачи, ни в полноэкранном просмотрщике |

На отдельной странице файла ссылка «Последняя версия» дополнительно меняет адрес: в нём появляется номер последней версии, а кнопка «Назад» в браузере возвращает на прежнюю версию и снова показывает баннер. Так же ведёт себя адрес без рамки задачи (`/noframe/file/...`).

Адрес страницы файла без номера версии открывает последнюю версию, и баннера нет. Адрес с номером открывает именно эту версию: если она не последняя, баннер есть.

Офисный документ, открытый с конкретной версией, в Р7 и OnlyOffice показывается этой версией, а не последней. Перейти к правке со старой версии нельзя — только после перехода на последнюю.

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

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

Просмотрщиком можно управлять с клавиатуры:

| Сочетание | Действие |
|---|---|
| `Cmd+E` (Mac) / `Ctrl+E` (Win) | Закрыть превью справа |
| `Esc` | Закрыть превью во весь экран |

`Cmd/Ctrl+E` работает из любого места с открытым превью (грид, канбан, лента, Диск). Если открыты и превью, и карточка задачи — первое нажатие закрывает превью, второе — карточку. При наведении на крестик закрытия отображается подсказка с горячей клавишей.

Поведение зависит от фокуса:

- В поле комментария — выделяется текст комментария.
- В области просмотра файла — выделяется текст файла.
- На странице задачи (вне полей ввода) — выделяется весь текст страницы.

Переключить на предыдущий соседний файл можно клавишами ← или ↑, на следующий — → или ↓ (когда в контексте доступна навигация по соседним вложениям). Стрелки переключают файлы только когда фокус не в поле ввода: если в просмотрщике открыт поиск по документу (`Ctrl+F` / `Cmd+F`), стрелки действуют внутри поля поиска и файлы не переключают. При открытом поверх просмотрщика модальном окне стрелки соседние файлы не переключают.

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

### Текстовые файлы и код

При открытии текстовых и кодовых файлов (`.txt`, `.json`, `.xml`, `.js`, `.ts`, `.cs`, `.py`, `.sql`, `.yaml` и др.) просмотрщик подсвечивает синтаксис. Язык подсветки определяется автоматически по расширению файла; в панели инструментов просмотрщика доступен выпадающий список, которым язык можно выбрать вручную — ручной выбор имеет приоритет и не сбрасывается автоопределением.

Содержимое в формате JSON автоматически форматируется с отступами (в том числе если у файла нет расширения `.json` — распознаётся по содержимому). Если текст не является корректным JSON, он показывается как есть, без изменений.

**Просмотр и редактирование.** Текстовые и кодовые файлы, в том числе JSON, Markdown и HTML, открываются в режиме просмотра. Кнопка «Редактировать» переводит файл в правку без перезагрузки просмотрщика; у Markdown и HTML вместо отрисованного вида при этом показывается исходный текст. «Сохранить» становится активной только после первой правки; после сохранения просмотрщик возвращается в режим просмотра и коротко показывает сообщение «Файл сохранен». «Отмена» без подтверждения отбрасывает несохранённые правки и возвращает прежний текст. Фокус при открытии ставится сразу в область текста, поэтому `Ctrl+A` / `Cmd+A` выделяет содержимое файла, а не элементы панели инструментов. Поиск по содержимому (`Ctrl+F` / `Cmd+F`) доступен прямо в режиме просмотра — переходить в правку для него не нужно. Если в файл внесены правки и окно закрывают крестиком или клавишей `Esc`, просмотрщик спрашивает подтверждение выхода без сохранения.

Кнопки «Редактировать» нет, если у пользователя нет права на изменение файла, если открыта не последняя версия файла — тогда предлагается перейти к последней, — и если файл открыт по пути на Диске.

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

### Кодировка текстового файла

Просмотрщик определяет кодировку txt/json-файла по его байтам и сохраняет правку в той же кодировке, поэтому файл в WINDOWS-1251 не превращается в UTF-8 после сохранения.

Поддерживаются четыре кодировки. Порядок определения такой:

| Кодировка | Как определяется |
|----------|----------|
| UTF-8 | метка BOM или строгая проверка байтов — декодирование с запретом подмены символов |
| UTF-16 | метка BOM |
| WINDOWS-1251 | файл не UTF-8 и не UTF-16 — выбор по частоте русских букв в первых 64 КБ |
| KOI8-R | то же, по тому же признаку; при близких показателях приоритет у WINDOWS-1251 |

Определённая кодировка показывается в списке кодировок на панели инструментов; метка BOM, если она была в файле, сохраняется. Выбор кодировки вручную имеет приоритет: выбранная вручную кодировка сохраняется и при переходе в редактирование, и при сохранении файла. Открытие файла сразу в редактировании определяет кодировку тем же способом.

Файл сохраняется в той кодировке, в которой открыт. Если в тексте есть символ, которого в выбранной кодировке нет, — при сохранении файл целиком переводится в UTF-8: текст не искажается, меняется только кодировка.

### Markdown-файлы

Для `.md` доступны дополнительные настройки. Кнопка настроек появляется в панели инструментов только для Markdown-файлов.

При просмотре Markdown-файла общая оболочка просмотрщика (шапка, кнопки, разделители, внешнее оформление панели или окна) подчиняется теме приложения. Параметры отображения самого Markdown-содержимого при этом дополнительно зависят от выбранной темы отображения Markdown.

**Тема оформления:** Как в приложении / Светлая / Тёмная.

**Ширина контента:** По умолчанию (макс. 800px, центрирован) / Растянуть на всю ширину.

Настройки сохраняются в браузере и синхронизируются между всеми режимами открытия (правая панель, полноэкранная модалка, отдельная страница).

**Поддерживаемые элементы Markdown:** абзац (с **жирным**, *курсивом*, ***жирным курсивом***), заголовки H1–H4, ссылки (в тёмной теме подчёркнуты всегда, в светлой — при наведении), горизонтальный разделитель `---`, цитаты `>`, маркированные и нумерованные списки, таблицы (с разделителями и шапкой), код в строке (моноширинный с фоном), блок кода с подсветкой синтаксиса, встроенные изображения.

**Языки подсветки в блоках кода.** Подсвечиваются блоки с языками JavaScript, TypeScript, CSS, Bash, JSON, SQL, разметка (HTML, XML, SVG), C, C#, ASP.NET. Язык указывается латиницей сразу после открывающих тройных обратных кавычек; без указания языка или для языка не из списка блок остаётся обычным моноширинным текстом.

**Подсветка может появиться не сразу.** Грамматики языков загружаются отдельно от содержимого файла, поэтому при открытии документа блок кода иногда показывается обычным моноширинным текстом и через мгновение оформляется. Обновлять страницу или переоткрывать файл не нужно.

**HTML внутри Markdown.** Теги не отрисовываются, а показываются исходным текстом — ровно так, как написаны в файле; сама markdown-разметка при этом работает как обычно. Поэтому незакрытый или неверный тег не влияет на показ остального документа: файл виден целиком. Исключение — HTML-комментарии `<!-- ... -->`: они не показываются вовсе, как служебные пометки не для читателя.

**Mermaid-диаграммы.** Блок кода с тегом ` ```mermaid ` отрисовывается в диаграмму прямо в просмотрщике (а не показывается как исходный код). Поддерживаются стандартные типы Mermaid — блок-схемы (`flowchart`/`graph`), диаграммы последовательности (`sequenceDiagram`), состояний (`stateDiagram-v2`), ER-связей и др. В одном файле может быть несколько диаграмм. Рендеринг идёт в безопасном режиме (`securityLevel: strict`) — для полу-доверённых .md с Диска.


**Навигация по ссылкам:**

- Относительные на другие `.md` — открывают целевой файл в том же окне.
- С якорем (`файл.md#раздел`) — прокручивает к разделу.
- На папки — открывают папку на Диске.
- Абсолютные `http(s)` — открываются в новой вкладке.
- Поддерживается навигация между папками (`../../folder/file.md`).
- При переходе появляется кнопка «Назад» для возврата.
- При отсутствии файла/папки — уведомление об ошибке.

### HTML-файлы

Файлы `.html`/`.htm` с версии 2.268.425 по умолчанию открываются в режиме live-preview — отрендеренная страница в изолированной песочнице, а не исходный код. В шапке просмотрщика доступна кнопка переключения между превью и кодом.

Корректно отображаются только самодостаточные HTML-файлы — без внешних зависимостей (CDN, подключаемые скрипты и стили из других файлов): всё содержимое должно быть в одном файле. Если файл ссылается на внешние ресурсы, они не подгрузятся — переключитесь на просмотр кода, чтобы увидеть исходный текст.

Поведение распространяется на все HTML-файлы независимо от источника — вложения в задаче, в комментариях, файлы с Диска.

**Отдача с сервера.** Файлы, содержимое которых браузер может выполнить как скрипт (`html`, `htm`, `xhtml`, `svg`, `svgz`), отдаются и скачиваются с заголовком `Content-Disposition: attachment` — inline-отдача в origin приложения не выполняется (иначе файл исполнялся бы как stored XSS). Проверяется не только расширение, но и итоговый Content-Type: иначе расширения вроде `.xht` или `.shtml`, резолвящиеся в исполняемый Mime, обходили бы список. Правило действует одинаково при скачивании через файловый контур, на player-пути и через WebDav.

Следствие для SVG: по ссылке скачивания изображение в этом формате не подставляется в разметку страницы — браузер получает его как файл на сохранение. Поэтому превью SVG-вложений в ленте сообщений и карточке задачи строится по другому адресу — тому же, по которому отдаются миниатюры изображений: там файл приходит с типом векторной графики и показывается картинкой. По этому же адресу открывается SVG-вложение пунктом «Открыть в новой вкладке».

### Редактирование изображений

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

**Правка сохраняется новой версией того же файла.** Файл остаётся в том же месте — в том же дополнительном параметре или в той же ячейке таблицы, имя не меняется, отдельный новый файл не заводится, исходник не перезаписывается. Новая версия появляется в окне «История версий» рядом с предыдущей, вернуться к исходной версии можно обычным выбором в истории.

Работает из дополнительного параметра типа «Файл», типа «Мультифайл», из столбца типа «Файл» в параметре «Таблица» (в том числе в режиме «Набор полей»). В списке мультифайла отредактированный файл остаётся на своём месте — он не переезжает в начало списка.

**Права и ограничения.**

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

## Печать и экспорт карточки задачи

В меню «Файлы» в тулбаре карточки доступен пункт **«Печать и экспорт»**. Открывается окно с шаблонами:

- Клик на шаблон → скачивание сформированного файла Word (`.docx`).
- Кнопка **«Печать»** — экспорт карточки задачи через стандартный диалог печати операционной системы. В PDF-документ попадает только содержимое карточки задачи, **без** боковой панели и панели инструментов.
- Для администраторов: кнопка **«Закрыть окно и перейти в интерфейс управления шаблонами»** — переход к настройкам печатных форм в админ-режиме.

Печатные формы настраиваются администратором в категории.

> **Для сертифицированной сборки (ФСТЭК):** формирование печатного документа Word по шаблону из окна «Печать и экспорт» работает и здесь: документ собирается открытой библиотекой работы с DOCX, а не коммерческим модулем, поэтому сценарий тот же — прямое формирование из карточки, действие маршрута, вложение письма и автоматические сценарии. Печать карточки через стандартный диалог печати операционной системы работает как обычно.

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

## Конвертация в PDF, экспорт в Excel и журнал действий

Документы можно преобразовывать между форматами (например, `.docx` → `.pdf`). Какой конвертер используется по умолчанию, выбирает администратор (см. [admin.md](https://help.1forma.ru/domains/files/admin.md)).

Для **защищённых форм DOCX** (`w:edit="forms"`) с версии 2.268.352 у администратора есть переключатель на альтернативную библиотеку **Aspose** через CustomSettings `DefaultRevisionLib=Aspose` и/или `DefaultConvertLib=Aspose`. По умолчанию используется DevExpress, но на защищённых формах он ломает документ — типичный симптом «пустой лист в PDF» после цепочки «принять правки → конвертировать `.doc` в `.docx`». Параметры разделены: `DefaultRevisionLib` управляет приёмом/отклонением правок, `DefaultConvertLib` — конвертацией Word-документов между форматами (`DOCX` / `EPUB` / `ODT`). Подробнее — в [admin.md](https://help.1forma.ru/domains/files/admin.md) § «CustomSettings — глобальные ключи файлов».

> **Для сертифицированной сборки (ФСТЭК):** документные функции работают на открытых библиотеках, а не на коммерческих: печатные формы собираются на открытой работе с DOCX (OpenXML), конвертация DOC → DOCX — на открытом конвертере, конвертация в PDF — на внешней службе отрисовки, слияние документов и сравнение с оригиналом — на открытом слиянии DOCX. Выгрузки в xlsx и CSV формируются все восемь — те же, что и в полной сборке, — и импорт из Excel доступен: чтение книги выполняется открытой библиотекой работы с xlsx, поэтому табличное поле, загрузка книги листами и перенос листа в таблицу базы работают и здесь. Загрузка, просмотр и скачивание оригиналов файлов работают как прежде; скачивание Word-файла с наложением защиты и удаление комментариев при подписании подчиняются тому же правилу, что и в полной сборке.

При экспорте списка задач в Excel значение ДП «Файл» выводится как кликабельная ссылка для скачивания. Для мультифайлов выводятся отдельные ссылки на каждый файл. Если при переходе по ссылке пользователь не авторизован, он попадает на страницу входа, после чего скачивание продолжается.

Файлы, вложенные в задачу не через ДП, в Excel не экспортируются. Обходной путь — создать скрытый ДП со ссылкой на файл через смарт-автоматизацию.

Все операции с Диском фиксируются в системном журнале: загрузка, удаление, создание и удаление папок, изменение прав доступа, переименование. Для ДП «Файл» и колонок типа «Файл» в ДП «Таблица» логирование включается отдельной настройкой «Логировать действия с файлами». Журнал поддерживает фильтрацию, сортировку, экспорт в CSV/Excel.

## Связи с другими доменами

Работа с файлами связана с несколькими смежными доменами:

| Домен | Связь |
|---|---|
| **Задачи** | Файлы вкладываются в задачи через ДП «Файл» и комментарии. Привязка папки Диска к задаче через смарт-действие |
| **Категории** | Хранилище и настройки хранения файлов задаются на уровне категории |
| **Права доступа** | Права на папки Диска наследуются из прав на задачи и категории |
| **Подписи** | Создание системных копий файлов при согласовании подписи |
| **Смарт-автоматизация** | Привязка папок, конвертация видео, формирование имён файлов через смарт-выражения |
| **Уведомления** | Типы уведомлений «Вложение файла» и «Другие действия с файлами» |
| **Дополнительные параметры** | ДП «Файл» с настройками мультифайла, хранилища, защиты |
| **Интеграции** | Р7 Офис для онлайн-редактирования, микросервис конвертации видео |
| **Отчёты** | Экспорт задач с файлами в Excel; вывод изображений из ДП в отчётах (недоступен при сжатии) |

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

## Шаблоны печатных форм: ошибки тегов и презентации

Ошибка вычисления тега в шаблоне не срывает формирование документа: упавший тег SMART, SMARTSCRIPT или Mustache пропускается, остальные подставляются, а причина записывается в журнал ошибок. Одно и то же правило действует для всех шаблонизаторов — DOCX полной и сертифицируемой сборки и PPTX, — поэтому неверное выражение в одном теге не превращается в отсутствующий документ.

Шаблоном печатной формы может быть не только документ Word, но и презентация: шаблон PPTX заполняется так же, как DOCX, — из печатных форм и смарт-действия «Сгенерировать файл по шаблону». Список шаблонов категории содержит оба формата, а результат отдаётся файлом соответствующего типа.
