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

- Системные корни Диска (служебные разделы) используются платформой как специальные корневые узлы и не должны изменяться напрямую на уровне данных.
- ⚠️ Не создавайте папки, имя которых в корне раздела состоит только из цифр — это может привести к конфликту со служебной маршрутизацией и некорректному открытию папки по ссылке. Для таких случаев переименуйте папку в текстовое имя или используйте имя, содержащее не только цифры.
- Адрес в браузере формируется из названий папок, а не из внутренних идентификаторов. Если папка переименована, старая текстовая ссылка может перестать работать.
Ограничение выбора групп «сотрудники / несотрудники»¶
В диалоге назначения прав на папку Диска (DiskAccessAddDialogComponent) выбор групп-получателей теперь фильтруется по типу папки. Для типов IStorageFolderType.PublicFolder («Общие файлы»), SubordinatesFolders («Файлы подчинённых») и SubstitutedPrincipalsFolders («Файлы замещаемых») в поиске получателей используется критерий ISearchCriteriaType.userIsEmployeeCriteria вместо общего userCriteria — эти разделы предназначены только для сотрудников компании, поэтому группы, состоящие из несотрудников (например, внешние пользователи «Обмена файлами»), в подсказках выбора не появляются и права им назначить нельзя. Для остальных типов папок (в т.ч. Обмен файлами, Мои файлы, Файлы автоматизации) действует прежний критерий userCriteria — доступны любые группы.
Квота, привязка папки и права в связанных папках¶
Параметры файлового хранилища пользователя:
| Параметр | Значение по умолчанию | Где хранится |
|---|---|---|
| Квота личной папки пользователя | 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).
Провайдеры хранения файлов¶
Файлы, загружаемые в систему и вкладываемые в задачи, физически хранятся через провайдер загружаемых файлов — именованную конфигурацию хранилища. Провайдеров может быть несколько; новые файлы записываются через тот, который выбран в настройке «Вкладывать новые файлы через провайдер».
Где настраивается: Администрирование → Подключения → Провайдеры файлов (~/spa/administration/file-providers); требуются права администратора. Admin API — /api/admin/fileproviders. Таблица БД: dbo.FileProviders; провайдер, через который пишутся новые файлы, помечен в ней флагом UseToWriteFiles.
На странице три элемента: кнопка «Создать» для добавления провайдера, выпадающий список «Вкладывать новые файлы через провайдер» с собственной кнопкой «Сохранить» (именно он определяет, куда пишутся новые файлы) и таблица настроенных провайдеров — клик по строке открывает настройки провайдера.
Поддерживаемые типы (FileProviderTypes):
| Значение | Тип | Хранилище |
|---|---|---|
| 1 | MSSQL | MS SQL varbinary с полнотекстовым поиском |
| 2 | MSSQLNoFulltextSearch | MS SQL без полнотекстового поиска |
| 3 | Sharepoint | Интеграция с SharePoint |
| 4 | MSSQLFileStreamProvider | MS SQL FileStream |
| 5 | MSSQLWithTextContent | MS SQL с текстовым содержимым |
| 6 | PostgreSQL | PostgreSQL bytea |
| 7 | S3 | S3-совместимое хранилище (MinIO, AWS) |

Провайдер, выбранный в настройках категории или в ДП «Файл», удалить нельзя: система вернёт ошибку «Невозможно удалить провайдер, так как он используется» с перечнем категорий — сначала нужно убрать связь.
Создание провайдера¶
Новый провайдер добавляется кнопкой «Создать»: выбирается тип, задаётся имя и параметры подключения. Состав полей формы зависит от выбранного типа. Готовые сценарии для двух основных вариантов — MS SQL и S3 — приведены ниже.

⚠️ В PostgreSQL тип bytea физически не хранит объекты больше 1 ГБ — это внутреннее ограничение самого типа данных.
Параметры провайдера для SQL-хранилищ¶
Чтобы изменить провайдер, откройте его из списка, внесите правки и нажмите «Сохранить». Кнопка «Проверить соединение и сохранить» предварительно выполняет select-запрос к указанной БД и проверяет корректность параметров.

