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

События · Filling

Возникает при вводе бизнес-процесса на основании, при выполнении метода Заполнить, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов бизнес-процесса на основании переданного значения.

Синтаксис

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

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

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

ОбработкаЗаполнения (Filling)

Доступен, начиная с версии 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. Показанный ОбработкаЗаполнения принимает именно структуру КомментарийУчебный,Сумма из дополнительного блока; это не универсальный алгоритм ввода на основании любого документа.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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