Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Merged branch "DOC0001238" into parent

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

Файлы можно прикрепить тремя способами:

Действие вложения

Вложения в интерфейсе
Anchor
action
action

Действие и поле типа Image


Вы можете прикрепить файл к полю типа Image или к записи, используя действие вложения. Оно отображается на форме как иконка скрепки .

На скриншоте ниже отмечены два действия вложения на записи формы:

Image Modified

Виджет вложений 
Anchor
widget
widget


Вложения могут быть добавлены через виджет вложений. Для этого вам нужно использовать Simple-тег <attachment> внутри определенного экземпляра виджета. Необязательно указывать атрибуты recordId, tableName для тега <attachment>, расположенного на странице с формой. Поэтому шаблон виджета будет выглядеть следующим образом:

Code Block
<attachment> </attachment> 


Info

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

Вы можете добавить файлы из буфера обмена в виджет прямо на форме с помощью сочетания клавиш Ctrl+V при наведении курсора на область загрузки файлов.

Добавление и управление вложениями

Вы можете прикрепить файлы следующими способами:

  • нажав на Выбрать файлы и добавив их через менеджер файл.
  • перетащив файлы в окно.
  • нажав клавиши Ctrl(Cmd) и на клавиатуре, чтобы вставить изображение из буфера обмена.
  • нажав на Добавить файл и выбрав их через менеджер файлов, если к записи уже были добавлены файлы.

Image Removed

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

Чтобы прикрепить файл к записи, выполните следующие шаги:

  1. Перейдите в запись, к которой вам нужно прикрепить файл.
  2. Откройте окно вложений:
    • Нажмите на иконку скрепки Image Removed в верхнем правом углу.
    • Нажмите на иконку скрепки Image Removed рядом с названием поля.
  3. Прикрепите нужный файл. Вложенные файлы отображаются в верхней части формы или рядом с именем поля.
  4. Закройте окно вложений, чтобы вернуться к записи. 
  5. Нажмите Сохранить или Сохранить и выйти.
Info

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

На скриншоте ниже показано окно вложений:

Image Removed

Удаление вложений

Чтобы удалить прикрепленный файл, выполните следующие шаги:

  1. Перейдите в запись, у которой вам нужно удалить вложенный файл.
  2. Откройте окно вложений:
    • Нажмите на иконку скрепки Image Removed в верхнем правом углу.
    • Нажмите на иконку скрепки Image Removed рядом с названием поля.
  3. Удалите файл или файлы следующими способами:
    • Если прикреплен один файл, нажмите Удалить.
    • Если файлов несколько, наведите курсор на файл, который хотите удалить, нажмите на иконку с тремя точками и опцию Выбрать в контекстном меню. Повторите это действие для всех файлов. Затем нажмите Удалить.
      Image Removed
    • Нажмите Выбрать все и Удалить, чтобы удалить все загруженные файлы.
  4. Закройте окно вложений, чтобы вернуться к записи. 
  5. Нажмите Сохранить или Сохранить и выйти.
Info

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

Копирование вложений

Для копирования вложений используйте серверные скрипты. Это можно сделать одним из двух способов:

Используйте объект base64 исходного вложения. В силу специфики работы метода readBase64, размер копируемого файла ограничен 10 Мб.

Code Block
languagejs
themeEclipse
titleПример
linenumberstrue
collapsetrue
const attachmentRec = new SimpleRecord('sys_attachment');
attachmentRec.get('167654133500015741');
ss.info(`Original size bytes: ${attachmentRec.size_bytes}`);
// Info: Original size bytes: 92414492

const attach = new SimpleAttachment();
const base64Value = attach.readBase64(attachmentRec.sys_id);

const attachCopyId = attach.writeBase64(
  attachmentRec.record_document_id,
  'copy_of_' + attachmentRec.file_name,
  base64Value,
  attachmentRec.mime_content_type
);
if (attachCopyId) {
  attachmentRec.get(attachCopyId);
  ss.info(`/record/sys_attachment/${attachCopyId}`);
  // Info: /record/sys_attachment/167654428100399185
  ss.info(`Copy size bytes: ${attachmentRec.size_bytes}`);
  // Info: Copy size bytes: 0
}

