Примеры использования
В скрипте действия пользовательского интерфейса вы можете использовать некоторые специальные глобальные методы, позволяющие расширить возможности взаимодействия. Используйте их для расширения стандартной функциональности действий пользовательского интерфейса.
Пример 1: Сделать кнопку доступной во время ответа сервера
При использовании опции Дождаться ответа сервера, после нажатия кнопки ожидается ответа сервера. Всё это время, между нажатием кнопки и ответом сервера, кнопка будет отключена.
Используйте методы __resolveServerResponse() и __rejectServerResponse(), чтобы сделать действие пользовательского интерфейса снова доступным после выполнения действия. Например:
await s_i18n.getMessage('The report has been saved', (response) => {
s_form.addInfoMessage(response);
__resolveServerResponse();
});
Используйте метод __resolveServerResponse() для принудительного ответа сервера, чтобы, например, вам не пришлось ждать, пока кнопка станет доступной.
Для обработки ошибок используйте метод __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 используется в списках и предоставляет служебную информацию о текущей ячейке таблицы. Информация предоставляется в формате объекта.
const rowRecordId = window.currentCell.recordId;
const rowTableName = window.currentCell.tableName;
if (rowRecordId) {
s_go.open(`/record/${rowTableName}/${rowRecordId}`);
}
Это свойство доступно для использования только в действиях пользовательского интерфейса, реализующих контекстное меню строки. Чтобы использовать его для указанного действия пользовательского интерфейса, перейдите к его форме записи в таблице UI-действий (sys_ui_action), откройте запись и сначала установите этот флажок на вкладке Позиция и стиль. После всех изменений сохраните страницу.
Чтобы получить эту информацию вручную, выполните следующие действия:
- Откройте любой список, содержащий любые значения.
- Откройте консоль разработчика в своем браузере.
- Щелкните правой кнопкой мыши любую ячейку, чтобы открыть контекстное меню.
- В консоли разработчика введите window.currentCell и отправьте.
Поле | Описание |
---|---|
attribute | Тип элемента, из которого собирается информация. Когда выбрана ячейка в заголовке списка, это поле заполняется значением, аналогичным полю fieldName. |
columnId | ID колонки, к которой относится указанной поле. |
columnType | Тип колонки, к которой относится указанное поле. |
recordId | ID записи. |
tableId | ID таблицы, которая содержит указанное поле и запись. |
tableName | Системное название таблицы, которая содержит указанное поле и запись. |
value | Текущее значение ячейки. |
Пример 3: Удалить выбранные записи
В этом примере показан случай массового удаления записей, которые были выбраны в представлении списка.
Для этого используется объект currents. Он предназначен для хранения выбранных записей в виде объектов SimpleRecord. Этот объект можно использовать вместо метода getCheckedRow() при использовании методов серверного API. Он доступен для действий пользовательского интерфейса со списком на стороне сервера.
Объект currents недоступен для действий следующих типов:
- В контекстном меню заголовка колонки
- В контекстном меню строки
Пример кода действия пользовательского интерфейса приведен ниже:
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.');
}