Хранит информацию о подписании элемента приложения. Содержит в себе методы создания файла с телом подписи и атрибутами,
а также метод для получения детальной инфомации о подписи.
Возвращает файл с содержимым CMS подписи. Используется для создания временного файла с прикреплённой подписью.
Далее этот файл можно скачать по ссылке или сохранить в системе.
В примере выполняется получение CMS-файла подписи для элемента приложения:
const app = await Context.data.signs?.fetch();
if (!app) {
thrownewError('Приложение не найдено');
}
const signHistory = await app.getSignHistory();
const entity = signHistory.find(s => s.type === SignType.File);
if (!entity) {
thrownewError('Подпись файла не найдена');
}
const signID = entity.signs[0].__id;
const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signID)).first();
if (!sign) {
thrownewError('Подписи с таким идентификатором не существует');
}
// Запрос на получение CMS-файла подписей
Context.data.cmsFile = await sign.createCMSFile();
Возвращает подробную информацию о подписи и публичном ключе,
с помощью которого она вычислена. Из публичного ключа
извлекаются атрибуты выдавшего и получившего сертификат, а также
даты действия, название и номер публичного ключа. Атрибуты именуются в
соответствии с RFC 2253, однако атрибуты, не входящие
в список стандартных CertNames, не кодируются в формат hex.
В примере извлекается детальная информация о подписи для сохранения серийного номера сертификата в контекст процесса:
// Идентификатор подписи хранится в контекстеconst signId = Context.data.signId;
if (!signId) {
thrownewError('Идентификатор подписи не найден');
}
// Поиск подписи по идентификаторуconst sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first();
if(!sign) {
thrownewError('Подпись не найдена');
}
// Извлечение последней подписи из историиconst lastSign = sign.signs[0];
if (!lastSign) {
thrownewError('Необходима подпись для извлечения детальной информации');
}
// Извлечение деталей подписиconst signDetails = await lastSign.getDetails();
// Сохранение серийного номера сертификата в контекст
Context.data.certificateId = signDetails.certSerialNumber;
Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы
(пользователи, файлы, элементы приложений, документы).
Этот метод, например, можно вызвать после массового изменения данных в объекте.
const app1 = await Context.data.app1.fetch();
const app2 = await Context.data.app2.fetch();
app1.data.executors.push(app2.data.executors);
app1.normalize();
// Далее перебираем элементы нового массива
app1.data.executors.forEach( ... );
Returns void
setComment
setComment(comment: string): Promise<void>
Метод добавляет комментарий к подписи.
После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи.
Комментарий добавляется в виде строки.
В примере комментарий сохраняется в черновик после подписания у внешнего провайдера:
// Извлечение идентификатора подписи для черновикаconst draftSignId = Context.data.draftSignId;
if (!draftSignId) {
thrownewError('Необходим идентификатор подписи');
}
// Поиск подписи по идентификаторуconst entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first();
// Загрузка содержимого в черновик подписиlet comment = "some comment";
await entitySign.setComment(comment);
Метод позволяет установить статус заявки подписи элемента приложения.
С помощью данного метода можно сменить статус заявки.
В метод передается новый статус.
const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq('<some id>')).first();
// `getEntitySignStatus` — внутренняя функция для получения статуса, который необходимо установить// для заявки подписи элемента приложенияconst status = getEntitySignStatus();
await entitySign.setStatus(status);
После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи.
Подпись загружается в виде файла, полученного в результате подписания.
В примере подпись сохраняется в черновик после подписания у внешнего провайдера:
// Извлечение идентификатора подписи для черновикаconst draftSignId = Context.data.draftSignId;
if (!draftSignId) {
thrownewError('Необходим идентификатор подписи');
}
// Поиск подписи по идентификаторуconst entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first();
// Извлечение подписи, полученной через внешнего провайдера, функция `getSignContentFromExternalProvider` вызывается для примераconst sign = await getSignContentFromExternalProvider();
// Загрузка содержимого в черновик подписиawait entitySign.uploadSign(sign);
Подпись
Хранит информацию о подписании элемента приложения. Содержит в себе методы создания файла с телом подписи и атрибутами, а также метод для получения детальной инфомации о подписи.
Type parameters
I: Item<ItemData>
Hierarchy
Properties
Readonly code
Код приложения цели ссылки (код приложения).
Readonly data
Значения полей объекта.
Readonly fields
Описание полей объекта.
Readonly id
Идентификатор цели ссылки.
Readonly namespace
Пространство имён цели ссылки (код раздела приложения).
Methods
addTags
Метод добавляет теги к уже созданной подписи.
К уже прикреплённым тегам добавляются новые, при этом повторяющиеся теги исключаются. При добавлении несуществующих тегов метод вернёт ошибку.
В примере теги добавляются в черновик после подписания у внешнего провайдера:
// Извлечение идентификатора подписи для черновика const draftSignId = Context.data.draftSignId; if (!draftSignId) { throw new Error('Необходим идентификатор подписи'); } // Поиск подписи по идентификатору const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first(); if (!entitySign) { throw new Error('Подпись не найдена'); } // Поиск тега по заданному коду const tag = await System.signs.tags.search().where(f => f.tagCode.eq(Context.data.tagCode)).first(); if (!tag) { throw new Error('Тега подписи не существует'); } // Добавление тега в черновик подписи await entitySign.addTags([tag]);Parameters
tags: SignTagItemRef[]
Returns Promise<void>
createAttributesFile
Метод создает файл из подписанных атрибутов элемента приложения.
Возвращает значения подписанных атрибутов в виде файла.
В примере получаем файл подписанных атрибутов по заданному идентификатору подписи:
// Идентификатор подписи хранится в контексте const signId = Context.data.signId; if (!signId) { throw new Error('Идентификатор подписи не найден'); } // Поиск подписи по идентификатору const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first(); if(!sign) { throw new Error('Подпись не найдена'); } // Получение файла с подписанными атрибутами элемента приложения и запись в контекст Context.data.signFiles = await sign.createAttributesFile();Returns Promise<FileItem | undefined>
Файл с атрибутами элемента приложения, которые были подписаны.
createCMSFile
Метод генерирует CMS-файл подписи.
Возвращает файл с содержимым CMS подписи. Используется для создания временного файла с прикреплённой подписью. Далее этот файл можно скачать по ссылке или сохранить в системе.
В примере выполняется получение CMS-файла подписи для элемента приложения:
const app = await Context.data.signs?.fetch(); if (!app) { throw new Error('Приложение не найдено'); } const signHistory = await app.getSignHistory(); const entity = signHistory.find(s => s.type === SignType.File); if (!entity) { throw new Error('Подпись файла не найдена'); } const signID = entity.signs[0].__id; const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signID)).first(); if (!sign) { throw new Error('Подписи с таким идентификатором не существует'); } // Запрос на получение CMS-файла подписей Context.data.cmsFile = await sign.createCMSFile();Returns Promise<FileItem>
CMS-файл подписи.
createSignFile
Метод генерирует файл с подписью.
Возвращает файл с содержимым подписи. Используется для получения тела подписи в виде файла.
В примере выполняется извлечение файла подписи по её идентификатору:
// Идентификатор подписи хранится в контексте const signId = Context.data.signId; if (!signId) { throw new Error('Идентификатор подписи не найден'); } // Поиск подписи по идентификатору const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first(); if(!sign) { throw new Error('Подпись не найдена'); } // Получение файла подписи и запись в контекст Context.data.signFile = await sign.createSignFile();Returns Promise<FileItem>
Файл с подписью.
deleteTags
Метод удаляет заданные теги у подписи.
Если какие-то из указанных тегов не прикреплены к подписи, они игнорируются.
// Извлечение идентификатора подписи для черновика const draftSignId = Context.data.draftSignId; if (!draftSignId) { throw new Error('Необходим идентификатор подписи'); } // Поиск подписи по идентификатору const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first(); if (!entitySign) { throw new Error('Подпись не найдена'); } // Поиск тега по заданному коду const tag = await System.signs.tags.search().where(f => f.tagCode.eq(Context.data.tagCode)).first(); if (!tag) { throw new Error('Тега подписи не существует'); } // Удаление тега у подписи await entitySign.deleteTags([tag]);Parameters
tags: SignTagItemRef[]
Returns Promise<void>
fetch
Запрос полных данных объекта-ссылки.
Returns Promise<EntitySignItem>
getDetails
Метод получает детальную информацию о подписи.
Возвращает подробную информацию о подписи и публичном ключе, с помощью которого она вычислена. Из публичного ключа извлекаются атрибуты выдавшего и получившего сертификат, а также даты действия, название и номер публичного ключа. Атрибуты именуются в соответствии с RFC 2253, однако атрибуты, не входящие в список стандартных CertNames, не кодируются в формат hex.
В примере извлекается детальная информация о подписи для сохранения серийного номера сертификата в контекст процесса:
// Идентификатор подписи хранится в контексте const signId = Context.data.signId; if (!signId) { throw new Error('Идентификатор подписи не найден'); } // Поиск подписи по идентификатору const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first(); if(!sign) { throw new Error('Подпись не найдена'); } // Извлечение последней подписи из истории const lastSign = sign.signs[0]; if (!lastSign) { throw new Error('Необходима подпись для извлечения детальной информации'); } // Извлечение деталей подписи const signDetails = await lastSign.getDetails(); // Сохранение серийного номера сертификата в контекст Context.data.certificateId = signDetails.certSerialNumber;Returns Promise<SignDetails>
Детальная информация о подписи.
normalize
Удаление дублирующихся данных в массивах.
Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).
Этот метод, например, можно вызвать после массового изменения данных в объекте.
const app1 = await Context.data.app1.fetch(); const app2 = await Context.data.app2.fetch(); app1.data.executors.push(app2.data.executors); app1.normalize(); // Далее перебираем элементы нового массива app1.data.executors.forEach( ... );Returns void
setComment
Метод добавляет комментарий к подписи.
После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи. Комментарий добавляется в виде строки.
В примере комментарий сохраняется в черновик после подписания у внешнего провайдера:
// Извлечение идентификатора подписи для черновика const draftSignId = Context.data.draftSignId; if (!draftSignId) { throw new Error('Необходим идентификатор подписи'); } // Поиск подписи по идентификатору const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first(); // Загрузка содержимого в черновик подписи let comment = "some comment"; await entitySign.setComment(comment);Parameters
comment: string
Returns Promise<void>
setStatus
Метод позволяет установить статус заявки подписи элемента приложения.
С помощью данного метода можно сменить статус заявки. В метод передается новый статус.
const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq('<some id>')).first(); // `getEntitySignStatus` — внутренняя функция для получения статуса, который необходимо установить // для заявки подписи элемента приложения const status = getEntitySignStatus(); await entitySign.setStatus(status);Parameters
status: EntitySignOperationStatus
Returns Promise<void>
uploadSign
Метод загружает содержимое подписи.
После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи. Подпись загружается в виде файла, полученного в результате подписания.
В примере подпись сохраняется в черновик после подписания у внешнего провайдера:
// Извлечение идентификатора подписи для черновика const draftSignId = Context.data.draftSignId; if (!draftSignId) { throw new Error('Необходим идентификатор подписи'); } // Поиск подписи по идентификатору const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first(); // Извлечение подписи, полученной через внешнего провайдера, функция `getSignContentFromExternalProvider` вызывается для примера const sign = await getSignContentFromExternalProvider(); // Загрузка содержимого в черновик подписи await entitySign.uploadSign(sign);Parameters
sign: ArrayBuffer
Returns Promise<void>
Ваш отзыв успешно отправлен!
Спасибо за обратную связь.