Используйте класс SimpleAttachmentService. Максимальный размер копируемого файла определяется ограничением экземпляра на размер загружаемого вложения, которое задается системным свойством max_file_size_upload.

Code Block
languagejs
themeEclipse
titleПример
linenumberstrue
collapsetrue
const attachmentRec = new SimpleRecord('sys_attachment');
attachmentRec.get('167654133500015741');
ss.info(`Original size bytes: ${attachmentRec.size_bytes}`);
// Info: Original size bytes: 92414492

const importSource = new SimpleRecord('sys_import_source');
importSource.get('167647710807446665'); // From Incident Import Source
const docId = ss.getDocIdByIds(importSource.sys_db_table_id, importSource.sys_id);

const attach = new SimpleAttachment();
const attachUrl = attach.getAttachmentUrlById(attachmentRec.sys_id);
const simpleAttach = new SimpleAttachmentService();
const docID = ss.getDocIdByIds(importSource.sys_db_table_id, importSource.sys_id);
const attachCopyId = simpleAttach.createAttachmentByUrl(attachUrl, docId, `Copy_of_the_${attachmentRec.file_name}`);

if (attachCopyId) {
  attachmentRec.get(attachCopyId);
  ss.info(`/record/sys_attachment/${attachCopyId}`);
  // Info: /record/sys_attachment/167654472004676912
  ss.info(`Copy size bytes: ${attachmentRec.size_bytes}`);
  // Info: Copy size bytes: 92414492
}


Запись вложения 
Anchor
record
record


Когда вы загружаете файл, создается запись в таблице Вложения (sys_attachment). Чтобы открыть эти записи, перейдите во Вложения → Все вложения.

Поля формы записи Вложения

Поле

Обязательно

Описание

Запись в таблицеНетОтображает наименование записи, к которой прикреплен файл. Тип поля: Document ID.
Имя файлаДаОтображает название файла.
Путь к файлуНетОтображает путь к файлу на сервере.
Размер в байтахНетУказывает размер файла в байтах.
MIME-типДаУказывает тип содержимого файла, описанный в стандарте MIME.
ПубличноеНетЭтот атрибут показывает, что данное вложение имеет постоянную ссылку и доступно для общего доступа.

Распознавание
Anchor
parsing
parsing

Распознавание содержимого вложений возможно

Распознавание и индексация

Распознавание и индексация содержимого вложений возможны только в том случае, если размер прикрепленного файла не превышает 30 Мб. Лимит фиксирован и не может быть изменен. Если файл больше 30 Мб, он не будет распознан. Предупреждающее сообщение, связанное с индексацией, будет записано в логах. Вы сможете найти дополнительную информацию позже в таблице Основной журнал (sys_log), используя следующие критерии для фильтра:

  • Уровень равно Предупреждение.
  • Сообщение содержит {ID вложения}

Индексация выполняется только для определенных форматов файлов. Поле Контент будет автоматически заполнено текстовым содержимым прикрепленного файла, если расширение файла входит в список: TXT, INI, REG, CVS, JSON, HTM, HTML, DOC, DOCS, XLS, XLSX. Атрибут Полнотекстовый поиск активен для поля Контент. Этот атрибут позволяет выполнять глобальный поиск по содержанию поля.

этого процесса реализуется следующее событие:

В

В

записи таблицы Вложения (sys_attachment) помещается содержимое вложения, проанализированное из предоставленного файла. Содержимое вложения заполняется в поле Содержимое, а кодировка – в поле Кодировка. Кодировка содержимого определяется автоматически. 

Note

