Перейти к содержимому

Кастомизация форм элементов

Для форм создания, просмотра и редактирования элемента списка администратор портала может задать:

  1. Скрипт формы — пользовательский JavaScript (как скрипт страницы).
  2. Веб-части — до или после стандартных полей (или вместо них).
  3. Показ стандартной формы — включить/выключить встроенный UI полей.

Библиотеки документов и быстрое редактирование в таблице не затрагиваются.

Настройки списка → Формы (нужна роль администратора портала). Три подвкладки: Создание / Просмотр / Редактирование.

Сохранение пишет поле form_config списка (PATCH /api/v1/lists/{id} с formConfig).

Выполняется в браузере после отрисовки формы. Аргументы:

АргументНазначение
$jQuery
contextmode, list, item, fields, user и хелперы
$containerкорень страницы элемента (.list-item-page)

Хелперы context:

МетодОписание
setFieldDisabled(nameOrId, disabled)заблокировать поле по internal_name или UUID
hideField(nameOrId) / showField(nameOrId)скрыть / показать поле
getFormValues()значения формы (create/edit)
setFieldValue(nameOrId, value, listId)установить значение (create/edit)

Можно вернуть функцию dispose для очистки при уходе со страницы.

На вкладке Редактирование (и при необходимости Просмотр):

context.setFieldDisabled('status', true);
// или по UUID поля:
// context.setFieldDisabled('a1b2c3d4-....', true);

Скрипт блокирует только интерфейс. Чтобы нельзя было обойти запрет через API (PATCH элемента), добавьте проверку в Event Receiver на listItem.updating / listItem.updated.

  • До формы / После формы (placement: before | after) — при включённой стандартной форме.
  • Если «Показывать стандартную форму» выключено — веб-части идут по порядку как тело страницы; кнопки «Создать» / «Сохранить» стандартной формы скрыты. Кастомная логика сохранения — в веб-части (через API списков).

Шапка страницы (назад, заголовок, права, удаление) остаётся.

См. раздел Кастомизация форм (form_config) в API: Списки.

PATCH /api/v1/lists/{listId}
Content-Type: application/json
{
"formConfig": {
"edit": {
"script": "context.setFieldDisabled('status', true);",
"showStandardForm": true,
"webParts": []
}
}
}