Файлы — Администрирование¶
Операционные настройки файлового домена для администратора: файловое хранилище категории (квоты, разделы Диска, привязка папок), видеоконвертация (потоки, TSQL/Lua-паттерны), утилита TaskScanner, Office Web Apps (устарел, удалён в .NET Core), appsettings и CustomSettings. Cross-link на журнал действий — в домене disk.
Файловое хранилище категории¶
Файлы, с которыми ведётся работа в системе, хранятся либо на Диске, либо в таблицах БД.
Разделы Диска и системные папки¶
Стандартные разделы Диска и их назначение:
| Раздел | Назначение | Доступ |
|---|---|---|
| Мои файлы | Личные файлы пользователя | Только пользователь и прямые руководители. Скрывается, если общая настройка Квота личной папки пользователя в файловом хранилище = 0 или не задана |
| Общие файлы | Совместное использование | Всем сотрудникам компании (признак регулируется в настройках профиля). Права на подпапки наследуются по умолчанию |
| Обмен файлами | Обмен между сотрудниками и внешними пользователями | Доступен с версии 2.263. По умолчанию только владелец и администраторы; остальным — по явному назначению |
| Файлы автоматизации | Папки, привязанные к задачам через смарт-автоматизацию | Только сотрудники с правами администратора. Системная подпапка Export configurations — выгрузка конфигурации площадки |
| Файлы замещаемых | Содержимое «Моих файлов» замещаемых сотрудников | Отображается при настроенном замещении |
| Файлы подчиненных | Содержимое «Моих файлов» подчинённых | Отображается для руководителей |

- Системные корни Диска (служебные разделы) используются платформой как специальные корневые узлы и не должны изменяться напрямую на уровне данных.
- ⚠️ Не создавайте папки, имя которых в корне раздела состоит только из цифр — это может привести к конфликту со служебной маршрутизацией и некорректному открытию папки по ссылке. Для таких случаев переименуйте папку в текстовое имя или используйте имя, содержащее не только цифры.
- Адрес в браузере формируется из названий папок, а не из внутренних идентификаторов. Если папка переименована, старая текстовая ссылка может перестать работать.
Квота, привязка папки и права в связанных папках¶
Параметры файлового хранилища пользователя:
| Параметр | Значение по умолчанию | Где хранится |
|---|---|---|
| Квота личной папки пользователя | 5 Гб (5368709120 байт) | Settings.FileStorageUserPartitionQuota |
Квота распространяется на все файлы в любых разделах Диска, для которых пользователь является владельцем. Файлы в задачах и чатах не учитываются.
Для создания единого места хранения всех файлов задачи (вложения задачи + ДП) используется смарт-действие Связать файловую папку с задачей.
- Путь к папке задаётся фиксированным значением или смарт-выражением.
- ⚠️ «Привязанные» папки всегда создаются в разделе Файлы автоматизации. Не используйте для этого раздел Общие файлы.
- После привязки все файлы, вложенные в задачу или в ДП, попадают в связанную папку.
Альтернативный сценарий: сначала файлы вкладываются в привязанную папку на Диске, а затем загружаются в соответствующие ДП. Для этого в ДП «Файл» необходимо разрешить загрузку из Диска. Чтобы ограничить загрузку только из привязанной папки, отключите возможность загрузки из файловой системы.
Если связь настроена, в ДП «Файл» появляется пункт Вставить из диска — он открывает связанную с задачей папку.
При создании связи задачи с папкой Диска пользователям предоставляются права, эквивалентные правам в задаче. Права формируются на основе:
- Прав доступа для групп на категорию:
- «Исполнять» + пользователь является исполнителем текущей задачи
- «Создавать задачи» + пользователь является заказчиком текущей задачи
- «Просмотр всех задач"
- Прав согласно тегам или смарт-доступу
- Прав согласно роли в задаче: подписчик, заказчик, исполнитель или активный заместитель
Подписчик получает права при добавлении и теряет при удалении из подписчиков.
Пользователь получает право на просмотр и редактирование папки, если хотя бы по одному из прав видит связанную задачу. Если все связанные задачи завершены — редактирование папки запрещено.
Доступ к Диску и проверка производительности хранилища¶
По умолчанию Диск доступен всем. Видимость для определённых групп настраивается опцией Функции Диска в настройках рабочего места группы. Настройка влияет на:
- пункт «Диск» в меню сервисов в панели навигации
- пункт «Диск» в меню «Файлы» карточки задачи
- возможность совершать действия с Диском для ДП «Файлы"
Для бенчмарка используется хранимая процедура DiskSpeedBenchmark:
- Создаёт временную таблицу
Test_PreUploadedOnPostTaskFiles(если не существует). - Готовит тестовый блок данных объёмом 200 МБ.
- Измеряет время записи блока в таблицу (результат в миллисекундах выводится в сообщениях SQL Server).
- Измеряет время чтения только что записанных данных.
- По завершении теста временная таблица удаляется.
Эскалация прав через «Обмен файлами» (исправлено в 2.268.360)¶
В классе FileExchangeFolder метод GetUserPermissionsForFiles ранее агрегировал в allPerm весь набор permissions.AllPermissions без проверки членства, поэтому текущему userId подмешивались флаги прав, выданных другим пользователям и группам. На практике это давало эскалацию прав в разделе Обмен файлами.
Исправлено фильтром по членству — учитываются только строки ACL, где p.UserId == userId либо p.GroupId входит в UserGroupsCache.Get(userId).Groups (симметрично GetFolderPermissionsForUser).
Видеоконвертация — операционные параметры¶
Поддерживаемые форматы входящих файлов: MP4, WMV, MOV, AVI. На выходе — единый MP4 для веб-плеера. Обработка выполняется внешним микросервисом конвертации через защищённое API-соединение.
Архитектура решения¶
Решение построено на очередях событий:
- Создаются два потока (
video-convertationиvideo-convertation-callback) и две очереди событий. - Регистрируется сервис типа
UniversalApiдля взаимодействия с микросервисом. - К очереди отправки привязывается смарт-действие «Вызов внешнего сервиса» (передаёт
FileID). - К очереди ответа привязывается Lua-скрипт, который через действие «Скачать файл» (
DownloadFile) забирает конвертированный файл и вкладывает его в задачу. - В категории настраивается автоматизация «Добавить событие в очередь» на событие изменения ДП.
Для ДП, используемого для сжатия, Мультифайл должен быть отключён и не должен быть выбран файловый провайдер.

