api.web Ссылка на форму в веб-интерфейсе

Ссылка на форму редактирования в веб-интерфейсе

  • api.web.edit(subject)

    api.web.edit(subject, login_or_accesskey)

    api.web.editWithUserUUID(subject, login_or_accesskey)

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

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

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

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

    Короткие ссылки:

    • Если включен сервис кодирования текста, то ссылка, превышающая 2000 символов, будет сокращена. Сервис кодирования текста включается в конфигурационном файле dbaccess.properties (Кодирование текста).

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

    Примеры:

    1. Ссылка для перехода на форму редактирования объекта с ключом авторизации:

    ${api.web.asLink(api.web.edit(subject, api.auth.getAccessKey('username')), 'Форма редактирования объекта')}

    ${api.web.asLink(api.web.edit(subject.UUID, 'username'), 'Форма редактирования объекта')}

    ${api.web.asLink(api.web.editWithUserUuid(subject.UUID, 'userUuid'), 'Форма редактирования объекта')}

    2. Ссылка для перехода на форму редактирования объекта с указанием логина и пароля или через прозрачную аутентификацию (Kerberos):

    ${api.web.asLink(api.web.edit(subject), 'Форма редактирования объекта')}

    ${api.web.asLink(api.web.edit(subject.UUID), 'Форма редактирования объекта')}

Ссылка на форму смены статуса в веб-интерфейсе

  • api.web.changeState(subject)

    api.web.changeState(subject, login_or_accesskey, values)

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

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

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

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

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

      Методом можно заполнять атрибуты следующих типов: строка, текст, текст в формате RTF, вещественное число, целое число.

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

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

    Пример. Ссылка с ключом авторизации для перехода на форму смены статуса (с установленным новым статусом):

    def subject = utils.get('serviceCall$8302');

    def accessKey = api.auth.getAccessKey('nl');

    api.web.changeState(subject,accessKey,['state':'resolved','stringAttr':'test','textAttr':'text test','rtfTextAttr':'test rtf','intAttr':123,'doubleAttrCode':12.1245454]);

Ссылка на форму добавления в веб-интерфейсе

  • api.web.add(fqns)

    api.web.add(fqn, parent, attributes)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Доступные типы атрибутов: Набор ссылок на бизнес-объекты, Ссылка на бизнес-объект, Обратная ссылка, Набор элементов справочника, Дата, Дата/Время, Целое число, Вещественное число, Логический, Временной интервал, Гиперссылка, Строка, Текст, Текст в формате RTF и Текст с подсветкой синтаксиса.

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

      Пример: Передача контрагента (тип "Агрегирующий атрибут"), полученного из контекстной переменной cardObject:

      api.web.add('serviceCall', null, ['client': cardObject?.client])

      Особенности:

      • при предзаполнении на форме атрибута "Текст с подсветкой синтаксиса", тип синтаксиса не передается;
      • в ссылку можно добавлять строковые и текстовые параметры (Строка, Текст, ТекстRTF);
      • для ссылочных атрибутов передается только UUID объекта.

      Для передачи временных файлов в контент "Список файлов" используется специальный атрибут "@files".

      Файлы, добавленные в контент "Список файлов" таким образом, нельзя будет использовать в синхронных действиях по событию на создание объекта.

      Пример:

      def originFileUuid = 'file$0000'

      def tempFile = api.fileStorage.createTempFileFromOrigin(originFileUuid)

      api.web.add('serviceCall$EBsc', null, ['@files':[tempFile]])

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

    Особенности работы метода:

    • Метод api.web.add(fqn, parent, attributes, needCheckAttrs):

      • fqn = тип + есть атрибут, не присутствующий в типе

        • needCheckAttrs=true — метод возвращает ошибку "Редактируемый объект не содержит атрибуты '[xxx]'."
        • needCheckAttrs=false — метод возвращает ссылку с передачей несуществующего атрибута
      • fqn = класс + есть атрибут, не присутствующий в классе

        • needCheckAttrs=true — метод возвращает ошибку "Редактируемый объект не содержит атрибуты '[xxx]'."
        • needCheckAttrs=false — метод возвращает ошибку "Коллекция значений типов объектов должна содержать минимум один идентификатор типа метакласса".

      Метод с fqn и без needCheckAttrs, если коллекция содержит атрибут, не присутствующий в классе/типе, всегда возвращает ошибку "Редактируемый объект не содержит атрибуты '[xxx]'.

      Метод с fqns (набор типов) и без needCheckAttrs, если коллекция содержит атрибут, не присутствующий в классе/типе, возвращает ссылку с передачей несуществующего атрибута.

      При формировании ссылки символ $ в тексте скрипта нужно экранировать: \$

    Короткие ссылки:

    • Если включен сервис кодирования текста, то ссылка, превышающая 2000 символов, будет сокращена. Сервис кодирования текста включается в конфигурационном файле dbaccess.properties (Кодирование текста)

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

    Пример 1:

    def list = ['ou$StdOu', 'ou$office', 'ou$storage'];
    return api.web.asLink(api.web.add(list));

    Пример 2:

    def list = ['ou$StdOu', 'ou$office', 'ou$storage'];
    def attributes = ['recipientAgreements' : utils.get('agreement$3001')];
    return api.web.asLink(api.web.add(list, null, attributes));

    Пример 3. Ссылка для перехода на форму добавления объекта класса "Отдел" (ou) / типа "office", вложенного в отдел с идентификатором (UUID) ou$1601. На форме добавления предзаполнено поле "Руководитель отдела":

    <a href="${api.web.add('ou$office', 'ou$1601', ['head':employee1]), false}">Форма добавления отдела</a>

    Пример 4. Ссылка для перехода на форму добавления объекта класса "Запрос" (serviceCall) с контентом "Выбор контрагента":

    <a href="${api.web.add(fqn, parentUUID, attributes, false) + '!{"fast":"true"}'}">Форма добавления запроса</a>

    Пример 5. Ссылка для перехода на форму добавления объекта класса "Отдел" (ou):

    def obj = utils.get('ou$1234');
    def attributes = ['recipientAgreements' : utils.get('agreement$3001')];
    if(obj)
    {
    return api.web.asLink(api.web.add(obj.metaClass, null, attributes, false));
    }

    Пример 6.

    def attributes = ['intTest' : 12121212121,
       'boLnsA' : utils.get('employee$4413'),
       'boLinksA' : [ utils.get('employee$4413'), utils.get('employee$4414') ],
       'catItemsV' : ['urgency$3103', 'urgency$3101'],
       'VrInt' : ["interval":"SECOND","length":"300"],
       'hLink' : ["text" : "link", "url" : "http://ya.ru"],
       'DoubleNL' : 111.511,
       'Logic' : true,
       'DateNL' : new Date(),
       'DateTime' : new Date(),
       'backLink' : [ utils.get('ou$4201'), utils.get('ou$4202') ],
       'catItem' : 'impact$2802'
       ];
    api.web.add('UserClass$UserType3', null, attributes).replaceFirst('.*add:UserClass','#add:UserClass');