Серверный обработчик вызывается после записи объекта, но до завершения транзакции; Отказ ещё отменяет её. Контекст: Планы обмена → УчебныйКонтрольныйОбмен → Формы → ФормаУзла.
Где и как запускать
Модуль управляемой формы: Планы обмена → УчебныйКонтрольныйОбмен → Формы → ФормаУзла. Серверная и клиентская директивы уже указаны; не вставляйте процедуру внутрь другой.
Подготовка
Все действия выполняйте только в отдельной учебной конфигурации.
Создайте план обмена УчебныйКонтрольныйОбмен без распределённой базы и без объектов в составе. Добавьте КонтрольноеЧисло (Число 15.2) и Комментарий (Строка 100).
Создайте основную управляемую форму узла с основным реквизитом Объект. Проверяйте новый неосновной узел УРОК, наименование Учебный узел. Сообщения обмена не отправляйте.
Основной реквизит формы должен называться Объект. Если мастер дал другое имя, переименуйте основной реквизит и исправьте пути данных его полей в редакторе формы.
Выведите основной числовой реквизит и комментарий на форму. Добавьте отдельный реквизит формы Статус (Строка 200), выведите его недоступным для редактирования.
Откройте Планы обмена → УчебныйКонтрольныйОбмен → Формы → ФормаУзла → Модуль формы. Назначьте событие ПриЗаписиНаСервере одноимённой процедуре. Обновите только учебную базу.
Примеры соседних событий можно объединить в одном модуле: каждая процедура должна существовать только один раз. Для обычного опыта задайте число 25 и комментарий Учебный объект.
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийОбъект.КонтрольноеЧисло > 100 Тогда
Отказ = Истина;
Сообщить("Значение больше учебного лимита 100");
КонецЕсли;
КонецПроцедурыРазбор по шагам
Платформа вызывает назначенный обработчик, передавая параметры именно своего расширения формы.
Серверный обработчик вызывается после записи объекта, но до завершения транзакции; Отказ ещё отменяет её.
Работа ведётся с реквизитами объекта, который полностью объявлен в подготовке.
Как проверить результат
Введите 150: клиентская проверка отрицательного значения пропускает его, но эта серверная проверка отменяет запись.
Вновь откройте ранее сохранённый объект: 150 не должно заменить старое значение; при 25 запись проходит.
Ожидаемый результат
Откатить запись, нарушающую учебный лимит для собственного учебного объекта.
На что обратить внимание
Событие не означает успешную фиксацию транзакции.
Здесь не отправляйте внешние уведомления об успехе: транзакция может быть отменена.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.