Примеры использования
В скрипте действия пользовательского интерфейса вы можете использовать некоторые специальные глобальные методы, позволяющие расширить возможности взаимодействия. Используйте их для расширения стандартной функциональности действий пользовательского интерфейса.
Пример 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() на стороне сервера. Он доступен для действий [пользовательского ин терфейса со списком](/platform/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.');
}