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

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

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

Пример 1: Сделать кнопку доступной во время ответа сервера


При использовании опции Дождаться ответа сервера, после нажатия кнопки ожидается ответа сервера. Всё это время, между нажатием кнопки и ответом сервера, кнопка будет отключена.

Используйте методы __resolveServerResponse() и __rejectServerResponse(), чтобы сделать действие пользовательского интерфейса снова доступным после выполнения действия. Например:

__resolveServerResponse()
await s_i18n.getMessage('The report has been saved', (response) => {
s_form.addInfoMessage(response);
__resolveServerResponse();
});

Используйте метод __resolveServerResponse() для принудительного ответа сервера, чтобы, например, вам не пришлось ждать, пока кнопка станет доступной.

Для обработки ошибок используйте метод __rejectServerResponse().

__rejectServerResponse()
const table = s_list.getTablesName()[0];
const selectedRows = s_list.getCheckedRow(table);
if (!selectedRows.length) {
await s_i18n.getMessage("No selected rows.", (translationResponse) => {
alert(translationResponse);
});
__rejectServerResponse();
}

Пример 2: Получить информацию о текущей ячейке таблицы


Свойство currentCell используется в списках и предоставляет служебную информацию о текущей ячейке таблицы. Информация предоставляется в формате объекта.

currentCell
const rowRecordId = window.currentCell.recordId;
const rowTableName = window.currentCell.tableName;
if (rowRecordId) {
s_go.open(`/record/${rowTableName}/${rowRecordId}`);
}
внимание

Это свойство доступно для использования только в действиях пользовательского интерфейса, реализующих контекстное меню строки. Чтобы использовать его для указанного действия пользовательского интерфейса, перейдите к его форме записи в таблице UI-действий (sys_ui_action), откройте запись и сначала установите этот флажок на вкладке Позиция и стиль. После всех изменений сохраните страницу.

Чтобы получить эту информацию вручную, выполните следующие действия:

  1. Откройте любой список, содержащий любые значения.
  2. Откройте консоль разработчика в своем браузере.
  3. Щелкните правой кнопкой мыши любую ячейку, чтобы открыть контекстное меню.
  4. В консоли разработчика введите window.currentCell и отправьте.
ПолеОписание
attributeТип элемента, из которого собирается информация.
Когда выбрана ячейка в заголовке списка, это поле заполняется значением, аналогичным полю fieldName.
columnIdID колонки, к которой относится указанной поле.
columnTypeТип колонки, к которой относится указанное поле.
recordIdID записи.
tableIdID таблицы, которая содержит указанное поле и запись.
tableNameСистемное название таблицы, которая содержит указанное поле и запись.
valueТекущее значение ячейки.

Пример 3: Удалить выбранные записи


В этом примере показан случай массового удаления записей, которые были выбраны в представлении списка.

Для этого используется объект currents. Он предназначен для хранения выбранных записей в виде объектов SimpleRecord. Этот объект можно использовать вместо метода getCheckedRow() на стороне сервера. Он доступен для действий [пользовательского интерфейса со списком](rm/developer-help/user-actions/UI actions/#типы-действий) на стороне сервера.

Пример кода действия пользовательского интерфейса приведен ниже:

Удаление выбранных записей
if (currents.length) {
const record = new SimpleRecord(currents[0].getTableName());
record.addQuery('sys_id', 'in', currents.map(checkedRow => checkedRow.sys_id));
record.selectAttributes(['sys_id']);
record.query();
record.deleteMultiple();
ss.setRedirect(); // reload window
} else {
ss.addErrorMessage('No selected rows.');
}