Методы JS API

Раздел предназначен для разработчиков встроенных приложений.

Методы JS API используется клиентскими встроенными приложениями для взаимодействия с платформой SMP.

Часть методов доступна для использования в мобильном приложении. В описании таких методов указана соответствующая отметка "Доступен в мобильном приложении".

Основные методы

jsApi.findContentCode

Описание:

Метод позволяет найти код контента, в котором выведено текущее приложение.

Поиск осуществляется в DOM дереве.

Доступен в мобильном приложении

Сигнатура метода:

function findContentCode() : string

Исключения:

  • Error — приложение открыто не внутри iframe;
  • Error — приложение открыто внутри iframe, но код контента не был найден

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: возвращает значение параметра "Код контента со встроенным приложением"

Пример использования:

Copy
const contentCode = jsApi.findContentCode();

jsApi.findApplicationCode

Описание:

Метод позволяет найти код текущего встроенного приложения

Сигнатура метода:

function findApplicationCode() : string

Исключения:

  • Error — приложение открыто не внутри iframe

Пример использования:

Copy
const applicationCode = jsApi.findApplicationCode();

jsApi.extractSubjectUuid

Описание:

Метод возвращает UUID объекта, карточка которого открыта в данный момент.

Если приложение выведено на форме (там, где текущего объекта нет), то возвращается null.

Доступен в мобильном приложении

Сигнатура метода:

function extractSubjectUuid() : string | null

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: возвращает true

Пример использования:

Copy
const subjectUuid = jsApi.extractSubjectUuid();

jsApi.registerAttributeToModification

Описание:

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

Если приложение выведено на формах добавления /редактирования, то значение данного атрибута будет установлено в результат функции resultCallback

Сигнатура метода:

function registerAttributeToModification(attributeCode : string, resultCallback : Function) : Void

Описание аргументов:

  • attributeCode — код атрибута, значение которого редактируется встроенным приложением;
  • resultCallback — функция, которая вызывается во время сохранения формы. Результат выполнения функции принимается за значение атрибута

Исключения:

  • TypeError — attributeCode не является строкой;
  • TypeError — resultCallback не является функцией

Пример использования:

Copy
const getTheme = () => document.getElementById('theme-input').value;
const getUserMeta = () => JSON.stringify({role: 'user', email: 'user@example.ru'});

if (jsApi.isAddForm() || jsApi.isEditForm()) {
    jsApi.registerAttributeToModification('shortDescr', getTheme);
    jsApi.registerAttributeToModification('eaUMeta', getUserMeta);
}

jsApi.isAddForm

Описание:

Метод определяет, находится ли встроенное приложение на форме добавления (полноэкранной форме добавления и форме быстрого добавления)

Сигнатура метода:

function isAddForm() : Boolean

Пример использования:

Copy
const isAddForm = jsApi.isAddForm();

jsApi.isEditForm

Описание:

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

Сигнатура метода:

function isEditForm() : Boolean

Пример использования:

Copy
const isEditForm = jsApi.isEditForm();

jsApi.isOnObjectCard

Описание:

Метод определяет, находится ли встроенное приложение на карточке объекта.

Доступен в мобильном приложении

Сигнатура метода:

function isOnObjectCard() : Boolean

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: возвращает true

Пример использования:

Copy
const isOnObjectCard = jsApi.isOnObjectCard();

jsApi.getCurrentUser

Описание:

Метод для получения объекта, соответствующего текущему пользователю.

Доступен в мобильном приложении

Сигнатура метода:

function getCurrentUser()

Структура возвращаемого значения:

{
   uuid: string // UUID пользователя
}

Пример использования:

Copy
const currentUser = jsApi.getCurrentUser();

jsApi.getCurrentLocale

Описание:

Метод для получения текущей локали.

Доступен в мобильном приложении

Сигнатура метода:

function getCurrentLocale()

Метод возвращает:

Код текущей локали, используемой в интерфейсе (строку). Если у пользователя выбрана клиентская локаль, то возвращается код локали, указанной в параметре "Язык интерфейса" на странице "Интерфейс и навигация"

Пример использования:

Copy
const currentLocale = jsApi.getCurrentLocale();

jsApi.getAppBaseUrl

Описание:

Метод возвращает значение, заданное в параметре baseurl в dbaccess.properties

