Перейти к основному содержимому
Версия: 1.27.0

UI-действия

Действия пользовательского интерфейса (UI) — это кнопки, ссылки и элементы контекстного меню в формах и списках. Они позволяют настроить взаимодействие пользователя с интерфейсом, чтобы он был более интерактивным, регулируемым и удобным для работы.

подсказка

Требуемая роль: admin.

Типы действий

  1. На форме:
    • В бургер-меню
    • Вверху слева
    • Вверху справа
    • В контекстном меню заголовка поля
    • Ссылка внизу формы
    • Внизу формы
    • Стиль кнопки
  2. На списке:
    • Вверху слева
    • Вверху справа
    • В бургер-меню
    • В кебаб-меню
    • В контекстном меню заголовка поля
    • В контекстом меню строки
    • Ссылка под списком
  3. Другие:
    • В контекстом меню кнопки
    • В контекстом меню схемы зависимостей

Действия на формах


Действия на списках


Настройка действий

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

Для этого выполните следующие шаги:

  1. Перейдите в Настройка системыUI-действия.
  2. Нажмите Создать или выберите существующее действие пользовательского интерфейса.
  3. Настройте действие пользовательского интерфейса, используя предоставленную форму.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы UI-действия

ПолеОбязательноОписание
НаименованиеДаУкажите название действия пользовательского интерфейса. Этот текст отображается на кнопке, ссылке или в виде пункта контекстного меню.
ТаблицаДаУкажите таблицу для отображения действия пользовательского интерфейса.
РодительНетУкажите элемент контекстного меню в качестве родителя для текущего действия пользовательского интерфейса (применимо к типу действия пользовательского интерфейса Бургер-меню).
КомментарийНетДобавьте краткое описание действия.
АктивноНетУстановите этот флажок, чтобы действие пользовательского интерфейса отображалось на форме (в списке, в контекстном меню).
НаследуемоеНетУстановите этот флажок, чтобы это действие пользовательского интерфейса отображалось на всех дочерних таблицах Таблицы.
ПорядокНетУкажите порядок отображения. Если есть действия пользовательского интерфейса одного типа, они располагаются в порядке возрастания.
ПереопределяетНетУкажите действие пользовательского интерфейса, которое будет переопределено текущим действием пользовательского интерфейса. Узнайте больше о наследовании и переопределении действий пользовательского интерфейса.
подсказка

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

  1. Нажмите правой кнопкой мыши на действие, которое необходимо изменить, чтобы открыть контекстное меню.

  2. Щелкните Редактировать действие. Появится форма действия пользовательского интерфейса.

Глобальные действия


Вы можете сделать так, чтобы действие пользовательского интерфейса отображалось на всех таблицах.

Для этого выполните следующие действия:

  1. Откройте нужную запись действия пользовательского интерфейса.
  2. На форме в поле Таблица укажите Глобальная таблица.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
примечание

Большинство элементов бургер-меню и некоторые кнопки на формах (Создать, Сохранить, Сохранить и выйти) и в списках (Создать, Удалить) являются глобальными.

Добавление многоуровневых действий


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

внимание

Эта опция доступна только для действий пользовательского интерфейса типа Бургер-меню.

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

  1. Создайте родительское действие пользовательского интерфейса, указав его тип с помощью флажка В бургер-меню во вкладке На форме или На списке.
  2. Нажмите Сохранить и выйти, чтобы закрыть форму.
  3. Создайте дочернее действие пользовательского интерфейса того же типа и укажите ранее созданное действие пользовательского интерфейса в поле Родитель.
  4. (опционально) Установите флажок Наследуемое, чтобы добавить это действие на дочерние таблицы.
  5. Нажмите Сохранить, чтобы применить изменения.

Настройка условий отображения


Условия определяют ситуации, когда отображаются действия пользовательского интерфейса. Поле Условие предполагает использование серверного API. Чтобы включить использование клиентского скрипта, на форме действия пользовательского интерфейса установите флажок Клиентское. В Условие для доступа к действию пользовательского интерфейса используйте объект конкретной записи current, на которой будет находиться действие. Этот объект можно использовать только для действий пользовательского интерфейса, отображаемых на формах.

примечание

Вызывайте объект current при обновлении, поскольку в таком случае объект будет определен. При создании нового действия пользовательского интерфейса значение current равно NULL.

Используйте логические операторы && (И) и || (ИЛИ) для составления сложных условий.

Условие позволяет вызывать созданные на стороне сервера скрипты. В приведенном ниже примере функция wfContextExists() из внешнего скрипта с тем же именем получает current.sys_id и current.getTableName в качестве аргументов recordID и tableName.

примечание

Объект ss позволяет вызывать методы SimpleSystem.

Это действие пользовательского интерфейса является ссылкой на запись с ID таблицы getTableName. Если запись существует, функция возвращает true или false, если запись не найдена. В зависимости от возвращаемого значения функция отображает действие пользовательского интерфейса или нет.

Пример
function wfContextExists(recordID, tableName)\{
const table = new SimpleRecord('sys_db_table');
table.get('name', tableName);
const wfContext = new SimpleRecord('wf_context');
wfContext.addQuery('related_record_id', ss.getDocIdByIds(table.sys_id, recordID));
wfContext.selectAttributes('sys_id');
wfContext.query();
return (wfContext.getRowCount() > 0)
}

Если в секции На списке установлен флажок Связанный список, в скрипте условий доступна переменная parent для обращения к форме, на которой размещен связанный список. При обращении к полю, которого нет на родительской форме, всегда возвращается значение false.

Определение поведения действия с помощью скрипта


Поле Скрипт определяет поведение действия пользовательского интерфейса. По умолчанию это поле поддерживает серверный API. Установите флажок Клиентское, чтобы переключить доступный API на клиентский.

Например, это действие пользовательского интерфейса добавляет информационное сообщение с содержимым поля Описание:

ss.addInfoMessage(current.description);

Когда вызывается объект current, нет необходимости использовать метод initialize(); контекст объекта уже инициирован.

Обращение к форме из скрипта UI-действия связанного списка

При размещении UI-действия в связанных списках (установлен флажок Связанный список), вы можете обращаться к объекту записи, на форме которой размещен связанный список. Способ обращения отличается для серверного и клиентского API:

  • В серверных скриптах (флажок Клиентское снят) доступна переменная parent. В примере ниже указан скрипт для кнопки в связанном списке элементов меню, которая удаляет выбранные пункты меню и, если в вышестоящей категории меню не осталось пунктов, делает ее неактивной:

    for (var key in currents) {
    currents[key].deleteRecord();
    }
    var record = new SimpleRecord('sys_menu_item');
    record.addQuery('category_id', parent.sys_id);
    record.query();
    if (0 == record.getRowCount()) {
    parent.active = false;
    parent.update();
    }
  • В клиентских скриптах (флажок Клиентское установлен) доступен объект s_form. В примере ниже указан скрипт, который генерирует URL-адрес для кнопки Создать в связанном списке. Сгенерированный URL-адрес меняется в зависимости от того, на какой форме находится связанный список:

    const CURRENT_RELATED_ID = s_form.getUniqueValue();
    const currentTable = s_form.getTableName();
    const LIST_TABLE_NAME = s_list.getTablesName()[0];
    const tableName = {
    crm_opportunity: 'opportunity',
    crm_leads: 'lead',
    crm_marketing_campaign: 'campaign',
    crm_customer_company: 'company',
    };

    s_go.open(
    `/record/${LIST_TABLE_NAME}?field_related_${tableName[currentTable]}=${CURRENT_RELATED_ID}&field_related_element_type=${tableName[currentTable]}`,
    );