SimpleForm
Данный класс включает в себя методы, позволяющие настраивать формы. Они могут использоваться исключительно на стороне клиента.
Помимо этого, нижеперечисленные методы можно использовать для настройки зависимостей между полями и значениями. Например, для изменения или удаления значений полей.
-
На странице с загруженной формой в консоли браузера нельзя обратиться к форме напрямую через переменную s_form.
-
В случае, если на странице с формой записи одной таблицы присутствует RE-модель записи другой таблицы, которая добавлена на форму с помощью виджета с Simple-тегом <rem>, или модель выведена с помощью тега <remform>, клиентский скрипт модели не сможет обратиться напрямую к форме через переменную s_form. В данном случае на странице находятся два независимых объекта форм.
-
Методы для работы с REM-атрибутами предполагают работу с атрибутами, выведенными Simple-тегом <rem> для текущей таблицы.
Для оперирования формой в случаях, указанных выше, используйте конструкцию s_widgets.getForm('formName'), где formName – название представления необходимой формы.
SimpleForm(table, sys_id)
Используйте этот конструктор для создания экземпляра объекта SimpleForm.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
table | String | Да | Нет |
sys_id | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Object | Метод возвращает объект формы. |
Пример:
window.s_widget_custom.submit = async function () {
await s_widget.serverUpdate();
const tableName = s_widget.getFieldValue('table_name');
const recordId = s_widget.getFieldValue('record_id');
const builtInForm = new SimpleForm(tableName, recordId);
await builtInForm.save().then(s_form.save());
s_modal.setShow(false);
s_go.reloadWindow();
}
modalForm()
Используйте этот объект класса SimpleForm, чтобы взаимодействовать с формой модального окна из клиентских скриптов формы открытой записи. Форма доступна при использовании тэга <Form> в виджете модального окна.
Чтобы обратиться к объекту, используйте s_form.modalForm.
Возвращаемое значение:
Тип | Описание |
---|---|
Object | Метод возвращает объект формы. |
Пример:
s_form.modalForm.setValue('state', '2')
Использование глобальных переменных
Внутри каждой формы записи можно использовать преднастроенные глобальные переменные.
Переменная | Описание |
---|---|
currentFieldLabel | Определяет связь поля с объектом его обертки. Эта переменная используется с методом getColumnId(), как в примере: window.currentFieldLabel.getColumnId() Например, при помощи этой переменной можно получить контекстное меню поля. |
currentUiAction | Эта переменная содержит объект с ID записи [UI-действия](/platform/developer-help/user-actions/UI actions). Используйте ее при вызове контекстного меню кнопки. |
s_form.addErrorMessage(message)
Используйте этот метод для отображения всплывающего окна с сообщением об ошибке в нижнем правом углу окна. Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
message | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
s_form.addErrorMessage('Пожалуйста, введите email в следующем формате: joe@example.com');
s_form.addInfoMessage(message, durationMilliseconds)
Используйте данный метод для отображения информационного сообщения, которое всплывает в нижнем правом углу окна. Сообщение исчезнет через некоторое время. В параметре durationMilliseconds можно задать это время в миллисекундах.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
message | String | Да | Нет |
durationMilliseconds | Number | Нет | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
s_form.addInfoMessage('Link copied to clipboard', 2000);
s_form.addSuccessMessage(message, durationMilliseconds)
Используйте метод, чтобы отобразить сообщение об успешном действии в нижнем правом углу окна. Сообщение исчезнет через некоторое время. В параметре durationMilliseconds можно задать это время в миллисекундах.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
message | String | Да | Нет |
durationMilliseconds | Number | Нет | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
s_form.addSuccessMessage('Запись успешно добавлена!', 3000);
s_form.addWarningMessage(message, durationMilliseconds)
Используйте метод, чтобы отобразить сообщение с предупреждением в правом нижнем углу. Сообщение исчезнет через некоторое время. В параметре durationMilliseconds можно задать это время в миллисекундах.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
message | String | Да | Нет |
durationMilliseconds | Number | Нет | Нет |
Возвраща емое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
s_form.addWarningMessage('Эта запись изменена другим пользователем', 3000);
s_form.addOption(fieldName, choiceValue)
Используйте данный метод для добавления опции выбора в конец списка поля типа Choice. Пользователь может добавить значения choiceValue, определенные для колонки fieldName в текущем наборе опций таблицы.
Это асинхронный метод. Для оптимальной работы системы используйте ключевое слово await, как показано в примере ниже.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
fieldName | String | Да | Нет |
choiceValue | String | Да | Нет |
Возв ращаемое значение:
Тип | Описание |
---|---|
Object | Метод возвращает объект Promise object. |
Пример:
const choices = ['10', '20', '30'];
s_form.clearOptions('contact_type');
for (const optionValue of choices) {
await s_form.addOption('contact_type', optionValue);
}
s_form.clearMessages()
Используйте этот метод для того, чтобы закрывать все виды сообщений (информационные и об ошибке) на форме.
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
s_i18n.getMessage('Дата и время завершения не могут быть раньше даты и времени начала', (response) => {
s_form.clearMessages();
s_form.addErrorMessage(response);
});
s_form.clearOptions(fieldName)
Используйте данный метод для удаления всех опций из списка с выбором поля типа Choice.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
fieldName | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Void | Метод не возвращает значение. |
Пример:
const choices = ['10', '20', '30'];
s_form.clearOptions('contact_type');
for (const optionValue of choices) {
await s_form.addOption('contact_type', optionValue);
}
s_form.clearValue(fieldName)
Используйте данный метод для удаления значения любого поля.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
fieldName | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает false, если очистить поле не получилось, в следующих случаях:
|
Пример:
if (!s_form.getValue('sprint')) {
s_form.clearValue('points');
}
s_form.isFieldChanged(fieldName)
Используйте этот метод, чтобы проверить, изменилось ли значение указанного поля.
Если клиентский скрипт меняет значение в поле на форме, метод вернет значение true. Изменения могут быть инициированы как скриптом, так и пользователем.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
fieldName | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
Boolean | Метод возвращает true, если значение в указанном поле было изменено; в противном случае, метод возвращает false. |
Пример:
if (s_form.isFieldChanged('state') && s_form.getValue('state') != 'new') {
return false; // отмена отправки формы
}
s_form.formId
Используйте это свойство класса, чтобы вернуть ID текущей формы. ID формы – это ID записи в таблице Формы (sys_ui_form).
Возвращаемое значение:
Тип | Описание |
---|---|
String | Метод возвращает ID записи формы в таблице Формы (sys_ui_form). |
Пример:
const url = new URL(`${API_BASE_URL}/export/excel`);
if (typeof s_form !== "undefined") {
url.searchParams.set('form_id', s_form.formId);
}
window.open(url, "_blank");
s_form.getAllFields()
Используйте метод, чтобы получить список вынесенных на форму полей с их значениями.
Возвращаемое значение содержит два ключа:
- data – объект, ключами которого являются системные названия полей, а значения – значения этих полей.
- error – массив с сообщениями об ошибках в случае сохранения формы в текущем состоянии.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
isAll | Boolean | Нет | false |
Возвращаемое значение:
Тип | Описание |
---|---|
Object | При значении isAll false, метод возвращает информацию о полях, значения которых были изменены. При значении true возвращается информация обо всех вынесенных на форму полях, из всех секций, в том числе о скрытых клиентскими скриптами. На форме новой записи, при любом значении isAll, метод возвращает перечень всех полей формы. |
Пример:
if (!s_form.getAllFields(true).data.hasOwnProperty('state')) return;
s_form.getChanges()
Используйте данный метод для получения информации об измененных полях: название поля, предыдущее значение, текущее значение.
Если выполненный на форме клиентский скрипт менял значения полей, то метод getChanges() вернет массив с информацией обо всех измененных полях. Изменения могут быть инициированы как скриптом, так и пользователем.
Возвращаемое значение:
Тип | Описание |
---|---|
Array of Objects | Метод возвращает массив объектов, содержащих название поля, его предыдущее и текущее значения. |
Пример:
if (s_form.isChanged()) {
const changedFields = s_form.getChanges();
let payload = {};
changedFields.forEach((field) => {
payload[field.fieldName] = field.currentValue;
});
SimpleStorage.setItem('payload', payload);
}
s_form.getLabelOf(fieldName)
Используйте метод, чтобы вернуть отображаемое название поля на форме.
Параметры:
Наименование | Тип | Обязательно | Значение по умолчанию |
---|---|---|---|
fieldName | String | Да | Нет |
Возвращаемое значение:
Тип | Описание |
---|---|
String | Метод возвращает строку, содержащую отображаемое название поля. |
Пример:
const FIELD_LABEL = s_form.getLabelOf('username');
s_form.addErrorMessage(`Поле "${FIELD_LABEL}" содержит недопустимые символы.`);