Сигнатура метода:

function getAppBaseUrl() : string

Пример использования:

Copy
const appBaseUrl = jsApi.getAppBaseUrl();

jsApi.getAppRestBaseUrl

Описание:

Метод возвращает URL до REST сервисов

Сигнатура метода:

function getAppRestBaseUrl() : string

Пример использования:

Copy
const restUrl = jsApi.getAppRestBaseUrl();

jsApi.getViewMode

Описание:

Метод возвращает режим отображения встроенного приложения: развернуто на весь экран (fullScreen) или нормальный режим (normal)

Сигнатура метода:

function getViewMode() : string

Пример использования:

Copy
const viewMode = jsApi.getViewMode();

jsApi.restCall

Описание:

Метод выполняет REST запрос на сервер SMP.

Доступен в мобильном приложении

Сигнатура метода:

function restCall(restOfTheUrl : string, options : Object) : Promise<string, Object>

Описание аргументов:

  • restOfTheUrl — весь URL, начиная с имени REST метода.

    Пример:

    'exec/?func=modules.moduleName.functionName&params='

  • options — опции для конфигурации запроса

    {
      method: string,
      headers: {[key: string]: string},
      body: string | {[key: string]: string}
      responseType: string 
    }

    где:

    • method — метод для обращения к URL;
    • headers — имена свойств == имена заголовков, значения свойств == значения заголовков;
    • body — строка, которая будет записана в тело запроса или

      объект, который будет превращен в строку в виде property1=value1&property2=value2;

    • responseType — тип ответа сервера:

      • "text" — результат в виде текста;
      • "json" — результат в виде JSON;
      • "blob" — результат в виде Blob;
      • "arraybuffer" — результат в виде буфера данных (ArrayBuffer)

Структура возвращаемого значения:

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера в виде строки.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Пример GET-запроса:

Copy
const subjectUuid = jsApi.extractSubjectUuid();
const contentCode = jsApi.findContentCode();
const url = `exec/?func=modules.testModule.testMethod&params='${subjectUuid}', '${contentCode}'`;