Распознавание и индексация вложений – это фоновые процессыфоновый процесс. В рамках этих процессов реализуются следующие события:

  • Какой-то файл прикреплен к записи любой таблицы (например, к записи 164313550512027919 в таблице Task).
  • После этого создается поисковый индекс для этого вложения. Технически, это запись в таблице Поисковые индексы (sys_search_index) с полями, заполненными следующим образом:

    ПолеТипЗначение
    Запись

    Big Integer

    164313646211541086

    Таблица

    Reference

    Вложения

    Колонка

    Reference

    Контент

    Текст

    Text

    В этом поле появляется контент вложения. 

    Ссылка скачивания вложения

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

    • скачивание одного файла из вложений.
    • скачивания всех файлов из вложений в виде архива.
    • использование ссылки на файл из вложений в HTML-тегах.

    Помимо этого ссылки можно также использовать, чтобы:

    • добавлять изображения в тело поля HTML.
    • добавлять изображения в виджет, задав значение атрибута scr. 

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

    • Ссылки на общедоступные вложения не имеют срока действия. 
    • Непубличные вложения по умолчанию имеют срок в 1 час с момента их создания. Время жизни ссылки определяется системным свойством s3.presigned.link.lifetime.

    Атрибут Публичное на форме записи Вложений определяет публичность вложений. 

    Чтобы скачать вложения, войдите в систему и используйте относительную ссылку /attachments/${sys_attachment.sys_id}. Вы также можете воспользоваться методом getAttachmentUrlById(attachmentId), чтобы сформировать ссылку через API. Чтобы узнать больше, обратитесь к статье SimpleAttachments.

    Info

    В зависимости от публичности вложения, могут быть созданы две ссылки:

    • для непубличных вложений: https://s3-{your-instance-url}/attachment/9/b7/prp5bikeyg70mpn7mhfszi4amgzleo?response-content-disposition=inline%3B%20filename%3D%22image.png...
    • для публичных вложений: https://s3-{your-instance-url}/public-attachment/9/b7/prp5bikeyg70mpn7mhfszi4amgzleo?response-content-disposition=inline%3B%20filename%3D%22image.png...

    Использование настроек REST API для создания вложений

    Вы можете создавать вложения при помощи настроек REST API. Передавайте файлов осуществляется в формате base64, а для получения файлов в этом формате используется метод  readBase64(attachmentId)

    Чтобы отправить вложение при помощи Scripted Rest API, выполните следующее:
    1) Создайте действие API для обработки POST запросов с содержимым вложений.

    Code Block
    themeEclipse
    titleПример скрипта для действия API
    linenumberstrue
    collapsetrue
    (function (request, response) {
      const data = request.getBody();
      const TABLE_ID = data.table_id;
      const RECORD_ID = data.record_id;
      const RECORD_DOC_ID = ss.getDocIdByIds(TABLE_ID, RECORD_ID);
      const attachments = data.attachments;
      const simpleAttach = new SimpleAttachment();
      let createdAttachmentIds = [];
      Object.keys(attachments).forEach(attachment => {
        createdAttachmentIds.push(simpleAttach.writeBase64(RECORD_DOC_ID, ...attachments[attachment]));
      });
      response.setBody(createdAttachmentIds);
    
    }) (SimpleApiRequest, SimpleApiResponse)
    
    
    2) Создайте скрипт для отправки запросов.
    Code Block
    themeEclipse
    titleПример скрипта для отправки POST-запроса
    linenumberstrue
    collapsetrue
    const API_ACTION_URL = ''; 
    const payloadRequest = sws.restRequestV1();
    payloadRequest.setRequestUrl(API_ACTION_URL);
    payloadRequest.setRequestMethod('POST');
    payloadRequest.setRequestHeader('Content-type', 'application/json');
    const payload = {
      table_id: '155931135900000084', // ID записи user
      record_id: '155931135900000001', // ID записи admin
     record  attachments: {
        1: ['file_example.gif', 'R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=', 'image/gif']
      }
    }
    
    payloadRequest.setRequestBody(JSON.stringify(payload));
    const response = payloadRequest.execute().getBody();
    print('Response: ' + response);
    
    Больше информации о настройках в статье Настройки REST API


    Логирование вложений 
    Anchor
    log
    log

    Система регистрирует все операции (кроме чтения) в таблице Основной журнал (sys_log). У операций, связанных с вложениями, значение поля Источник равно Attachment. Перейдите в Системный журнал → Основной журнал.

    Image Added

    Если в процессе прикрепления файлов возникли какие-либо ошибки или исключения, их можно найти в списке Журнал исключений (sys_log_exception). Перейдите в Системный журнал → Журнал исключений.

    Обратитесь к статье Аудит системы, чтобы узнать больше.


    Настройка системных свойств вложений 
    Anchor
    property
    property

    Чтобы настроить свойства вложений, выполните следующие шаги:

    1. Перейдите в Свойства системы → Все свойства.
    2. Найдите нужную запись свойства с помощью полей поиска по списку или конструктора условий и откройте ее.
    3. Отредактируйте значение в поле Значение.
    4. Нажмите Сохранить или Сохранить и выйти.

    Доступные свойства вложений:

    Свойство

    Описание

    max_files_upload_countМаксимальное количество файлов, которое можно загружать одновременно.
    max_file_size_upload

    Максимальный размер файла (в байтах), который можно загрузить.

    allowed_upload_file_extension

    Типы файлов, который разрешено загружать. Перечислите расширения через запятую без пробелов, например: jpeg,png,pdf.

    Файлы других типов будут игнорироваться при загрузке. Чтобы разрешить все типы файлов, введите [].

    Доступ к вложениям 
    Anchor
    access
    access

    Вы может ограничить операции с полями типа Image и вложениям для пользователей определенных ролей с помощью списка контроля доступа (ACL).

    Tip

    Требуемая роль: security_admin.

    Ограничение доступа к полям типа Image


    Чтобы ограничить доступ к полю типа Image, выполните следующие шаги:

    1. Перейдите в Безопасность → Контроль доступа (ACL).
    2. Нажмите Создать и заполните поля.
    3. В поле Колонка, выберите поле типа Image, доступ к которому вам нужно настроить.
    4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

    В результате:

    • Создадутся ограничения на создание, редактирование, чтение и/или удаление записей в указанной таблице. 
    • Указанные правила также будут применяться и к формам портала. 

    В таблице ниже описано влияние ограничений операций для полей типа Image:

    Операция

    Описание

    СозданиеПоле не отображается на записи новой формы и появляется после сохранения записи.
    ЧтениеПоле и его контент (прикрепленные файлы) скрыты.
    ЗаписьПоле доступно только для чтения.

    Ограничение доступа к вложениям


    • Загрузить вложение может только пользователь с правами на создание записей в таблице Вложения (sys_attachment) и на редактирование той записи, к которой он пытается загрузить вложение. Чтобы запретить пользователю загружать вложение, запретите ему одну из этих операций.
    • Удалять вложения может пользователь с правами на удаление записей из таблицы Вложения (sys_attachment) и на редактирование или удаление той записи, из которой он пытается удалить вложение.
    • Скачивать вложения может пользователь с правами на чтение таблицы Вложения (sys_attachment) и чтение записи, к которой прикреплено вложение.
    • Копировать может пользователь с правом на чтение таблицы записи, в которой находится исходное вложение, и с правом редактировать записи в таблице, в которой происходит копирование.

    Вы можете дополнить существующие правила контроля доступа для таблицы Вложения (sys_attachment) новыми правилами с другими условиями, которые не будут противоречить существующим. Для этого выполните следующие шаги:

    1. Перейдите в Безопасность → Контроль доступа (ACL).
    2. Нажмите Создать и заполните поля.
    3. В поле Таблица выберите таблицу Вложения.
    4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

    Дополнительные сведения об ограничениях доступа смотрите в статьях раздела Контроль доступа.

    Table of Contents
    absoluteUrltrue
    classfixedPosition
    printablefalse