| Поле | Описание |
|---|---|
| Имя | Название провайдера |
| Сжимать данные | Данные сжимаются, если тип провайдера поддерживает сжатие |
| Строка подключения | Основа подключения. Если оставить пустой, провайдер работает с основной базой приложения (TCConnectionString) |
| Имя таблицы | Таблица, в которой хранятся файлы |
| Имя колонки для содержимого файла | Колонка с содержимым файлов |
| Имя колонки для идентификатора файла | Колонка с идентификаторами файлов |
| Имя колонки для расширения файла | Колонка с расширениями файлов |
| Имя БД, Сервер, Логин, Пароль | Переопределяют соответствующие части строки подключения (Initial Catalog, Data Source, User ID, Password); пароль на форме скрыт |
| Порт | Применяется только для провайдера PostgreSQL (по умолчанию 5432). Для MS SQL порт задаётся внутри строки подключения |
⚠️ Поля «Имя БД», «Сервер», «Логин», «Пароль» — не замена строки подключения, а переопределение её частей. Если строка подключения пуста, эти поля не применяются: провайдер использует основную базу приложения, даже когда сервер и имя БД заполнены.
Параметры строки подключения: Data Source (адрес сервера БД), Initial Catalog (имя БД), Persist Security Info, User ID, Password, packet size (размер сетевого пакета), Max Pool Size и Min Pool Size (пул соединений), Connect Timeout, MultipleActiveResultSets (по умолчанию выключено), Encrypt (шифрование соединения).
Подключение MS SQL-хранилища: порядок¶
Предусловия: права администратора в 1Форме; сетевой доступ от сервера приложения до SQL-сервера; учётная запись SQL с правами на чтение и запись в целевой таблице.
-
Создать базу данных для файлов. Рекомендуется отдельная БД под вложения — её можно разместить и на отдельном SQL-сервере (быстрые диски не требуются). Типовой скрипт создания называется
CreateTaskFilesDBи запрашивается у поддержки 1Формы. Отдельная БД не обязательна: если оставить строку подключения пустой, провайдер будет работать с основной базой приложения (TCConnectionString) — тогда шаг сводится к созданию таблицы в ней. -
Выбрать тип провайдера. От типа зависит поиск по содержимому вложений и состав таблицы из следующего шага, поэтому определиться нужно до её создания:
| Тип | Когда выбирать | Что учесть |
|---|---|---|
| MSSQL (1) | Нужен полнотекстовый поиск по содержимому вложений средствами SQL Server | Базовый вариант с полнотекстовым поиском |
| MSSQLNoFulltextSearch (2) | Поиск по содержимому вложений не нужен | То же хранение, без полнотекстового поиска |
| MSSQLWithTextContent (5) | Поиск по вложениям выполняется через Sphinx | При загрузке извлекает текст файла в дополнительную колонку TextContent — имя фиксированное, задать другое в форме нельзя |
| MSSQLFileStreamProvider (4) | Содержимое хранится через механизм SQL Server FileStream | Требует поддержки FileStream на стороне SQL-сервера |
- Создать таблицу для файлов. Имена таблицы и колонок произвольные — они указываются в форме провайдера. Минимальный состав:
| Поле | Тип | Обязательность |
|---|---|---|
| Идентификатор файла | int, identity |
обязательно — провайдер разбирает идентификатор файла как целое число |
| Содержимое файла | varbinary(max) |
обязательно |
| Расширение файла | varchar |
опционально |
TextContent |
текстовый | только для типа MSSQLWithTextContent; имя колонки фиксированное |
Пример для типов 1, 2 и 4 (имена — на своё усмотрение):
CREATE TABLE TaskFilesStorage (
FileID int IDENTITY(1,1) PRIMARY KEY,
FileBody varbinary(max) NOT NULL,
FileExt varchar(50) NULL
);
- Создать провайдер кнопкой «Создать»: задать имя, выбрать тип из шага 2 и заполнить строку подключения к созданной БД; при необходимости уточнить её части полями «Сервер», «Имя БД», «Логин», «Пароль». Указать имя таблицы и имена колонок из шага 3.
⚠️ Если файлы должны лежать в отдельной БД, строку подключения заполнять обязательно: заполненных полей «Сервер» и «Имя БД» недостаточно — при пустой строке подключения провайдер молча использует основную базу приложения.
-
Нажать «Проверить соединение и сохранить». Система выполнит select-запрос к указанной таблице; ошибка на этом шаге означает, что неверны параметры подключения, имена таблицы/колонок или прав учётной записи недостаточно.
-
Переключить запись новых файлов: на странице провайдеров выбрать созданный провайдер в списке «Вкладывать новые файлы через провайдер» и нажать «Сохранить» рядом с этим списком.
-
Проверить результат: вложить файл в любую задачу и убедиться, что в таблице из шага 3 появилась новая строка.
Параметры провайдера S3¶
При выборе типа S3 форма перестраивается под параметры объектного хранилища.

