Возникает перед выполнением записи набора записей. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи набора записей регистра расчета.
Синтаксис
ПередЗаписью(<Отказ>, <Замещение>, <ТолькоЗапись>, <ЗаписьФактическогоПериодаДействия>, <ЗаписьПерерасчетов>)Полное описание, параметры и ограничения
РегистрРасчетаНаборЗаписей.<Имя регистра расчета>.ПередЗаписью (CalculationRegisterRecordSet.<Calculation register name>.BeforeWrite)
РегистрРасчетаНаборЗаписей.<Имя регистра расчета> (CalculationRegisterRecordSet.<Calculation register name>)
ПередЗаписью (BeforeWrite)
Доступен, начиная с версии 8.0.
Синтаксис:
ПередЗаписью(<Отказ>, <Замещение>, <ТолькоЗапись>, <ЗаписьФактическогоПериодаДействия>, <ЗаписьПерерасчетов>)
Параметры:
<Отказ>
Тип: Булево.
Признак отказа от выполнения действия. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение.
Значение по умолчанию: Ложь.
<Замещение>
Тип: Булево.
Режим записи набора.
Истина - запись осуществляется с заменой существующих в базе данных записей набора.
Ложь - запись осуществляется с "дописыванием" текущего набора записей.
<ТолькоЗапись>
Тип: Булево.
Признак того, что при записи набора выполняется только запись набора записей без пересчета фактического периода действия и без обновления перерасчетов.
<ЗаписьФактическогоПериодаДействия>
Тип: Булево.
Признак того, что при записи набора выполняется расчет фактического периода действия.
Анализировать этот параметр имеет смысл только в том случае, если параметр обработчика <ТолькоЗапись> имеет значение Ложь.
<ЗаписьПерерасчетов>
Тип: Булево.
Признак того, что при записи набора выполняется запись перерасчетов регистра.
Анализировать этот параметр имеет смысл только в том случае, если параметр обработчика <ТолькоЗапись> имеет значение Ложь.
Описание:
Возникает перед выполнением записи набора записей. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи набора записей регистра расчета.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Замечание:
Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Обработать ПередЗаписью своего УчебныеНачисленияНастроек
Прикладное учебное правило запрещает отрицательный ресурс собственного набора. Это не универсальный запрет отрицательных движений всех регистров: стандартные правила учёта не меняются.
Где и как запускать
Модуль собственного набора записей, серверный платформенный обработчик. Производящий код отдельно выполняется в собственной учебной базе.
Подготовка
Работайте только в собственной пустой учебной конфигурации. В Конфигураторе создайте ПланВидовРасчета УчебныеВидыРасчета; не добавляйте эти учебные объекты в рабочую базу.
Код — строковый длиной 10, наименование длиной 100. Для справочника, плана обмена и плана видов характеристик включите автонумерацию. Для счетов и видов расчёта код назначается явно в примере.
Для плана видов расчёта не включайте зависимость от базового периода и действие по периоду. Регистры расчёта в этом уроке не нужны.
Добавьте реквизиты Комментарий (Строка 100), Лимит (Число 15.2 с разрешённым отрицательным знаком), ЗапретУдаления (Булево). Не делайте их автоматически обязательными: дополнительные правила описаны отдельными обработчиками.
Для этой диагностики дополнительно создайте документ УчебныйРасчетНастроек с разрешённым проведением. Создайте регистр расчёта УчебныеНачисленияНастроек, периодичность Месяц, план видов расчёта УчебныеВидыРасчета, регистратор УчебныйРасчетНастроек, ресурс Результат типа Число 12.2.
Остальные механизмы расчёта оставьте выключенными. Обновите учебную конфигурацию; документы и начисления не создавайте. Читается только Периодичность регистра, начисление зарплаты не выполняется.
В модуле набора записей УчебныеНачисленияНастроек поместите основной обработчик. Для его запуска не назначайте событие формы и не вызывайте процедуру вручную.
Обновите учебную базу. Дополнительный блок выполняйте в серверной процедуре своей обработки. Каждый запуск создаёт отдельный собственный документ-регистратор; фильтр набора ограничивает запись только этим новым документом.
В этом упражнении учебный регистратор записывается без проведения, затем явно записывается его набор. Это демонстрация API набора, не реализация полноценного проведения документа. Рабочие документы не используются.
Процедура ПередЗаписью(Отказ, Замещение, ТолькоЗапись, ЗаписьФактическогоПериодаДействия, ЗаписьПерерасчетов)
Для Каждого Запись Из ЭтотОбъект Цикл
Если Запись.Результат < 0 Тогда
Отказ = Истина;
Сообщить("В учебном наборе не допускается отрицательное Результат");
КонецЕсли;
КонецЦикла;
КонецПроцедурыСерверная процедура: новый собственный регистратор и настоящая запись набора
ВидРасчета = ПланыВидовРасчета.УчебныеВидыРасчета.СоздатьВидРасчета();
ВидРасчета.Код = Лев(Строка(Новый УникальныйИдентификатор), 8);
ВидРасчета.Наименование = "Учебное начисление";
ВидРасчета.Записать();
Документ = Документы.УчебныйРасчетНастроек.СоздатьДокумент();
Документ.Дата = Дата(2026, 10, 14);
Документ.Записать();
Набор = РегистрыРасчета.УчебныеНачисленияНастроек.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Документ.Ссылка);
Запись = Набор.Добавить();
Запись.ПериодРегистрации = Дата(2026, 10, 1);
Запись.ВидРасчета = ВидРасчета.Ссылка;
Запись.Активность = Истина;
Запись.Результат = 750;
Если Набор.ПроверитьЗаполнение() Тогда
Набор.Записать();
Сообщить("Записан собственный учебный набор");
КонецЕсли;Разбор по шагам
ЭтотОбъект в модуле набора записей — тот самый набор, созданный и заполненный дополнительным кодом.
ПроверитьЗаполнение запускает соответствующую проверку; Записать запускает события записи. Один вызов не подменяется ручным вызовом процедуры.
Замещение касается выбранного регистратора. Обработчик не записывает ЭтотОбъект повторно и не запускает рекурсивное проведение.
Как проверить результат
С положительным ресурсом проверка допускает запись собственного набора. Сообщения обработчика показывают его реальные строки.
Для ОбработкаПроверкиЗаполнения / ПередЗаписью замените ресурс в новом проверочном наборе на -1: своё правило устанавливает Отказ. Для ПриЗаписи проверка отрицательных значений не добавляется, обработчик только сообщает значения.
Ожидаемый результат
Платформенное событие обработало настоящий собственный набор записей.
На что обратить внимание
Отказ отменяет конкретное действие; сообщение само по себе ничего не отменяет.
Не очищайте отбор регистратора и не запускайте этот учебный блок над рабочими записями.
ПриЗаписи не подходит для отправки внешних сообщений о гарантированно зафиксированной транзакции. Показанный BSL при сборке справочника не выполнялся.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.