Скриптовые методы

api.web Ссылка на комментарий в мобильном приложении

  • api.web.openCommentInList(objUUID, commentUUID)

    Генерация URL-ссылки для позиционирования на конкретном комментарии в списке комментариев определенного объекта.

    Параметры метода:

    • objUUID — uuid объекта;
    • commentUUID — uuid комментария, на котором необходимо позиционироваться.

      Допустимо использование sourceObject — в случае события "добавление комментария" возвращается добавленный комментарий.

    Возвращает строку, содержащую URL-ссылку для позиционирования на конкретном комментарии в списке комментариев определенного объекта.

    Пример. Ссылка для позиционирования на комментарии commentUUID в списке комментариев в объекте subject:

    pushMobile.link << api.web.openCommentInList(subject.UUID, "commentUUID")

api.web Ссылка на файл в списке файлов в мобильном приложении

  • api.web.openFileInList(objUUID, fileUUID)

    Генерация URL-ссылки для позиционирования на конкретном файле в списке файлов определенного объекта.

    Параметры метода:

    • objUUID — uuid объекта;
    • fileUUID — uuid файла, на котором необходимо позиционироваться.

      Возможно использование sourceObject — в случае события "прикрепление файла к объекту" возвращает прикрепленный файл.

    Возвращает строку, содержащую URL-ссылку для позиционирования на конкретном файле в списке файлов определенного объекта.

    Пример. Ссылка для позиционирования на файле fileUUID в списке файлов в объекте subject:

    pushMobile.link << api.web.openFileInList(subject.UUID, "fileUUID")

api.web Ссылка на объект списка в мобильном приложении

  • api.web.openObjectInList(listUUID, objUUID)

    Генерация URL-ссылки для позиционирования на конкретном объекте в списке объектов.

    Параметры метода:

    • listUUID — uuid списка объектов в мобильном приложении (отображается в url-строке в настройках списков мобильного приложения);
    • objUUID — идентификатор объекта, на который позиционируется ссылка.

    Возвращает строку, содержащую URL-ссылку для позиционирования на конкретном объекте в списке объектов.

    Пример. Ссылка для позиционирования на объекте subject в списке объектов с UUID "f9eceb6e-1549-0b63-0001-00001417f2b7":

    pushMobile.link <<api.web.openObjectInList('f9eceb6e-1549-0b63-0001-00001417f2b7', subject.UUID)

api.web Ссылка на форму редактирования в мобильном приложении

  • api.web.edit(subject, mobileForm)

    api.web.edit(subject, mobileForm, attributes)

    api.web.edit(subject, login_or_accesskey, mobileForm)

    Генерация URL-ссылки для перехода на форму редактирования в мобильном приложении.

    Параметры метода:

    • subject — объект, форма редактирования которого будет открыта при переходе по ссылке;
    • login_or_accesskey — логин или ключ авторизации пользователя для входа в систему (по имени пользователя или по uuid пользователя). Подробнее в документации SMP в разделе api.auth Работа с ключами авторизации.

    • mobileForm — код формы редактирования в мобильном приложении. Может быть null.

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

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

      Доступные типы атрибутов: BOLinks, BOLink, BackLink, CatalogItems, Date, DateTime, Integer, Double, Boolean, DateTimeInterval, Hyperlink.

    Возвращает строку, содержащую URL-ссылку на форму редактирования.

api.web Ссылка на форму добавления в мобильном приложении

  • api.web.add(fqn, mobileForm, parent, attributes, needCheckAttrs)

    api.web.add(fqns, mobileForm, parent, attributes)

    Генерирует URL-ссылку для перехода на форму добавления объекта указанного типа /класса.

    Если указаны parent и attributes, то формирует ссылку для перехода на форму добавления объекта без проверок на существование заданных атрибутов в классе/типе и корректности их значений.

    Если указано needCheckAttrs, то формирует URL-ссылку на форму добавления объекта указанного типа /класса с предзаполненными полями с проверкой на существование заданных атрибутов в классе/типе и корректности их значений.

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

    Параметры метода:

    • fqns — коллекция fqn'ов доступных для выбора типов добавляемого объекта. Допускается указывать только типы объектов одного класса. Значение fqn может быть как объект ClassFqn, так и его строковый эквивалент.
    • fqn — класс/тип, форма добавления которого открывается при переходе по ссылке. Значение fqn может быть как объект ClassFqn, так и его строковый эквивалент

      Если параметр fqn указывает на тип, то при переходе по ссылке будет открыта форма добавления этого типа, контент "Тип объекта" на форме не отобразится, если на класс – будет открыта форма добавления класса с возможностью выбора любого доступного пользователю типа этого класса.

      Если ассоциативный массив, заданный в параметре attributes не пуст, соответствующие поля формы при ее открытии будут заполнены указанными значениями.

    • mobileForm — код формы добавления в мобильном приложении. Может быть null.

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

    • parent — в зависимости от класса, на который указывает fqn, параметр рассматривается как:

      • контрагент запроса, если fqn задает класс "Запрос" (serviceCall).
      • родительский объект, если fqn задает класс вложенных объектов.

      Если fqn указывает на классы, не перечисленные выше, то данный параметр заполняется значением null или пустой строкой.

      Параметр может быть задан в виде объекта или строки, содержащей его UUID.

    • attributes — ассоциативный массив, содержащий значения по умолчанию для атрибутов создаваемого объекта: ключ — код атрибута; значение — значение по умолчанию атрибута

      Доступные типы атрибутов: BOLinks, BOLink, BackLink, CatalogItems, Date, DateTime, Integer, Double, Boolean, DateTimeInterval, Hyperlink.

    • needCheckAttrs — признак, определяющий требуются ли проверки на существование заданных атрибутов в классе/типе и корректности их значений

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

