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

Пример 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 и подтвердите, нажав Enter.
ПолеОписание
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