Расширение формы вида расчета.ПриЗаписи

События · OnWrite

Возникает при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта ПланВидовРасчетаОбъект.<Имя плана видов расчета>) в базу данных, но до окончания транзакции записи.

Синтаксис

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

Расширение формы вида расчета.ПриЗаписи (Calculation type form extension.OnWrite)

Расширение формы вида расчета (Calculation type form extension)

ПриЗаписи (OnWrite)

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

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

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

Возникает при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта ПланВидовРасчетаОбъект.<Имя плана видов расчета>) в базу данных, но до окончания транзакции записи.

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

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

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

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

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

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

ПриЗаписи: обычная форма УчебныеВидыРасчета

Событие обычной формы срабатывает после записи объекта, но до окончания транзакции. Отказ ещё позволяет отменить изменение.

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

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

Подготовка

  1. Работайте только в собственной пустой учебной конфигурации. В Конфигураторе создайте ПланВидовРасчета УчебныеВидыРасчета; не добавляйте эти учебные объекты в рабочую базу.

  2. Код — строковый длиной 10, наименование длиной 100. Для справочника, плана обмена и плана видов характеристик включите автонумерацию. Для счетов и видов расчёта код назначается явно в примере.

  3. Для плана видов расчёта не включайте зависимость от базового периода и действие по периоду. Регистры расчёта в этом уроке не нужны.

  4. Добавьте реквизиты Комментарий (Строка 100), Лимит (Число 15.2 с разрешённым отрицательным знаком), ЗапретУдаления (Булево). Не делайте их автоматически обязательными: дополнительные правила описаны отдельными обработчиками.

  5. У ПланВидовРасчета УчебныеВидыРасчета создайте именно обычную объектную форму УчебнаяОбычная, не управляемую и не форму списка. Основной реквизит формы назовите Объект, тип — объект данного собственного метаданного.

  6. Выведите Объект.Лимит и Объект.Комментарий на форму. Оставьте штатные команды записи. Добавьте надпись УчебноеПояснение без связи с данными.

  7. В модуле этой формы назначьте событие ПриЗаписи основной процедуре из примера. Процедуры соседних событий размещаются отдельно, каждая только один раз.

  8. В отдельной внешней обработке создайте обычную форму и кнопку ОткрытьСвойОбъект; последний дополнительный блок назначьте её обработчиком. Это настоящий производитель объекта, который получает его именованную форму.

  9. Запуск — толстый клиент, обычные формы, отдельная учебная конфигурация. Директивы &НаКлиенте / &НаСервере в модуль обычной формы не добавляются.

  10. Для обычного опыта задайте число 25. Старт процесса выполняется только подготовительным производителем задачи; сами события записи не стартуют процесс и не выполняют задачу.

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

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

  1. Открываем точную обычную форму собственного объекта, созданного дополнительным кодом.

  2. Платформа вызывает назначенный обработчик своей формы с параметрами установленной справки.

  3. Событие обычной формы срабатывает после записи объекта, но до окончания транзакции. Отказ ещё позволяет отменить изменение.

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

  1. Сначала сохраните 25, затем попытайтесь записать 150: данная проверка отменяет запись.

  2. Закройте форму без сохранения и заново откройте свою ссылку: в базе осталось 25, не 150.

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

Событие проверяется в настоящей собственной объектной форме толстого клиента.

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

  1. Этот пример не предназначен для управляемой формы: контексты и последовательности событий различаются.

  2. Правило формы не защищает программную запись без этой формы; общие правила данных размещают в модуле объекта.

  3. Не вызывайте Записать повторно внутри ПередЗаписью, ПриЗаписи или ПослеЗаписи; здесь нет рекурсивной записи.

  4. ПриИзмененииДанных означает инициализацию / перечитывание / смену объекта, а не пользовательское ПриИзменении отдельного поля.

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

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

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

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

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