Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<Data>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

createDraft

  • createDraft(payload?: ProjectPlanStructure): Promise<ProjectDraftStructure>
  • Метод позволяет создать либо новый пустой черновик, либо черновик от плана проекта.

    const plan = await project.getCurrentPlan();
    const newDraft = await createDraft(plan);
    

    Parameters

    • Optional payload: ProjectPlanStructure

      структура плана проекта.

    Returns Promise<ProjectDraftStructure>

delete

  • delete(): Promise<void>

docflow

fetch

getCurrentPlan

  • getCurrentPlan(): Promise<ProjectPlanStructure | undefined>
  • Метод позволяет получить текущий план проекта.

    const plan = await project.getCurrentPlan();
    

    Returns Promise<ProjectPlanStructure | undefined>

getDataSigns

  • Метод получает внутреннюю подпись данных приложения.

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

    Каждая такая подпись содержит в себе:

    • hash — подпись данных приложения;

    • body — данные, для которых вычислен хеш;

    • type — тип подписи.

    В указанном примере контекст содержит:

    • dokument — приложение типа Файл, включающее настройки подписи.

    В представленном примере выполняется поиск подписи и использование hash, body для сохранения полученной подписи у приложения.

    const app = await Context.data.dokument.fetch();
    const dataSigns = await app.getDataSigns();
    const dataSign = res.find( (res: any)  => res.type === SignType.File);
    
    const newSign: NewSign = {
        sign: "aGVsbG8=",
        codeProvider: "External",
        body: btoa(app.data.__file!.hash),
        hash: dataSign.hash
    }
    
    await app.uploadSign(newSign);
    

    Returns Promise<SignData[]>

getDraft

  • getDraft(): Promise<ProjectDraftStructure | undefined>
  • Метод позволяет получить черновик проекта.

    const draft = await project.getDraft();
    

    Returns Promise<ProjectDraftStructure | undefined>

getFolder

  • getFolder(): Promise<TFolder | undefined>
  • Метод позволяет получить папку элемента иерархического справочника.

    const item = await Context.data.n1;
    const folder = await item.getFolder();
    

    Returns Promise<TFolder | undefined>

getPermissions

  • Метод получает права доступа, установленные для данного элемента приложения.

    Этот метод следует использовать, если нужно добавить новые права доступа к существующим.

    // Добавим права на элемент инициатору процесса
    const item = await Context.data.request.fetch();
    const user = Context.data.__createdBy;
    // Получаем текущие права
    const currPermissions = await item.getPermissions();
    currPermissions.values.push(new PermissionValue(user, [PermissionType.READ]));
    await item.setPermissions(currPermissions);
    

    Returns Promise<TPermissions>

getPlanByVersion

  • getPlanByVersion(version: number): Promise<ProjectPlanStructure | undefined>
  • Метод позволяет получить план проекта по его версии.

    const plan = await project.getPlanByVersion();
    

    Parameters

    • version: number

      версия плана проекта.

    Returns Promise<ProjectPlanStructure | undefined>

getRegistrations

getSettings

getSignHistory

  • Метод получает историю подписей приложения.

    // Пример сохранения подписей в контекстные переменные типа Файл
    const app = await Context.data.dokument!.fetch();
    const signHistory = await app.getSignHistory();
    
    Context.data.sign_attributes = await signHistory[0].signs[0].createSignFile();
    
    const attributes = await signHistory[0].signs[0].createAttributesFile();
    if (attributes !== undefined) {
      Context.data.attributes = attributes;
    }
    

    Returns Promise<EntityVersion[]>

getSubscribers

  • getSubscribers(): Promise<TUser[]>
  • Список пользователей, подписанных на сообщения в ленте элемента приложения.

    // Запишем подписчиков элемента приложения в контекст
    const subscribers = await item.getSubscribers();
    Context.data.subscribers = subscribers;
    

    Returns Promise<TUser[]>

hasPermission

  • hasPermission(orgunit: TPermissionOrgunit, type: PermissionType): Promise<boolean>
  • Метод проверяет наличие права доступа для пользователя, группы, элемента оргструктуры, роли.

    Parameters

    • orgunit: TPermissionOrgunit

      Пользователь, группа, элемент оргструктуры или роль, которым выданы права.

    • type: PermissionType

      Уровень прав.

      const procurement = await Context.data.procurement.fetch();
      
      const user = Context.data.executor;
      
      await procurement.hasPermission(user, PermissionType['READ']);
      

    Returns Promise<boolean>

manualRegister

  • manualRegister(nameReg: string, nomenclatureId: string): Promise<boolean>
  • Метод устарел. Регистрация элемента приложения вручную (если включена регистрация вручную в настройках дела).

    deprecated

    Так как метод устарел, используйте docflow:

    const item = Context.data.d1!
    const settings = await Application.getSettings();
    settings.registrationSettings.nomenclatureIds.forEach(nomenclatureId => {
         item.docflow().manualRegister("Номер 1", nomenclatureId);
    })
    

    Parameters

    • nameReg: string
    • nomenclatureId: string

    Returns Promise<boolean>

normalize

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    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