api.web Генерация ссылки на форму авторизации

  • api.web.signIn(employee)

    Формирование ссылки на форму авторизации с заполненным логином.

    Параметр метода:

    • employee — объект, UUID или логин пользователя.

    Возвращает строку со ссылкой для открытия формы авторизации.

    Примеры:

    1. Генерация ссылки на форму авторизации с заполненным логином, в аргумент передается логин пользователя:

    api.web.signIn('user')

    Результат: http://localhost:8080/sd/?smp_login=user.

    2. Генерация ссылки на форму авторизации с заполненным логином, в аргумент передается UUID пользователя:

    api.web.signIn('employee$6001')

    Результат: http://localhost:8080/sd/?smp_login=testlogin.

    3. Генерация ссылки на форму авторизации с заполненным логином, в аргумент передается объект пользователя:

    api.web.signIn(utils.get('employee$6001'))

    Результат: http://localhost:8080/sd/?smp_login=testlogin.

    Любая ссылка, содержащая параметр smp_login, открывается после перехода в указанный аккаунт.

api.actionContext Получение контекста выполняемого действия

  • api.actionContext.isMobile()

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

    Возвращаемое значение:

    • true — контекст выполнения действия: мобильное приложение;
    • false — контекст выполнения действия: веб-интерфейс системы.

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

    boolean isMobile = api.actionContext.isMobile()

    def comment = "Добавлен новый файл: ${sourceObject.title }<br>Дата добавления файла: ${new Date()}<br>Мобильный клиент: ${isMobile}"

    utils.edit(subject, ['@comment' : comment.toString()])

api.location Запрос геопозиции

  • api.location.getMobileLocation(recipient)

    api.location.getMobileLocation(recipient, timeToLive)

    Метод запрашивает текущее местоположение последнего активного мобильного устройства пользователя у мобильного приложения, используя механизм отправки push-уведомлений.

    Запрос выполняется асинхронно. Метка геопозиции, полученная от мобильного приложения, сохраняется как объект служебного класса "История перемещений".

    Параметры метода:

    • recipient — uuid сотрудника, для которого запрашивается местоположение мобильного устройства. String;
    • timeToLive — время жизни отправляемого запроса в секундах, по умолчанию 300 (5 минут). Int.

    Возвращаемое значение:

    • true — если запрос успешно отправлен;
    • false — если отправить не удалось.

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

api.notification Отправка уведомления

  • api.notification.sendMobilePush(message, recipient)

    Отправка упрощенного уведомления в мобильное приложение. Отправляет уведомление с текстом message получателю recipient.

    Параметры:

    • message — текст уведомления;
    • recipient — получатель уведомления (uuid либо объект).

    Возвращает true — уведомление успешно отправлено, иначе false.

api.auth Отзыв мобильных JWT-токенов

Методы также инвалидируют сессию при SSO-аутентификации.

  • api.auth.revokeJwtToken(token)

    Отзывает access и refresh JWT-токены.

    Параметр метода:

    • token — access-токен или refresh-токен. String.
  • api.auth.revokeAllJwtTokens()

    Отзывает активные JWT-токены всех пользователей, кроме суперпользователей.

  • api.auth.revokeJwtTokensForEmployee(employee)

    Отзывает активные JWT-токены любого пользователя, включая суперпользователей.

    Параметр метода:

    • employee — объект сотрудника, его идентификатор или логин.

Скрипты на пользовательские события (кнопка-скрипт)

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

