Расширение формы констант.ПередЗаписью

События · BeforeWrite

Возникает перед выполнением записи объекта из формы. Процедура-обработчик вызывается перед вызовом процедуры-обработчика события ПередЗаписьюобъекта КонстантаМенеджерЗначения.<Имя константы>.

Синтаксис

ПередЗаписью(<Отказ>)
Полное описание, параметры и ограничения

Расширение формы констант.ПередЗаписью (Constant form extension.BeforeWrite)

Расширение формы констант (Constant form extension)

ПередЗаписью (BeforeWrite)

Доступен, начиная с версии 8.0.

Синтаксис:
ПередЗаписью(<Отказ>)
Параметры:

<Отказ>
Тип: Булево.
Признак отказа от записи объекта. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись объекта выполнена не будет.
Значение по умолчанию: Ложь.
Описание:

Возникает перед выполнением записи объекта из формы. Процедура-обработчик вызывается перед вызовом процедуры-обработчика события ПередЗаписьюобъекта КонстантаМенеджерЗначения.<Имя константы>.

Доступность:

Толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

ПередЗаписью: собственная обычная форма constant

Перед платформенной записью собственной формы проверяем явное согласие пользователя. Отказ отменяет запись до её выполнения.

Где и как запускать

Модуль обычной формы конкретного собственного объекта. Открывающий обработчик — другая собственная обычная форма; толстый клиент.

Подготовка

  1. В отдельной пустой учебной конфигурации создайте константу УчебныйЛимитФормы типа Число 12.2.

  2. В Общие → Общие формы конструктором создайте обычную форму констант УчебныеКонстанты, включите только УчебныйЛимитФормы. В свойствах корня конфигурации назначьте её Основной формой констант.

  3. Форма должна быть именно формой констант, а не произвольной формой с похожим числовым реквизитом. Источник открывает назначенную основную форму; изменяйте только свой учебный лимит.

  4. В самой обычной форме констант добавьте собственные реквизиты Статус (Строка 200) и РазрешитьЗапись (Булево); выведите их на форму.

  5. Основной блок назначьте событию формы ПередЗаписью, дополнительный инициализатор — ПриОткрытии этой же формы. Это не событие модуля набора / значения константы.

  6. Открывающий блок разместите в другой обычной форме своей внешней обработки и назначьте кнопке. Запуск — толстый клиент. В открытой форме используйте стандартную команду Записать, не прямой вызов обработчика.

Процедура ПередЗаписью(Отказ)
    Если НЕ РазрешитьЗапись Тогда
        Отказ = Истина;
        Статус = "Включите собственный флажок РазрешитьЗапись";
        Сообщить(Статус);
    КонецЕсли;
КонецПроцедуры
Та же целевая обычная форма: назначить событию ПриОткрытии
Процедура ПриОткрытии()
    РазрешитьЗапись = Ложь;
    Статус = "Собственная форма готова к проверке записи";
    Сообщить(Статус);
КонецПроцедуры
Другая обычная форма своей внешней обработки: кнопка ОткрытьСвойУрок
Процедура ОткрытьСвойУрок(Кнопка)
    ФормаУрока = Константы.ПолучитьФорму();
    ФормаУрока.Открыть();
    Сообщить("Измените только свой УчебныйЛимитФормы");
КонецПроцедуры

Разбор по шагам

  1. Конструктор создаёт настоящую форму конкретной собственной записи / набора / констант.

  2. Открывающая кнопка передаёт форме реальный собственный объект с ограниченным ключом / регистратором.

  3. Стандартная команда формы вызывает платформенное событие; обработчик меняет только свой флаг отказа или локальный статус.

Как проверить результат

  1. С выключенным флажком стандартная команда Записать не сохраняет объект формы.

  2. Включите свой флажок и повторите ту же команду: собственная запись допускается, если прочие проверки метаданных пройдены.

Ожидаемый результат

Этап записи показан на настоящей собственной обычной форме, а не ручным вызовом процедуры с подставными аргументами.

На что обратить внимание

  1. ПередЗаписью, ПриЗаписи и ПослеЗаписи — разные этапы. Не посылайте внешние сообщения об успехе из ПриЗаписи до фиксации.

  2. Источник набора нельзя открывать без отбора регистратора / собственного ключа; не заменяйте источник рабочим набором.

  3. При сборке HTML BSL, запись в 1С и открытие её форм не выполнялись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.