| Поле | Настройка | Описание |
|---|---|---|
| URL сервиса S3 | Endpoint |
Адрес конечной точки хранилища. Указывается обязательно со схемой (http:// или https://); значение без схемы считается некорректным и не проходит проверку соединения при сохранении. Важно: если площадка 1Формы работает по HTTPS, для этого поля (и для «Внешнего URL сервиса S3», если он используется) рекомендуется тоже использовать https:// — система это не проверяет автоматически. При несовпадении схем возможны ошибки уже при использовании: браузер блокирует скачивание файлов (смешанный контент), а обращения к хранилищу могут завершаться ошибкой протокола на стороне самого S3. |
| Внешний URL сервиса S3 | ExternalEndpoint |
Публичный URL доступа к файлам, если отличается от основного. Если 1Форма работает по HTTPS, этот URL тоже должен использовать https:// — по тем же причинам, что и «URL сервиса S3». |
| Бакет S3 | BucketName |
Корзина, в которой хранятся файлы |
| Ключ доступа S3 | AccessKey |
Access Key ID |
| Секретный ключ S3 | SecretKey |
Secret Access Key |
| Регион S3 | Region |
Регион расположения бакета |
| Шаблон имени файла S3 | FileNamingPattern |
Шаблон генерации имён объектов в бакете |
| Использовать пути вместо хоста | ForcePathStyle |
Включено по умолчанию — path-style: {endpoint}/{бакет}/{путь к объекту}. Выключено — virtual-hosted style: имя бакета включается в адрес хоста |
| Доп. настройки S3 (JSON) | ExtSettings |
Дополнительные параметры в формате JSON; ключ LifetimeInMinutes задаёт срок жизни объектов |
Переменные шаблона имени: {uid} — уникальный UUID (исключает коллизии имён), {filename} — исходное имя файла при загрузке, {providerid} — ID провайдера. Если шаблон не задан, применяется default-dir/{uid}-{filename}.
Подключение S3-хранилища: порядок¶
Предусловия: права администратора в 1Форме; сетевой доступ от сервера приложения до endpoint хранилища; доступ к консоли S3-хранилища для создания бакета и ключей.
- В консоли S3-хранилища создать бакет для файлов. Версионирование для файлового бакета включать не обязательно.
- Создать сервисный аккаунт (Access Key) и записать Access Key ID и Secret Key.
- Создать провайдер типа S3 и заполнить форму:
| Поле | Значение |
|---|---|
| Тип | S3 |
| Имя | Произвольное название |
| URL сервиса S3 | https://<адрес-хранилища> — обязательно со схемой |
| Внешний URL сервиса S3 | Публичный адрес, если он отличается от основного; иначе совпадает с ним |
| Бакет S3 | Имя бакета из шага 1 |
| Ключ доступа S3, Секретный ключ S3 | Значения из шага 2 |
| Регион S3 | Для MinIO не требуется — оставить пустым |
| Шаблон имени файла S3 | files/{uid}-{filename} — все файлы в «папке» files/, имена уникальны |
| Использовать пути вместо хоста | Включить: для MinIO обязателен path-style |
- Нажать «Проверить соединение и сохранить» — при успехе провайдер появится в списке.
- На странице провайдеров выбрать созданный провайдер в списке «Вкладывать новые файлы через провайдер» и нажать «Сохранить» рядом с этим списком: новые файлы будут записываться в S3.
- Проверить результат: вложить файл в любую задачу и убедиться, что в бакете появился объект с именем по заданному шаблону.
⚠️ Файловый провайдер S3 и механизм докачки TUS используют разные бакеты, даже если работают с одним сервером. При загрузке файл сначала попадает во временный бакет TUS, а при вложении в задачу копируется в бакет файлового провайдера. Ключи TUS — в разделе «appsettings.json и CustomSettings» ниже.
Что происходит с уже загруженными файлами¶
Переключение настройки «Вкладывать новые файлы через провайдер» меняет только то, куда пишутся новые файлы. Уже загруженные вложения остаются в том провайдере, через который были загружены, и продолжают открываться: у каждого файла хранится ссылка на свой провайдер (FileProviderID) и ключ файла внутри него. Массового переноса содержимого при переключении не происходит.
⚠️ Поэтому прежний провайдер нужно оставить подключённым и работоспособным — иначе ранее загруженные вложения перестанут открываться. Система защищает от части таких ошибок: провайдер, выбранный в настройках категории или в ДП «Файл», удалить нельзя.
Сжатие данных в провайдере¶
Кнопка «Сжать данные в файл провайдере» выполняет однократное массовое сжатие уже хранимых данных — для перехода к работе в режиме сжатия; далее файлы сжимаются при вложении. Сжатие работает, только если его поддерживает выбранный тип провайдера.
Плюс сжатия — файлы занимают меньше места. Минус — не работает поиск по содержимому текстовых файлов, а изображения не выводятся в отчётах FastReport.
⚠️ Для провайдера типа PostgreSQL компрессию включать не нужно: PostgreSQL использует собственный механизм хранения со встроенным сжатием на уровне таблиц (TOAST), и дополнительное сжатие на уровне провайдера заметного выигрыша не даёт.
Сохранить поиск по содержимому при включённом сжатии позволяет задание по таймеру TikaJob — оно извлекает текст вложений в абстракты. Для его работы нужно добавить сервис Tika и выбрать его в общих настройках приложения; список обрабатываемых форматов задаётся в настройках самого сервиса (AllowedFileTypes). С 01:00 до 05:00 по времени сервера задание выполняет полный скан необработанных файлов, в остальное время разбирает их порциями.
⚠️ Провайдер можно пометить как архивный (флаг IsArchive в dbo.FileProviders). При поиске по вложениям такие провайдеры по умолчанию пропускаются: файлы в них остаются доступными, но в результаты поиска не попадают.
Рекомендации по файловым БД¶
- Регулярно заводить новые БД для вложенных файлов; размер каждой — не более 100–200 ГБ.
- Оптимизация БД основного файлового провайдера (
dbcc checkdb) упрощает резервное копирование и работу системного заданияCheckDefaultFileDatabaseJob. - Файловые БД можно размещать на отдельных SQL-серверах; быстрые диски для них не требуются.
Импорт Excel в базу данных¶
Импорт данных из Excel-файла в таблицу рабочей базы — через endpoint POST api/files/import/exceltodb или смарт-действие «Импортировать лист Excel в таблицу БД» — доступен только администраторам. Проверка прав выполняется и на endpoint, и в сервисе импорта (ExcelToDatabaseImportService), поэтому запуск через смарт-действие тоже отсекает не-администраторов.
Имена таблицы и колонок валидируются: отклоняются пустые, длиннее 128 символов и содержащие служебные символы SQL-разметки; обычные заголовки Excel (кириллица, пробелы, дефисы, точки, скобки, запятые и др.) проходят.
Если импорт был настроен от имени сервисной или не-административной учётной записи, переведите его на учётную запись администратора — иначе он перестанет выполняться.
Текущие ограничения на PostgreSQL. Квалифицированные имена вида схема.таблица могут завершаться ошибкой — используйте имя без явной схемы. Лимит длины идентификатора ниже, чем на MS SQL: 63 байта UTF-8 против 128 символов. Кириллический символ в UTF-8 занимает 2 байта, поэтому кириллический заголовок ограничен примерно 31 символом. Имена таблиц и колонок, превышающие лимит, отклоняются при загрузке с ошибкой (не обрезаются) — иначе из-за усечения два разных заголовка могли бы схлопнуться в одну колонку.
Видеоконвертация — операционные параметры¶
Поддерживаемые форматы входящих файлов: 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 нужен перезапуск приложения.
⚠️ Если площадка 1Формы работает по HTTPS, Tus.S3.Endpoint тоже должен использовать https:// — иначе возможны ошибки при скачивании файлов и обращении к хранилищу. Подробнее — disk/admin.md § «TUS preupload для больших файлов».
| Ключ | Тип | Назначение |
|---|---|---|
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 — общие настройки приложения (квота личной папки)