В скрипте действия пользовательского интерфейса вы можете использовать некоторые специальные глобальные методы, позволяющие расширить возможности взаимодействия. Используйте их для расширения стандартной функциональности действий пользовательского интерфейса.
Пример 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 и подтвердите, нажав Enter.
Поле | Описание |
---|---|
attribute | Тип элемента, из которого собирается информация. Когда выбрана ячейка в заголовке списка, это поле заполняется значением, аналогичным полю fieldName. |
columnId | ID колонки, к которой относится указанной поле. |
columnType | Тип колонки, к которой относится указанное поле. |
recordId | ID записи. |
tableId | ID таблицы, которая содержит указанное поле и запись. |
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