Расширение формы набора записей регистра расчета.ПриЗаписи

События · OnWrite

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

Синтаксис

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

Расширение формы набора записей регистра расчета.ПриЗаписи (Calculation register record set form extension.OnWrite)

Расширение формы набора записей регистра расчета (Calculation register record set form extension)

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

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

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

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

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

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

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

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

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

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

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

ПриЗаписи: собственная обычная форма calculation

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

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

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

Подготовка

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

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

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

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

  5. Для этой диагностики дополнительно создайте документ УчебныйРасчетНастроек с разрешённым проведением. Создайте регистр расчёта УчебныеНачисленияНастроек, периодичность Месяц, план видов расчёта УчебныеВидыРасчета, регистратор УчебныйРасчетНастроек, ресурс Результат типа Число 12.2.

  6. У регистра УчебныеНачисленияНастроек остальные механизмы расчёта оставьте выключенными. Обновите учебную базу; источник создаёт один свой вид расчёта, документ и запись результата 750.

  7. У собственного регистра УчебныеНачисленияНастроек создайте обычную форму набора УчебныйНабор через конструктор формы набора записей. Основной реквизит — набор этого регистра; выведите его строки и ресурсы.

  8. Источник сохраняет новый собственный документ-регистратор, но сам набор до открытия формы не записывает. Сохранение набора выполняется стандартной командой открытой формы по фильтру этого нового регистратора.

  9. В самой обычной форме записи / набора добавьте собственные реквизиты Статус (Строка 200) и ОтменятьВТранзакции (Булево); выведите их на форму.

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

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

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

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

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

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

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

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

  1. При включённом флажке запись формы отменяется; сообщение ПриЗаписи нельзя трактовать как доказательство фиксации.

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

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

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

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

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

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

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

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

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

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

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

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