БизнесПроцессОбъект.<Имя бизнес-процесса>.ПриЗаписи

События · OnWrite

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

Синтаксис

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

БизнесПроцессОбъект.<Имя бизнес-процесса>.ПриЗаписи (BusinessProcessObject.<Business process name>.OnWrite)

БизнесПроцессОбъект.<Имя бизнес-процесса> (BusinessProcessObject.<Business process name>)

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

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

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

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

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

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

Сервер, толстый клиент, внешнее соединение.

Замечание:

Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
См. также:
БизнесПроцессОбъект.<Имя бизнес-процесса>, метод Записать

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

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

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

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

Обработать ПриЗаписи у собственного бизнес-процесса

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

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

Модуль объекта УчебноеСогласование. Без клиентских директив; действия запускаются из серверной учебной процедуры.

Подготовка

  1. Работайте в отдельной пустой учебной конфигурации. Создайте справочник УчебныеИсполнители и предопределённый элемент Демонстрационный с наименованием Учебный исполнитель.

  2. Создайте задачу УчебныеСогласования: строковый номер длиной 12, автонумерация, наименование длиной 100. Добавьте реквизит адресации Исполнитель типа СправочникСсылка.УчебныеИсполнители и выберите его основным реквизитом адресации. Здесь используется прямая адресация; регистр ролевой адресации не нужен.

  3. Создайте параметр сеанса УчебныйИсполнитель того же ссылочного типа. В свойстве задачи Текущий исполнитель выберите этот параметр. Запросы урока передают исполнителя явно и не зависят от начального значения параметра сеанса.

  4. Создайте бизнес-процесс УчебноеСогласование со строковым номером длиной 12 и автонумерацией. В свойстве Задача выберите УчебныеСогласования. Карта маршрута: Старт (начало) → Согласовать (действие) → Завершение. В точке Согласовать задайте адресацию Исполнитель = Демонстрационный, Групповая = Ложь.

  5. И у задачи, и у бизнес-процесса создайте обычные реквизиты КомментарийУчебный (Строка 100), Сумма (Число 12.2), Подтверждено (Булево), ЗапретУдаления (Булево). Добавьте табличную часть Детали с колонками Наименование (Строка 100) и Количество (Число 10.0).

  6. Создайте общий реквизит УчебныйИсточник типа Строка 20, Разделение данных = Не использовать. Включите только учебную задачу и бизнес-процесс в его состав. Это не разделитель и не настройка рабочей конфигурации.

  7. В модуле объекта бизнес-процесса разместите отдельный обработчик СогласоватьПриСозданииЗадач из дополнительного блока. В свойствах точки Согласовать назначьте его событию ПриСозданииЗадач. Платформа записывает сформированные задачи после обработчика; внутри него Записать не вызывается.

  8. Обновите учебную базу. Создайте серверный общий модуль УчебныеПроцессы: поместите туда функцию ПодготовитьУчебныйПроцесс из отдельного блока и процедуру ВыполнитьПример() Экспорт. Основной код без заголовка вставляйте в тело этой процедуры и вызывайте её из серверной команды своей обработки.

  9. Каждый запуск подготовки действительно создаёт новый учебный бизнес-процесс и его задачу. Не используйте рабочую базу. Табличные части и обычные реквизиты заполняются только у этих новых объектов; ничего не отправляется по сети.

  10. На время этого урока оставьте у соответствующего объекта только текущий показанный обработчик жизненного цикла. Обработчик создания задач точки Согласовать сохраняется отдельно.

  11. Показанный ОбработкаЗаполнения принимает именно структуру КомментарийУчебный,Сумма из дополнительного блока; это не универсальный алгоритм ввода на основании любого документа.

Процедура ПриЗаписи(Отказ)
    Если Сумма > 10000 Тогда
        Отказ = Истина;
        Сообщить("Учебный предел превышен: транзакция записи отменяется");
    Иначе
        Сообщить("В транзакции записано: " + Строка(Сумма));
    КонецЕсли;
КонецПроцедуры
Серверный общий модуль УчебныеПроцессы: реальное создание процесса и задачи
Функция ПодготовитьУчебныйПроцесс(ЗапуститьМаршрут = Истина) Экспорт
    Процесс = БизнесПроцессы.УчебноеСогласование.СоздатьБизнесПроцесс();
    Процесс.Дата = Дата(2026, 10, 14, 10, 0, 0);
    Процесс.КомментарийУчебный = "Согласовать учебную покупку";
    Процесс.Сумма = 100;
    Процесс.Подтверждено = Ложь;
    Процесс.УчебныйИсточник = "ПРИМЕР";
    Деталь = Процесс.Детали.Добавить();
    Деталь.Наименование = "Книга";
    Деталь.Количество = 2;
    Процесс.Записать();
    Если Не ЗапуститьМаршрут Тогда
        Возврат Новый Структура("Процесс,Задача", Процесс.Ссылка, Задачи.УчебныеСогласования.ПустаяСсылка());
    КонецЕсли;
    Процесс.Старт();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Задача.УчебныеСогласования ГДЕ БизнесПроцесс = &Процесс";
    Запрос.УстановитьПараметр("Процесс", Процесс.Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Не Выборка.Следующий() Тогда
        ВызватьИсключение "Маршрут не создал учебную задачу: проверьте подготовку";
    КонецЕсли;
    Возврат Новый Структура("Процесс,Задача", Процесс.Ссылка, Выборка.Ссылка);
КонецФункции
Модуль объекта бизнес-процесса: назначенный обработчик точки Согласовать
Процедура СогласоватьПриСозданииЗадач(ТочкаМаршрута, ФормируемыеЗадачи, Отказ)
    Для Каждого НоваяЗадача Из ФормируемыеЗадачи Цикл
        НоваяЗадача.КомментарийУчебный = "Проверить учебную покупку";
        НоваяЗадача.Сумма = 100;
        НоваяЗадача.УчебныйИсточник = "ПРИМЕР";
        Деталь = НоваяЗадача.Детали.Добавить();
        Деталь.Наименование = "Книга";
        Деталь.Количество = 2;
    КонецЦикла;
КонецПроцедуры
Серверная процедура ВыполнитьПример: действие, реально вызывающее событие
Контекст = ПодготовитьУчебныйПроцесс();
Объект = Контекст.Процесс.ПолучитьОбъект();
Объект.Сумма = 20000;
Попытка
    Объект.Записать();
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

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

  1. Процедура находится в модуле объекта УчебноеСогласование, а не в модуле формы. Подпись совпадает с установленной справкой; параметр Элемент здесь не добавляется.

  2. Дополнительный код сначала создаёт именно учебный объект и затем вызывает действие ПриЗаписи через штатный API.

  3. Условие проверяет конкретные реквизиты покупки: сумму, комментарий, подтверждение или запрет удаления. Событие ПриЗаписи ещё находится внутри транзакции.

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

  1. Для отрицательной суммы, превышения предела, пустого комментария или неподтверждённого выполнения показано предусмотренное сообщение и отмена.

  2. Копия и результат заполнения остаются в памяти до записи. ПроверитьВыполнение проверяет достаточное условие, но не заменяет выполнение задачи.

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

Показан результат для собственных подготовленных объектов учебного согласования.

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

  1. Все имена метаданных берутся из подготовки; в типовой конфигурации таких учебных объектов может не быть.

  2. Каждый блок вставляется в указанный модуль отдельно. Не вызывайте процедуру события вручную вместо реального действия платформы.

  3. Запись и старт относятся только к новым учебным объектам. Пример не выполняет обработку реальных согласований и не гарантирует правильность чужого маршрута.

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

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

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

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

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