You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

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

Пример 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 

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

Для этого используется объект current. Он предназначен для хранения выбранных записей в виде объектов SimpleRecord. Этот объект можно использовать вместо метода getCheckedRow() на стороне сервера. Он доступен для действий пользовательского интерфейса со списком на стороне сервера.

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

Удаление выбранных записей
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.');
}


  • No labels