Show/Hide Toolbars

Руководство администратора

Работа с ДП "Файл"

К текущей (актуальной) версии файла вы можете обратиться непосредственно через ДП.

Если в настройках ДП включен признак Мультифайл, в один ДП можно вложить сразу несколько файлов. С такими ДП нужно работать как с коллекцией. Если признак Мультифайл не включен, с ДП нужно работать как с единичным объектом.

Работа с ДП "Файл" как с единичным объектом:

smart_dp_file

 Обращение к файлу, вложенному в ДП без признака "Мультифайл".

Работа с ДП "Файл" как с коллекцией:

smart_dp_multifile

 Обращение к файлу, вложенному в ДП с признаком "Мультифайл".

 

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

Работая с этими коллекциями, вы можете выбирать как сам элемент, так и его свойство FileInfo, которое содержит полную информацию о файле.

smart_file_element
smart_file_fileinfo

 Отбор файлов, вложенных в задачу (два варианта).

!warning Отбор по объектам "Связи файлов с задачами" и "Связи файлов с ДП" дает корректные результаты только в контексте текущей задачи.

Смарт-выражение, использующее отбор из объектов "Связи файлов с задачами" или "Связи файлов с ДП", может возвращать как один, так и несколько файлов (список). Кроме того, если смарт-выражение должно вернуть несколько файлов, можно использовать объединение. Например, чтобы вложить в письмо все файлы, вложенные в задачу, и файл, вложенный в ДП в этой задаче, можно использовать такое-смарт-выражение:

smart_dp_file_5

 В письмо вкладываются файлы из задачи и файл из ДП.

Версии файла

Обращаться можно не только к текущей версии, но и к любой предыдущей версии файла. Самый простой вариант получить ссылку на определенную версию файла - сформировать строку типа FileID.VersionID.

smart_dp_file_3

 Пример обращения к первой версии файла, вложенного в ДП.

!warning Версии файла могут быть скрытыми (служебными). Такие версии не отображаются в истории версий в пользовательском интерфейсе, но к ним можно обратиться, например, через смарт-выражение. Скрытые версии создаются с помощью смарт-действия "Скопировать версию файла" с включенным флажком "Системная копия". Кроме того, скрытые версии могут создаваться при акцепте подписи, в момент сохранения "цифрового снимка" задачи. Создание таких скрытых копий определяется флажком "Создавать системные копии вложенных файлов при акцепте подписи" в настройках категории, ДП "Файл" или колонки "Файл" в ДП "Таблица".

Вложение файлов из других задач

Объекты "Связи файлов с задачами" и "Связи файлов с ДП" можно использовать напрямую только в контексте текущей задачи. Чтобы обратиться к файлам, вложенным в другую задачу, можно использовать конструкцию смарт-выражения как на скриншоте ниже. Исходная задача имеет ID=123456. Смарт-пакет с действием "Вложить файл" запускается из целевой задачи.

smart_dp_file_4

 Пример копирования всех вложенных файлов из одной задачи в другую.

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

Обращение к файлам через SQL-запрос

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

Если "Первая Форма" использует собственное файловое хранилище, то данные о файлах содержаться в таблице FileStorageFiles, а связи с задачами и ДП - в таблицах FileStorageFileToTasksLinks и FileStorageFileToExtParamLinks. Версии файлов хранятся в таблице FileStorageFileVersionsФайловые провайдеры перечислены в таблице FileProviders.

 

/* Базовые мета-данные файлов (без версий) с атрибутом удален ли файл IsDeleted */
SELECT TOP 3 FileId, Name, IsDeleted, *
FROM FileStorageFiles
 
/* Мета-данные  версий файлов с указанием id провайдера и ключа файла */
SELECT TOP 3 FileId, VersionId, FileProviderId, FileProviderKey, *
FROM FileStorageFileVersions
 
/* Список файловых провайдеров */
SELECT TOP 3 * FROM FileProviders
 
/* Связь файлов с задачами (без версионирования) */
SELECT TOP 3 *
FROM FileStorageFileToTaskLinks
 
/* Связь версий файлов с ДП и ДП "Таблица" */
SELECT TOP 3 FileId, VersionId, ExtParamId, TableColumnID, TableRowID, *
FROM FileStorageFileToExtParamLinks
 
/* Контент файлов (отдельная БД) */
SELECT TOP 3 * FROM [TaskFilesDB].dbo.UploadFiles

 

Пример запроса TSQL для выбора последней версии файла 1.docx из задачи с ID=123456:

SELECT CAST(FileStorageFiles.FileId AS varchar(MAX)) + '.' + CAST(FileStorageFiles.LatestVersionId AS varchar(MAX)) AS Expr1
FROM FileStorageFiles
    JOIN FileStorageFileToTaskLinks ON FileStorageFiles.FileId = FileStorageFileToTaskLinks.FileId
WHERE (FileStorageFileToTaskLinks.IsDeleted = 0) AND (FileStorageFileToTaskLinks.TaskId = 123456) AND (FileStorageFiles.Name = '1.docx')

 

Пример запроса TSQL для выбора последней версии файла из ДП с ID=99 в задаче с ID=123456:

SELECT CAST(FileStorageFiles.FileId AS varchar(MAX)) + '.' + CAST(FileStorageFiles.LatestVersionId AS varchar(MAX)) AS expr1
FROM FileStorageFiles
    INNER JOIN FileStorageFileToExtParamLinks ON FileStorageFiles.FileId = FileStorageFileToExtParamLinks.FileId
WHERE (FileStorageFileToExtParamLinks.TaskId = 123456) AND (FileStorageFileToExtParamLinks.ExtParamId = 99)