jsApi.restCall(url, {})
    .then(stringifiedResponse => {
        const response = JSON.parse(stringifiedResponse);
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

Пример POST-запроса:

Copy
const subjectUuid = jsApi.extractSubjectUuid();
const contentCode = jsApi.findContentCode();
const url = `exec-post/?func=modules.testModule.testMethod&params=requestContent`;
const options = {
    body: JSON.stringify({
        contentCode,
        subjectUuid
    }),
    method: 'POST'
};

jsApi.restCall(url, options)
    .then(stringifiedResponse => {
        const response = JSON.parse(stringifiedResponse);
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

jsApi.restCallAsJson

Описание:

Метод выполняет REST запрос на сервер SMP.

Доступен в мобильном приложении

Сигнатура метода:

function restCallAsJson(restOfTheUrl : string, options : Object) : Promise<Object, Object>

Описание аргументов:

  • restOfTheUrl — весь URL, начиная с имени REST метода

    Пример:

    'exec/?func=modules.moduleName.functionName&params='

  • options — опции для конфигурации запроса

    {
      method: string,
      headers: {[key: string]: string},
      body: string | {[key: string]: string}
      responseType: string 
    }

    где:

    • method — метод для обращения к URL;
    • headers — имена свойств == имена заголовков, значения свойств == значения заголовков;
    • body — строка, которая будет записана в тело запроса или

      объект, который будет превращен в строку в виде property1=value1&property2=value2;

    • responseType — тип ответа сервера:

      • "text" — результат в виде текста;
      • "json" — результат в виде JSON;
      • "blob" — результат в виде Blob;
      • "arraybuffer" — результат в виде буфера данных (ArrayBuffer)

Структура возвращаемого значения:

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера, разобранный методом JSON.parse.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Пример GET-запроса:

Copy
const subjectUuid = jsApi.extractSubjectUuid();
const contentCode = jsApi.findContentCode();
const url = `exec/?func=modules.testModule.testMethod&params='${subjectUuid}', '${contentCode}'`;

jsApi.restCallAsJson(url, {})
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

Пример POST-запроса:

Copy
const subjectUuid = jsApi.extractSubjectUuid();
const contentCode = jsApi.findContentCode();
const url = `exec-post/?func=modules.testModule.testMethod&params=requestContent`;
const options = {
    body: JSON.stringify({
        contentCode,
        subjectUuid
    }),
    method: 'POST'
};

jsApi.restCallAsJson(url, options)
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

jsApi.restCallModule

Описание:

Метод вызывает произвольный метод любого скриптового модуля При использовании в контексте встроенного приложения, обращение происходит по следующему правилу:

  • Если есть модуль с кодом "<код встроенного приложения>_<moduleCode>", то метод вызывается в нем.
  • Если такого модуля нет, то вызываем метод модуля с кодом "<moduleCode>"

Доступен в мобильном приложении

Сигнатура метода:

function restCallModule(moduleCode : string, functionName : string, args: ...Object) : Promise<Object, Object>

Описание аргументов:

  • moduleCode — код скриптового модуля;
  • functionName — имя метода в скриптовом модуле;
  • args — аргументы, которые необходимо передать в функцию. Разрешенные типы аргументов: number, string, boolean, object

Структура возвращаемого значения:

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера, разобранный методом JSON.parse.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Пример использования:

Copy
const moduleCode = 'testModule';
const functionName = 'testMethod';
const subjectUuid = jsApi.extractSubjectUuid();
const contentCode = jsApi.findContentCode();
const attrs = {
    author: 'Новое имя',
    shortDescr: 'Новое описание'
}

jsApi.restCallModule(moduleCode, functionName, subjectUuid, contentCode, attrs)
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

jsApi.commands — команды

Для использования методов с префиксом commands необходимо включить на страницу скрипт. Высота фрейма будет вычисляться автоматически, так как будет подключен iframe resizer.

jsApi.commands.selectObjectDialog

Описание:

Команда для открытия формы добавления связи и выбора объекта

Сигнатура метода:

function selectObjectDialog(classFqn : string, presentAttributesGroupCode : string) : Promise<string | null>

Описание аргументов:

  • classFqn — FQN класса объектов, которые будут доступны на форме;
  • presentAttributesGroupCode — код группы атрибутов, которая будет отображаться на форме

Структура возвращаемого значения:

Возвращается Promise<string | null>, который вернет UUID выбранного объекта или null, если объект не был выбран

Пример использования:

Copy
const objectUuid = await jsApi.commands.selectObjectDialog('serviceCall', 'testAttrGroupCode')

jsApi.commands.changeState

Описание:

Команда для смены статуса объекта.

Если статусов больше одного или при входе в статус есть обязательные для заполнения атрибуты, открывается форма смены статуса

Сигнатура метода:

function changeState(uuid : string, states : string[]) : Void

Описание аргументов:

  • uuid — UUID объекта, чей статус нужно поменять;
  • states — коды целевых статусов

Пример использования:

Copy
const subjectUuid = jsApi.extractSubjectUuid();
const states = [
    'registered',
    'resolved'
];

jsApi.commands.changeState(subjectUuid, states);

jsApi.commands.editObject

Описание:

Команда для перехода на форму редактирования объекта

Сигнатура метода:

function editObject(uuid : string) : Void

Описание аргументов:

  • uuid — UUID объекта, на чью форму редактирования будет совершен переход

Пример использования:

Copy
jsApi.commands.editObject('serviceCall$2333202');

jsApi.commands.quickAddObject

Описание:

Команда для вызова формы быстрого добавления объекта

Сигнатура метода:

function quickAddObject(classFqn : string, formCode : string, properties : Map<string, Object>, callback : Function) : Void

Описание аргументов:

  • classFqn — FQN класса или типа, в котором настроена форма быстрого добавления;
  • formCode — код формы быстрого добавления;
  • properties — значения атрибутов, которые необходимо предварительно заполнить на форме.

    Ключом является код атрибута. Значение зависит от типа атрибута. Допустимые значения описаны в разделе Формат передачи данных.

    Недопустимые значения не предзаполняются. Атрибуты, отсутствующие на форме, не предзаполняются;

  • callback — функция, которая вызывается по результату работы формы.

    Сигнатура функции:

    function callback(uuid : string, exception : Error)

    Параметры функции:

    • uuid — идентификатор созданного объекта или null (если пользователь отказался от создания);
    • exception — исключение, если возникла ошибка

Пример использования:

Copy
const fqn = 'serviceCall$request';
const formCode = 'quickFormForServiceCall';
const properties = {
    clientEmail: 'example@example.ru'
};

jsApi.commands.quickAddObject(fqn, formCode, properties, (uuid, exception) => {
    if (exception) {
        console.error('exception', exception);
    } else {
        console.log('uuid нового запроса на обслуживание:', uuid);
    }
});

jsApi.commands.quickEditObject

Описание:

Команда для вызова формы быстрого редактирования объекта

Сигнатура метода:

function quickEditObject(uuid : string, formCode : string, properties : Map<string, Object>, callback : Function) : Void

Описание аргументов:

  • uuid — UUID редактируемого объекта
  • formCode — код формы быстрого редактирования
  • properties — значения атрибутов, которые необходимо предварительно заполнить на форме. Допустимые значения описаны в разделе Формат передачи данных.
  • callback — функция, которая вызывается по результату работы формы.

    Сигнатура функции:

    function callback(uuid : string, exception : Error)

    Параметры функции:

    • uuid — uuid отредактированного объекта или null (если пользователь отказался от редактирования);
    • exception — исключение, если возникла ошибка

Пример использования:

Copy
const uuid = 'employee$1488605';
const formCode = 'quickFormForEmployee';
const properties = {};

jsApi.commands.quickEditObject(uuid, formCode, properties, (uuid, exception) => {
    if (exception) {
        console.error('exception', exception);
    } else {
        console.log('uuid отредактированного сотрудника:', uuid);
    }
});

jsApi.requests — запросы

jsApi.requests.make

Описание:

Метод делает запрос на указанный URL. Является оберткой над XmlHttpRequest.

Доступен в мобильном приложении

Сигнатура метода:

function make(options : Object) : Promise<string, Object>

Описание аргументов:

  • options — опции для конфигурации запроса

    {
      url: string,
      method: string,
      headers: {[key: string]: string},
      body: string | {[key: string]: string}
      responseType: string 
    }

    где:

    • url — URL, на который будет отправлен запрос;
    • method — метод для обращения к URL;
    • headers — имена свойств == имена заголовков, значения свойств == значения заголовков;
    • body — строка, которая будет записана в тело запроса или

      объект, который будет превращен в строку в виде property1=value1&property2=value2;

    • responseType — тип ответа сервера:

      • "text" — результат в виде текста;
      • "json" — результат в виде JSON;
      • "blob" — результат в виде Blob;
      • "arraybuffer" — результат в виде буфера данных (ArrayBuffer)

Структура возвращаемого значения

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера в виде строки.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Пример GET-запроса:

Copy
const appRestBaseUrl = jsApi.getAppRestBaseUrl();
const subjectUuid = jsApi.extractSubjectUuid();
const url = `${appRestBaseUrl}/get/${subjectUuid}?attrs=title,UUID`;

jsApi.requests.make({url})
    .then(stringifiedResponse => {
        const response = JSON.parse(stringifiedResponse);
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

Пример POST-запроса:

Copy
const appRestBaseUrl = jsApi.getAppRestBaseUrl();
const subjectUuid = jsApi.extractSubjectUuid();
const url = `${appRestBaseUrl}/edit/${subjectUuid}`;
const options = {
    body: JSON.stringify({
        title: 'new title'
    }),
    method: 'POST',
    url
};

jsApi.requests.make(options)
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

jsApi.requests.json

Описание:

Метод делает запрос на указанный URL. Является оберткой над XmlHttpRequest.

Доступен в мобильном приложении

Сигнатура метода:

function json(options : Object) : Promise<Object, Object>

Структура возвращаемого значения:

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера, разобранный методом JSON.parse.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Пример GET-запроса:

Copy
const appRestBaseUrl = jsApi.getAppRestBaseUrl();
const subjectUuid = jsApi.extractSubjectUuid();
const url = `${appRestBaseUrl}/get/${subjectUuid}?attrs=title,UUID`;

jsApi.requests.json({url})
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

Пример POST-запроса:

Copy
const appRestBaseUrl = jsApi.getAppRestBaseUrl();
const url = `${appRestBaseUrl}/find/serviceCall$request?attrs=title,UUID&limit=5`;
const options = {
    method: 'POST',
    url
};

jsApi.requests.json(options)
    .then(response => {
        console.log(response);
        return void 0;
    }).catch(error => {
        console.error(error);
    });

jsApi.urls — получение URL

jsApi.urls.base

Описание:

Метод возвращает URL интерфейса оператора

Сигнатура команды:

function base() : string

Пример использования:

Copy
const baseUrl = jsApi.urls.base();

jsApi.urls.objectCard

Описание:

Метод возвращает URL на карточку объекта

Сигнатура команды:

function objectCard(uuid : string) : string

Описание аргумента:

  • uuid — UUID объекта, на карточку которого нужно сгенерировать ссылку

Пример использования:

Copy
const objectCardUrl = jsApi.urls.objectCard(uuid);

jsApi.urls.objectAddForm

Описание:

Метод возвращает URL на форму добавления объекта

Сигнатура команды:

function objectAddForm(fqn : string) : string

Описание аргумента:

  • fqn — FQN класса, на форму добавления которого нужно сгенерировать ссылку

Пример использования:

Copy
const addFormUrl = jsApi.urls.objectAddForm(fqn);

jsApi.urls.objectEditForm

Описание:

Метод возвращает URL на форму редактирования

Сигнатура команды:

function objectEditForm(uuid : string) : string

Описание аргумента:

  • uuid — UUID объекта, на форму редактирования которого нужно сгенерировать ссылку

Пример использования:

Copy
const editFormUrl = jsApi.urls.objectEditForm(uuid);

jsApi.configuration — конфигурирование встроенного приложения

jsApi.configuration.byContentCode

Описание:

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

Доступен в мобильном приложении

Сигнатура метода:

function byContentCode(moduleCode : string, args: ...Object) : Promise<Object, Object>

Описание аргументов:

  • moduleCode — код модуля, функция которого будут вызываться;
  • args — аргументы, которые необходимо передать в функцию. Разрешенные типы аргументов: number, string, boolean, object

Структура возвращаемого значения:

Если запрос завершен успешно и код ответа находится в диапазоне [200;300), то Promise содержит ответ сервера, разобранный методом JSON.parse.

Если произошла ошибка, то Promise отклоняется и в ответе приходит объект в формате:

{
status: Number, // код ответа
statusText: string, // расшифровка кода ответа
responseText: string // ответ сервера
}

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: в модуле производится поиск метода конфигурации с названием равным значению параметра "Код контента со встроенным приложением"

jsApi.configuration.byDefault

Описание

Служит для конфигурирования встроенного приложения через скриптовый модуль в SMP. Вызывает функцию в скриптовом модуле, имя которой равняется getConfiguration.

При использовании в контексте встроенного приложения, обращение происходит по следующему правилу:

  • Если есть модуль с кодом "<код встроенного приложения>_<moduleCode>", то метод вызывается в нем.
  • Если такого модуля нет, то вызываем метод модуля с кодом "<moduleCode>".

Сигнатура метода:

function byDefault(moduleCode : string, args: ...Object) : Promise<Object, Object>

jsApi.ws — работа с WebSocket каналом

WebSocket — протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между клиентом (браузером) и веб-сервером в режиме реального времени.

WebSocket канал — соединение между клиентом и сервером по протоколу WebSocket.

jsApi.ws.subscribe

Описание:

Метод предназначен для выполнения подписки на сообщения, передаваемые через WebSocket канал. Автоматически подключается к брокеру сообщений перед подпиской, если еще не подключен

Сигнатура метода:

function subscribe(destination : string, callback : Function) : Void

Описание аргументов:

  • destination — адрес в WebSocket канале, на который подписываемся, может представлять из себя произвольную строку;
  • callback — функция, вызвана при приходе сообщения через WebSocket канал, на адрес destination.

    Сигнатура функции:

    function callback(message : Frame)

    где message — полученный фрейм с данными, само сообщение можно получить так: message.body

Пример использования:

jsApi.ws.subscribe('dest', function(message) {console.log(message.body)});

jsApi.ws.unsubscribe

Описание:

Метод предназначен для прекращения подписки на рассылку сообщений, передаваемых через WebSocket канал

Сигнатура метода:

function unsubscribe(destination : string) : Void

Описание аргумента:

  • destination — адрес в WebSocket канале, от рассылки на который отписываемся, может представлять из себя произвольную строку

Пример использования:

jsApi.ws.unsubscribe('dest');

jsApi.ws.connect

Описание:

Метод предназначен для подключения к брокеру сообщений, передаваемых через WebSocket канал

Сигнатура метода:

function connect(callback : Function) : Void

Описание аргумента:

  • callback — функция, вызвана после подключения к брокеру сообщений

    Сигнатура функции:

    function callback() : Void

Пример использования:

jsApi.ws.connect(function(message) {console.log('Connected!')});

jsApi.ws.disconnect

Описание:

Метод предназначен для отключения от брокера сообщений, передаваемых через WebSocket канал

Сигнатура метода:

function disconnect() : Void

Пример использования:

jsApi.ws.disconnect();

jsApi.ws.send

Описание:

Метод предназначен для отправки сообщения в определенный адрес через WebSocket канал. Автоматически подключается к брокеру сообщений перед отправкой, если еще не подключены

Сигнатура метода:

function send(destination : string, message : string) : Void

Описание аргументов:

  • destination — адрес в WebSocket канале, в который отправляем сообщение, может представлять из себя произвольную строку;
  • message — отправляемое сообщение, может представлять из себя произвольную строку

Пример использования:

jsApi.ws.send('dest', 'Hello!');

Для работы WebSocket JSAPI в браузерах Internet Explorer во встроенном приложении необходимо подключить скрипты:

  • IE10, IE11:

    <script src="https://cdn.jsdelivr.net/npm/es6-object-assign@1.1.0/dist/object-assign-auto.min.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/text-encoding@0.6.4/lib/encoding.min.js"></script>

  • Edge:

    <script src="https://cdn.jsdelivr.net/npm/text-encoding@0.6.4/lib/encoding.min.js"></script>

jsApi.events — подписка на различные события

jsApi.events.addFieldChangeListener

Описание:

Подписка на изменение значения атрибута на форме добавления /редактирования объекта

Сигнатура метода:

function addFieldChangeListener(attrCode : string, callback : Function)

Описание аргументов:

  • attrCode — код атрибута, на изменения которого производится подписка;
  • callback — функция, которая будет вызвана при изменении атрибута.

    Сигнатура функции:

    function callback(result: Object)

    где result — объект со следующими полями: attribute — код атрибута, изменение которого было произведено, newValue — новое значение атрибута

Структура поля newValue:

В зависимости от типа значения атрибута на форме, newValue будет иметь разные типы значений (формат приведен в разделе "Формат передачи данных"):

  • ссылочный (например ссылка на БО);
  • перечислимый (например список типов);
  • временной интервал;
  • null, например, если для ссылочного типа будет выбрано значение [не указано] в поле выбора;
  • строковой;
  • вложенные в списки атрибуты

Пример использования:

Copy
const callback = (result) => {
    console.log('result', result);
};

jsApi.events.addFieldChangeListener('clientName', callback);

jsApi.events.onFullscreenDisabled

Описание:

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

Сигнатура метода:

function onFullscreenDisabled(callback : Function)

Описание аргумента:

  • callback — функция, которая будет вызвана при выходе из полноэкранного режима.

    Сигнатура функции:

    function callback()

Пример использования:

Copy
const resizeHandler = () => {
    // Например, логика изменения высоты ВП
};

jsApi.events.onFullscreenDisabled(resizeHandler);

jsApi.events.onFullscreenEnabled

Описание:

Подписка на событие разворачивания приложения на весь экран

Сигнатура метода:

function onFullscreenEnabled(callback : Function)

Описание аргумента:

  • callback — функция, которая будет вызвана при разворачивании приложения на весь экран.

    Сигнатура функции:

    function callback()

Пример использования:

Copy
const resizeHandler = () => {
    // Например, логика изменения высоты ВП
};

jsApi.events.onFullscreenDisabled(resizeHandler);

jsApi.events.onContentHide

Описание:

Подписка на событие скрытия контента на карточке /форме по условиям отображения

Сигнатура метода:

function onContentHide(callback : Function)

Описание аргумента:

  • callback — функция, которая будет вызвана при скрытии контента по условиям отображения.

    Сигнатура функции:

    function callback()

Пример использования:

Copy
const callback = () => {
    console.log('onContentHide');
};

jsApi.events.onContentHide(callback);

jsApi.events.onContentShow

Описание:

Подписка на событие показа контента на карточке /форме по условиям отображения

Сигнатура метода:

function onContentShow(callback : Function)

Описание аргумента:

  • callback — функция, которая будет вызвана при показе контента по условиям отображения.

    Сигнатура функции:

    function callback()

Пример использования:

Copy
const callback = () => {
    console.log('onContentShow');
};

jsApi.events.onContentShow(callback);

jsApi.forms — взаимодействие с формой

jsApi.forms.getValues

Описание:

Команда для получения объекта из текущего GWT контекста.

Для страниц добавления/редактирования — это текущий добавляемый и редактируемый объект, для карточки объекта — текущий объект.

Доступен в мобильном приложении

Сигнатура метода:

function getValues() : Promise<Object.<string, Object>>

Структура возвращаемого значения:

Promise содержит объект, чьи ключи являются кодами атрибутов, а значения - значениями соответствующего атрибута объекта из текущего контекста

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: возвращает атрибуты объекта, установленного как объект работы приложения: title, removed, parent, state, UUID, metaclass

jsApi.forms.changeResponsible

Описание:

Команда вызова формы смены ответственного

Сигнатура метода:

function changeResponsible(uuid : string) : Promise<Object<string, Object>>

Описание аргумента:

  • uuid — идентификатор объекта, для которого необходимо вызвать форму

Структура возвращаемого значения:

Если форма смены ответственного была сохранена, то Promise содержит объект, в котором по ключу responsible находится текущий ответственный в формате агрегирующего атрибута (см. Формат передачи данных).

Если на форме смены ответственного было вызвано действие Отмена, то выполнится resolve со значением null/undefined.

Если форма не была открыта из-за ошибки (например, в классе объекта не активен функционал назначения ответственного), то выполняется reject с ошибкой

 
 
 

jsApi.forms.isModal

Описание:

Метод определяет, размещено ли встроенное приложение на форме

Сигнатура метода:

function isModal() : boolean

Структура возвращаемого значения:

Методом возвращается boolean

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

jsApi.forms.isModal()

jsApi.forms.getType

Описание:

Метод определяет тип формы, на которой размещено встроенное приложение

Сигнатура метода:

function getType() : string

Структура возвращаемого значения (метод возвращает string):

  • addForm — форма добавления;
  • editForm — форма редактирования;
  • objectCard — карточка объекта;
  • changeStateForm — форма смены статуса;
  • changeResponsibleForm — форма изменения ответственного;
  • changeCaseForm — форма смены типа;
  • changeAssociationForm — форма смены привязки;
  • quickAddForm — быстрая форма добавления;
  • quickEditForm — быстрая форма редактирования
  • addCommentForm — форма добавления комментария;
  • editCommentForm — форма редактирования комментария;
  • addFileForm — форма добавления файла;
  • editFileForm — форма редактирования файла;
  • userEventActionForm — форма пользовательского действия по событию

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

jsApi.forms.getType()

jsApi.contents — работа с контентом "Встроенное приложение"

jsApi.contents.getParameters

Описание:

Команда для получения параметров, сохраненных в метаинформации контента, в котором находится встроенное приложение.

Доступен в мобильном приложении

Сигнатура метода:

function getParameters() : Promise<Object.<string, Object>>

Структура возвращаемого значения:

Promise содержит объект, чьи ключи являются кодами параметров, а значения - значениями соответствующего параметра из метаинформации контента. Тип значения зависит от типа параметра. Возвращаемые значения параметров, описаны в разделе Формат передачи данных

Мобильное приложение:

Особенность работы метода при вызове встроенного приложения из навигационного меню: возвращает пустой ответ

Модальное окно — это окно, открывающееся поверх основного интерфейса системы.

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

Модальное диалоговое окно (диалоговое окно) — это модальное окно, содержащее информацию, вопрос или сообщение об ошибке.

Устаревшие методы

addFieldChangeListener

Данное api не используется, так как использует устаревший формат передачи данных. Рекомендуется использовать jsApi.events.addFieldChangeListener

getCurrentContentParameters

Данное api не используется, так как использует устаревший формат передачи данных. Использовать jsApi.contents.getParameters

getCurrentContextObject

Данное api не используется, так как использует устаревший формат передачи данных. Рекомендуется использовать jsApi.forms.getValues