Параметры потоков, TSQL и Lua-скрипт¶
Параметры обработки очереди видеоконвертации:
| Параметр | Значение |
|---|---|
| Неудачных попыток до прекращения обработки события | 1 |
| Поведение в случае ошибки | Пропустить |
В смарт-действии Вызов внешнего сервиса (привязка к очереди отправки) параметр fileId рассчитывается из контекста очереди:
SELECT JSON_VALUE(data, '$.fileId')
FROM MessageQueue WITH (NOLOCK)
WHERE id = @contextid
В параметре Список файлов формат: ключ file → значение fileId (рассчитанное TSQL-запросом выше).
В привязке к очереди ответа (video-convertation-callback-action) используется смарт-действие Выполнить смарт-скрипт с действием DownloadFile.
Контекстные параметры:
| Параметр | Значение |
|---|---|
@contextid |
nil |
@contextType |
'task' |
FileName |
'Converted file.mp4' (расширение .mp4 обязательно) |
HttpHeaders |
{ 'Authorization' = 'Bearer {APIKey из сервиса UniversalApi}' } |
HttpMethod |
'Post' |
Пример скрипта:
local paramTable = SQL:query_one([[
select JSON_VALUE(data, '$.CallBackUrl') callbackurl
from MessageQueueLog with(nolock)
where id = @contextid
]], {contextid = CONTEXT.Id})
SMART:execute_action('DownloadFile', nil, 'task', {
Task = 12345,
UploadingUserName = 3,
FileLink = paramTable.callbackurl,
FileName = 'Converted file.mp4',
HttpMethod = 'Post',
HttpHeaders = { 'Authorization' = 'Bearer {APIKey}' }
}, false)
APIKeyберётся из настроек сервиса UniversalApi, созданного на шаге 3 архитектурной настройки.
Настройка автоматизации в категории¶
В категории создаётся автоматизация со смарт-действием Добавить новое событие в очередь:
| Параметр | Значение |
|---|---|
| Тип события | Custom |
| Поток | video-convertation (созданный на шаге 1) |
| Пользовательское действие | ID очереди video-convertation-action (созданной на шаге 2) |
| Событие триггера | После смены ДП |
Параметр fileId |
Рассчитывается TSQL из ДП «Файл" |
⚠️ Ограничения для ДП «Файл», используемого в сжатии:
- Опция Мультифайл должна быть отключена
- Файловый провайдер не должен быть выбран
Утилита TaskScanner¶
Утилита сканирования TaskScanner позволяет сканировать документы и загружать электронные образы непосредственно в задачу (в ДП «Файл»).
В прежних версиях утилита доступна для загрузки на странице «Прочие настройки». В настоящее время ссылка в интерфейсе системы удалена; утилита поставляется в виде .zip-архива в служебной категории Репозиторий версий приложения.
Чтобы отсканированный файл можно было вложить в ДП «Файл», в настройках ДП должен быть включён параметр Разрешить сканирование (AllowScanning). Подробнее см. ../ext-params/file/settings-reference.md.
| Ключ | Формат / Значения | Описание |
|---|---|---|
PageSize |
A3, A4, A5 или Ширина×Высота в мм (например, 10x297) |
Размер страницы |
Dpi |
Целое число, например 300 |
Разрешение сканирования |
BitDepth |
Color, Grayscale, BlackAndWhite |
Цветовой режим |
PageAlign |
Right, Center, Left |
Выравнивание страницы |
Журнал «Диск» — см.
../disk/admin.md.Активируется опцией Логировать действия с файлами в настройках ДП «Файл» / «Таблица» (см. также
../ext-params/file/settings-reference.md).Фиксируемые действия: загрузка файла, удаление файла, создание папки, удаление папки, изменение прав доступа, изменение названия папки и т.д.
Office Web Apps / Office Online — настройки сервера (устарело)¶
Office Web Apps Server удалён из платформы после миграции на .NET Core. Параметры ниже остаются в общих настройках приложения для совместимости со старыми инсталляциями, но в актуальной сборке не оказывают эффекта. Для онлайн-просмотра и редактирования документов используйте Р7-Офис (
OfficeOnlineEditor.editor=r7) или OnlyOffice CE (OfficeOnlineEditor.editor=OnlyOffice) — см. администрирование интеграций (раздел «Онлайн-редакторы: MS Office Online и OnlyOffice CE»). Эксплуатационный документ для старых стендов с OWA устарел вместе с самим механизмом.Cross-link. Архитектура и CustomSettings ключи редакторов (
OfficeOnlineEditor,r7/onlyOffice) — в../integrations/admin.md(разделы «MS Office Online (webApps)» и «OnlyOffice CE»). Здесь — параметры серверной настройки Office Web Apps в общих настройках приложения.
Где настраивается: Общие настройки приложения, блок Web Apps.
| Параметр | Назначение |
|---|---|
| Использовать Office Web Apps для просмотра документов в браузере | Включает онлайн-просмотр документов через Web Apps |
| Использовать Office Web Apps для редактирования документов в браузере | Включает онлайн-редактирование |
| Сервер для получения файлов из Office Web Apps | URL вида http://web_apps — адрес WAC-сервера, через который Web Apps запрашивает контент у 1Формы |
| Тип зоны | Внешняя / внутренняя. Соответствует зонам в Discovery.xml. Внешняя — для публикаций через Интернет, внутренняя — для локальной сети |
| Путь к Discovery.xml | Путь к файлу настроек Web Apps относительно каталога приложения, должен начинаться с корня или wwwroot |
| Время жизни токена (сек.) | Таймаут на запрос файла со стороны Web Apps по сгенерированному при открытии токену безопасности |
| ~~Использовать WebDAV~~ | Устаревшее, WebDAV больше не используется |
| Действие с файлами MS Office при клике | Скачать / Открыть для просмотра в веб-интерфейсе / ~~Открыть для редактирования в десктопном приложении (WebDAV)~~ |
⚠️ Для запуска редактора Office Online (OfficeOnlineEditor.editor=webApps) дополнительно требуется WOPI-discovery в корне веб-сервера: C:\inetpub\wwwroot\{App}\wopi. Без этого файла редактор не откроется.
appsettings.json и CustomSettings — ключи файлов¶
Ключи серверной конфигурации и CustomSettings, влияющие на работу с файлами:
| Ключ | Тип | Назначение |
|---|---|---|
UseDevexpressDocToPdfConverter |
bool | Использовать DevExpress для конвертации DOC→PDF. Проверяется, если не задан CustomSetting DefaultConverterPdf. Если ни ключ, ни пользовательская настройка не заданы — по умолчанию используется SautinSoft |
| Ключ | Тип / Default | Назначение |
|---|---|---|
Tus.PreuploadEnabled |
bool | Включает механизм предварительной загрузки. При true сервер ждёт preupload-запросы перед основной передачей файла |
Tus.PreuploadEnpoint |
string (URI) | Конечная точка preupload-запросов. Пример: /files/tus/preupload |
Tus.FileExpirationInHours |
int / null |
TTL загруженного файла в часах. По истечении — удаляется джобом CleanExpiredFilesFromPreuploadedTusStoreJob. null — не удалять |
Tus.StoreType |
Local / S3 |
Тип хранилища временных файлов |
Tus.Local.Path |
path | Путь хранения для StoreType=Local. Пример: D:/tus/ |
Tus.S3.BucketName |
string | Имя бакета S3 |
Tus.S3.Region |
string | Регион (us-east-1 для совместимости с MinIO) |
Tus.S3.Endpoint |
URL | Endpoint S3 / MinIO |
Tus.S3.ForcePathStyle |
bool | true — path-style URL (<endpoint>/<bucket>/<key>) |
Tus.S3.AccessKey / SecretKey |
string | Ключи доступа |
Tus.S3.PreferredPartSizeInBytes |
int | Рекомендуемый размер части. Пример: 5242880 (5 МБ) |
⚠️ Для перехода между Local и S3 нужен перезапуск приложения.
| Ключ | Тип | Назначение |
|---|---|---|
FileIdToStartOcr |
int | Минимальный ID файла (FileStorageFiles.Id), с которого начинают обработку джобы OcrJob (распознавание текста в img/jpg/png) и TikaJob (извлечение текста из документов). Запуск каждые 15 минут. Использовать для постепенной активации OCR на больших инсталляциях |
SautinSoftLicenseKey |
string | Лицензионный ключ библиотеки SautinSoft.PdfMetamorphosis (используется при DefaultConverterPdf=SautinSoft). Без ключа конвертер работает в пробном (ограниченном) режиме |
DefaultConverterPdf |
string | Конвертер документов в PDF (SautinSoft / другие). См. business.md § «Конвертация документов в PDF» |
DefaultRevisionLib |
string | Библиотека для приёма/отклонения правок в DOCX. Значения: Devexpress (по умолчанию) / Aspose. С версии 2.268.352: Aspose корректно работает с защищёнными формами (w:edit="forms"), DevExpress на таких файлах падает или возвращает пустой документ |
DefaultConvertLib |
string | Библиотека для конвертации Word-документов между форматами DOCX / EPUB / ODT. Значения: Devexpress (по умолчанию) / Aspose. С версии 2.268.352: Aspose корректно конвертирует защищённые формы (w:edit="forms"), DevExpress их ломает — типичный симптом был пустой PDF после цепочки «принять правки → конвертировать .doc → .docx → PDF» |
⚠️ В сертифицированной сборке (ФСТЭК) настройки
UseDevexpressDocToPdfConverter,DefaultConverterPdf,SautinSoftLicenseKey,DefaultRevisionLibиDefaultConvertLibне применяются — библиотеки DevExpress, SautinSoft, Aspose и другие коммерческие компоненты конвертации документов исключены из сборки целиком. Конвертация документов форматов DOC/DOCX/XLSX в PDF в этой сборке недоступна.
Связанные документы¶
Смежные разделы:
- files/business.md — бизнес-логика (видеоконвертация архитектурно, ограничения)
- disk/admin.md — журнал действий
- ext-params/file/settings-reference.md — настройки ДП «Файл» (
AllowScanning,IsLogFileReadsActionи др.) - categories/admin.md — настройки категории (автоматизации, права)
- system/admin.md — общие настройки приложения (квота личной папки)