register

  • register(nomenclatureId: string): Promise<boolean>
  • Метод устарел. Автоматическая регистрация элемента приложения.

    deprecated

    Так как метод устарел, используйте docflow:

    const item = Context.data.d1!
    const settings = await Application.getSettings();
    settings.registrationSettings.nomenclatureIds.forEach(nomenclatureId => {
         item.docflow().register(nomenclatureId);
    })
    

    Parameters

    • nomenclatureId: string

    Returns Promise<boolean>

restore

  • restore(): Promise<void>
  • Метод позволяет восстановить удаленный элемент приложения.

    await Context.data.app.restore();
    

    Returns Promise<void>

save

  • save(): Promise<void>
  • Метод сохраняет элемент приложения.

    Сохранять элемент необходимо после изменения данных элемента.

    const request = await Context.data.service_request.fetch();
    request.data.responsible = Context.data.responsible;
    await request.save();
    

    Returns Promise<void>

sendMessage

  • sendMessage(title: string, message: string): Promise<void>
  • Метод позволяет отправлять сообщения в ленту элемента приложения.

    Parameters

    • title: string

      Тема сообщения.

    • message: string

      Тело сообщения.

      await Context.data.request.sendMessage("Работа по заявке завершена", `Решение: ${Context.data.result}`)
      

    Returns Promise<void>

setFolder

  • setFolder(id: string): Promise<void>
  • Метод позволяет изменять папку элемента иерархического справочника.

    Parameters

    • id: string

      ID папки.

      const item = await Context.data.n1;
      await item.setFolder('00000-00000-00000-00000');
      

    Returns Promise<void>

setPermissions

  • Метод устанавливает новые права на элемент приложения.

    Существующие права полностью заменяются новыми.

    Для элементов приложения не имеют смысла права на создание, поэтому недоступно значение PermissionValue.Create.

    Parameters

    • permissions: TPermissions

      Права доступа, которые будут установлены в элемент приложения.

      const procurement = await Context.data.procurement.fetch();
      
      const user = Context.data.executor;
      
      const permissions = new Permissions(
      [new PermissionValue(user, [PermissionType.DELETE, PermissionType.READ])]);
      
      await procurement.setPermissions(permissions);
      

    Returns Promise<void>

setStatus

  • setStatus(status: TStatus<any, any>, comment?: undefined | string): Promise<boolean>
  • Метод позволяет изменить статус элемента приложения.

    Статус элемента приложения меняется сразу при выполнении этого метода.

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

    Parameters

    • status: TStatus<any, any>

      Статус.

    • Optional comment: undefined | string

      Причина смены статуса.

      const request = await Context.data.request.fetch();
      const finalStatus = request.fields.__status.variants.completed;
      await request.setStatus(finalStatus, "Закрыт автоматически");
      

    Returns Promise<boolean>

subscribe

  • subscribe(user: TUser): Promise<void>
  • Метод позволяет подписать пользователя на сообщения в ленте элемента приложения.

    Parameters

    • user: TUser

      Пользователь.

      // Подпишем текущего пользователя на ленту элемента приложения
      const item = await Context.data.app.fetch();
      const user = await System.users.getCurrentUser();
      await app.subscribe(user);
      

    Returns Promise<void>

unsubscribe

  • unsubscribe(user: TUser): Promise<void>
  • Метод позволяет отписать пользователя от сообщений в ленте элемента приложения.

    Parameters

    • user: TUser

      Пользователь.

      // Отпишем текущего пользователя от ленты элемента приложения
      const item = await Context.data.app.fetch();
      const user = await System.users.getCurrentUser();
      await app.unsubscribe(user);
      

    Returns Promise<void>

uploadSign

  • uploadSign(sign: NewSign): Promise<boolean>
  • Загрузка подписи приложения.

    Метод используется для реализации собственного механизма подписания в приложениях. С помощью данного метода можно использовать для приложения подпись, полученную у внешнего провайдера.

    Для того чтобы воспользоваться методом, необходимо иметь:

    • тело подписи, представленное в формате base64;

    • тип подписи;

    • код провайдера (строковая константа, которая его идентифицирует);

    • хеш данных приложения, которые подписали;

    • данные, по которым вычислена подпись.

    В примере указан скрипт, где:

    • dokument — это приложение типа Документ в контексте;

    • класс MySignProvider — несуществующий провайдер для примера.

    В результате мы получаем флаг, который говорит о результате загрузки. Если флаг имеет значение true, загрузка прошла успешно, false — подпись не загружена.

    const app = await Context.data.dokument.fetch();
    const provider = new MySignProvider();
    const innerSigns = await Conetxt.data.dokument.getDataSigns();
    
    const attributesInnerSign = innerSigns.find(sign => sign.type === SignType.Attributes);
    const sign = provider.Sign(attributesInnerSign.body);
    
    const newSign: NewSign = {
        sign: sign,
        codeProvider: "MyProvider",
        body: attributesInnerSign.body,
        signType: SignType.Attributes,
        hash: attributesInnerSign.hash,
    };
    
    const isUploaded = await app.uploadSign(newSign);
    

    Parameters

    • sign: NewSign

      Данные для загрузки подписи.

    Returns Promise<boolean>