В переменной result доступны следующие методы.

  • showMessage(message)

    Показать toast сообщение.

    Параметр метода:

    • message — текст сообщения. String.

    Пример. Показать сообщение без заголовка в МК (toast):

    result.showMessage("Сообщение")

  • showMessage(title, message)

    Показать сообщение в диалоговом окне.

    Параметры метода:

    • title — заголовок сообщения. String.
    • message — текст сообщения. String.

    Пример. Показать сообщение с заголовком в МК (alert):

    result.showMessage("Alert!!", "Сообщение")

  • goToMobileAddForm(formCode, attributes)

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

    Параметры метода:

    • formCode — код формы добавления объекта в мобильном приложении. String;
    • attributes — ассоциативный список атрибутов <Код : Значение>

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

    Чтобы точно была открыта определенная форма добавления, рекомендуется указывать тип объекта в параметре attributes.

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

    def attributes = [
    'intValue':1020434,
    'hLink' : api.types.newHyperlink('ссылка на ресурс', 'https://www.naumen.ru'),
    'Logic' : true,
    'DateNL' : new Date(),
    'DateTime' : new Date(),
    'catItem' : 'impact$2802'
    'dateTimeIntervalAttribute' : 1020434
    ];
    def subject = utils.get('userClassA$2902');
    //на форму добавления объекта с кодом "addClassAform"
    result.goToMobileAddForm("addClassAform", attributes);
    
  • goToMobileEditForm(subject, attributes)

    goToMobileEditForm(subject, formCode, attrs)

    Переход на форму редактирования объекта.

    Параметры метода:

    • subject — объект (UUIDIdentifiable) или UUID-объекта, для которого вызывается форма редактирования. Object;
    • formCode — код формы редактирования объекта в мобильном приложении. String;
    • attributes — ассоциативный список атрибутов <Код : Значение>

    Пример 1. Выполнение переадресации пользователя на форму редактирования объекта внутри мобильного приложения:

    def attributes = [
    'intValue':1020434,
    'hLink' : api.types.newHyperlink('ссылка на ресурс', 'https://www.naumen.ru'),
    'Logic' : true,
    'DateNL' : new Date(),
    'DateTime' : new Date(),
    'catItem' : 'impact$2802'
    'dateTimeIntervalAttribute' : 1020434
    ];
    def subject = utils.get('userClassA$2902');
    //на форму редактирования объекта
    result.goToMobileEditForm(subject, attributes);

    Пример 2. Выполнение переадресации пользователя на форму редактирования объекта с кодом editClassAform внутри мобильного приложения:

    def attributes = [
    'intValue':1020434,
    'hLink' : api.types.newHyperlink('ссылка на ресурс', 'https://www.naumen.ru'),
    'Logic' : true,
    'DateNL' : new Date(),
    'DateTime' : new Date(),
    'catItem' : 'impact$2802'
    'dateTimeIntervalAttribute' : 1020434
    ];
    def subject = utils.get('userClassA$2902');
    //на форму редактирования объекта с кодом "editClassAform"
    result.goToMobileEditForm(subject, "editClassAform", attributes);
  • goToMobileObjectCard(subject)

    Переход на карточку объекта.

    Параметр метода:

    • subject — объект (UUIDIdentifiable) или UUID-объекта, на карточку которого необходимо перейти. Object.

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

    def attributes = [
    'intValue':1020434,
    'hLink' : api.types.newHyperlink('ссылка на ресурс', 'https://www.naumen.ru'),
    'Logic' : true,
    'DateNL' : new Date(),
    'DateTime' : new Date(),
    'catItem' : 'impact$2802'
    'dateTimeIntervalAttribute' : 1020434
    ];
    def subject = utils.get('userClassA$2902');
    //на карточку объекта
    result.goToMobileObjectCard(subject);
    
  • goToExternal(url)

    goToExternal(url, attributes)

    Переадресация в стороннее приложение.

    Параметры метода:

    • url — ссылка на приложение. String
    • attributes — ассоциативный список параметров <Код : Значение>

    Пример. Выполнение переадресации пользователя в стороннее приложение:

    def url = "text:/coolreader";
    def attributes = [
    'intValue':1020434,
    'hLink' : api.types.newHyperlink('ссылка на ресурс', 'https://www.naumen.ru'),
    'Logic' : true,
    'DateNL' : new Date(),
    'DateTime' : new Date(),
    'catItem' : 'impact$2802'
    ];
    result.goToExternal(url, attributes);

Особенности скрипта действия по событию

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

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

    В переменной хранятся сведения о широте (latitude) и долготе (longitude) текущего местоположения мобильного устройства.

    geo=null, если нет разрешения использовать геолокацию на мобильном устройстве и/или для элемента меню карточки объекта в мобильном приложении, вызывающего данное действие по событию, выключен параметр "Передавать геопозицию устройства".

  • queuedDate — дата и время добавления действия в очередь синхронизации для действий, выполненных в офлайн-режиме работы мобильного приложения (время передается в часовом поясе сервера). Если действие было выполнено онлайн, то queuedDate = null.

  • isFromMobile: true — действие по событию вызвано из мобильного приложения; false — нет.

Особенности скрипта кастомизации оповещения

Переменные контекста:

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

    В переменной хранятся сведения о широте (latitude) и долготе (longitude) текущего местоположения мобильного устройства.

    geo=null, если нет разрешения использовать геолокацию на мобильном устройстве и/или для элемента меню карточки объекта в мобильном приложении, вызывающего данное действие по событию, выключен параметр "Передавать геопозицию устройства".

  • isFromMobile:

    • true — действие по событию вызвано из мобильного клиента;
    • false — нет.

Подробное описание всех методов API и скриптов приведено в документации SMP в разделе Методы API.