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

Типы · <Business process name>

Предназначен для чтения, изменения, добавления и удаления бизнес-процессов. Важно! У всех событий этого объекта назначены предопределенные процедуры-обработчики. Имена процедур соответствуют именам событий. Процедуры должны располагаться в модуле бизнес-процесса.

Полное описание, параметры и ограничения

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

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

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

Свойства:
<Имя общего реквизита> (<Common attribute name>)
<Имя реквизита> (<Attribute name>)
<Имя табличной части> (<Tabular section name>)
ВедущаяЗадача (HeadTask)
ВерсияДанных (DataVersion)
Дата (Date)
ДополнительныеСвойства (AdditionalProperties)
Завершен (Completed)
ЗаписьИсторииДанных (WriteDataHistory)
Номер (Number)
ОбменДанными (DataExchange)
ПометкаУдаления (DeletionMark)
Ссылка (Ref)
Стартован (Started)
ЭтотОбъект (ThisObject)

Методы:
АктивироватьИнтерактивно (ActivateInteractively)
Заблокирован (IsLocked)
Заблокировать (Lock)
Записать (Write)
Заполнить (Fill)
Метаданные (Metadata)
Модифицированность (Modified)
ПолучитьКартуМаршрута (GetFlowchart)
ПолучитьМакет (GetTemplate)
ПолучитьСсылкуНового (GetNewObjectRef)
ПолучитьФорму (GetForm)
ПроверитьЗаполнение (CheckFilling)
Прочитать (Read)
Разблокировать (Unlock)
Скопировать (Copy)
Старт (Start)
Удалить (Delete)
УстановитьВремя (SetTime)
УстановитьКомментарийВерсииИсторииДанных (SetDataHistoryVersionComment)
УстановитьНовыйНомер (SetNewNumber)
УстановитьПометкуУдаления (SetDeletionMark)
УстановитьСсылкуНового (SetNewObjectRef)
ЭтоНовый (IsNew)

События:
ОбработкаЗаполнения (Filling)
ОбработкаИнтерактивнойАктивации (InteractiveActivationProcessing)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
ОбработкаФормированияПоВерсииИсторииДанных (GenerateFromDataHistoryVersionProcessing)
ПередЗаписью (BeforeWrite)
ПередУдалением (BeforeDelete)
ПриЗаписи (OnWrite)
ПриКопировании (OnCopy)
ПриУстановкеНовогоНомера (OnSetNewNumber)

Описание:

Предназначен для чтения, изменения, добавления и удаления бизнес-процессов.
Важно! У всех событий этого объекта назначены предопределенные процедуры-обработчики. Имена процедур соответствуют именам событий. Процедуры должны располагаться в модуле бизнес-процесса.

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

Сервер, толстый клиент, внешнее соединение.
Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: BusinessProcessObject.<Имя бизнес-процесса>.

См. также:
БизнесПроцессСсылка.<Имя бизнес-процесса>
БизнесПроцессВыборка.<Имя бизнес-процесса>

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

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

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

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

Проверить связи от обоих вариантов к разделению

Проверяем именно соединительные линии: два разных варианта должны вести к собственной точке ПодготовитьПараллельно.

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

Серверный фрагмент для отдельной Учебная85. Не модуль рабочей КА2/УНФ/УТ/БП; маршрут не запускается.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. Только в отдельной пустой Учебная85 создайте задачу УчебнаяЗадача с номером Строка 9, автонумерацией и наименованием Строка 100. Создайте бизнес-процесс УчебныйСложныйПроцесс, номер Строка 9, автонумерация; его свойство Задача — УчебнаяЗадача.

  7. В редакторе карты создайте Старт → условие ПроверитьКоличество. Выход Да соедините с выбором варианта СпособПолучения, выход Нет — с завершением Финиш. У выбора создайте ровно два варианта Самовывоз и Доставка; оба соедините с разделением ПодготовитьПараллельно.

  8. После разделения нарисуйте две параллельные точки действия ПодготовитьКнигу и СогласоватьАдрес. Обе соедините со слиянием ДождатьсяПодготовки. После него: обработка ПересчитатьИтоги → вложенный бизнес-процесс ВыполнитьВложенный → завершение Финиш.

  9. Расположите точки без перекрытия, дайте всем читаемые исходные подписи. Модули процесса/задачи и обработчики точек оставьте пустыми, обновите конфигурацию базы данных. Это учебный чертёж для исследования API, не готовый исполняемый процесс: условия, варианты, адресация и создание вложенного процесса не реализованы.

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

Если Метаданные.БизнесПроцессы.Найти("УчебныйСложныйПроцесс") = Неопределено
    Или Метаданные.Задачи.Найти("УчебнаяЗадача") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный сложный маршрут и задачу";
КонецЕсли;
Процесс = БизнесПроцессы.УчебныйСложныйПроцесс.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Тогда
    ВызватьИсключение "Не получена собственная карта";
КонецЕсли;
Выбор = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.СпособПолучения);
Если Выбор = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка СпособПолучения";
КонецЕсли;
Если ТипЗнч(Выбор) <> Тип("ЭлементГрафическойСхемыВыборВарианта") Тогда
    ВызватьИсключение "У точки СпособПолучения другой тип";
КонецЕсли;
Разделение = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПодготовитьПараллельно);
Если Разделение = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка ПодготовитьПараллельно";
КонецЕсли;
Если ТипЗнч(Разделение) <> Тип("ЭлементГрафическойСхемыРазделение") Тогда
    ВызватьИсключение "У точки ПодготовитьПараллельно другой тип";
КонецЕсли;
Варианты = Выбор.Элементы;
Если Варианты.Количество() <> 2 Тогда
    ВызватьИсключение "Ожидались два собственных варианта";
КонецЕсли;
Первый = Варианты.Получить(0);
Второй = Варианты.Получить(1);
НайденныеВарианты = Новый Массив;
Для Каждого Кандидат Из Схема.ЭлементыГрафическойСхемы Цикл
    Если ТипЗнч(Кандидат) <> Тип("ЭлементГрафическойСхемыСоединительнаяЛиния") Тогда
        Продолжить;
    КонецЕсли;
    Если Кандидат.НачалоЭлемент = Неопределено Или Кандидат.КонецЭлемент = Неопределено Тогда
        Продолжить;
    КонецЕсли;
    Если ТипЗнч(Кандидат.НачалоЭлемент) <> Тип("ЭлементГрафическойСхемыВыборВарианта")
        Или ТипЗнч(Кандидат.КонецЭлемент) <> Тип("ЭлементГрафическойСхемыРазделение") Тогда
        Продолжить;
    КонецЕсли;
    Если Кандидат.НачалоЭлемент.Значение <> БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.СпособПолучения
        Или Кандидат.КонецЭлемент.Значение <> БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПодготовитьПараллельно Тогда
        Продолжить;
    КонецЕсли;
    Если Кандидат.НачалоВариант = Неопределено Тогда
        ВызватьИсключение "У исходящей линии не указан вариант выбора";
    КонецЕсли;
    ЗначениеВарианта = Кандидат.НачалоВариант.Значение;
    Если НайденныеВарианты.Найти(ЗначениеВарианта) <> Неопределено Тогда
        ВызватьИсключение "Один вариант подключён к разделению повторно";
    КонецЕсли;
    НайденныеВарианты.Добавить(ЗначениеВарианта);
КонецЦикла;
Сообщить(НайденныеВарианты.Количество() = 2);
Сообщить(НайденныеВарианты.Найти(Первый.Значение) <> Неопределено);
Сообщить(НайденныеВарианты.Найти(Второй.Значение) <> Неопределено);
Сообщить(Разделение.Значение = БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.ПодготовитьПараллельно);

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

  1. Две ключевые точки найдены заранее, проверены их типы.

  2. Перебираем только соединительные линии. Декоративная линия не означает переход маршрута.

  3. Наличие и типы обоих концов проверяются до чтения Значение. Подписи линий для поиска не используются.

  4. НачалоВариант — графический вариант исходящей линии; через его Значение получаем связанный вариант маршрута.

  5. Контролируем два разных варианта, а не просто две линии: повторное подключение того же варианта вызывает объяснимую ошибку.

  6. Даже корректный чертёж не реализует обработчики и не доказывает работу исполняемого процесса.

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

  1. Для правильно нарисованной собственной карты четыре сообщения Истина.

  2. Если удалить одну стрелку в учебном редакторе, проверка количества станет Ложь; если подключить один вариант дважды, появится отдельное исключение.

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

Два выхода выбора проверены по реальным связям и идентификаторам вариантов, без запуска процесса.

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

  1. Проверка касается участка СпособПолучения → ПодготовитьПараллельно, не всей карты.

  2. Линия с похожей подписью, но другими концами, не засчитывается.

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

Разобрать два реальных варианта выбора

Коллекция вариантов принадлежит точке СпособПолучения. Меняем подписи в памяти и проверяем неизменность связанных вариантов маршрута.

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

Серверный фрагмент для отдельной Учебная85. Не модуль рабочей КА2/УНФ/УТ/БП; маршрут не запускается.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. Только в отдельной пустой Учебная85 создайте задачу УчебнаяЗадача с номером Строка 9, автонумерацией и наименованием Строка 100. Создайте бизнес-процесс УчебныйСложныйПроцесс, номер Строка 9, автонумерация; его свойство Задача — УчебнаяЗадача.

  7. В редакторе карты создайте Старт → условие ПроверитьКоличество. Выход Да соедините с выбором варианта СпособПолучения, выход Нет — с завершением Финиш. У выбора создайте ровно два варианта Самовывоз и Доставка; оба соедините с разделением ПодготовитьПараллельно.

  8. После разделения нарисуйте две параллельные точки действия ПодготовитьКнигу и СогласоватьАдрес. Обе соедините со слиянием ДождатьсяПодготовки. После него: обработка ПересчитатьИтоги → вложенный бизнес-процесс ВыполнитьВложенный → завершение Финиш.

  9. Расположите точки без перекрытия, дайте всем читаемые исходные подписи. Модули процесса/задачи и обработчики точек оставьте пустыми, обновите конфигурацию базы данных. Это учебный чертёж для исследования API, не готовый исполняемый процесс: условия, варианты, адресация и создание вложенного процесса не реализованы.

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

Если Метаданные.БизнесПроцессы.Найти("УчебныйСложныйПроцесс") = Неопределено
    Или Метаданные.Задачи.Найти("УчебнаяЗадача") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный сложный маршрут и задачу";
КонецЕсли;
Процесс = БизнесПроцессы.УчебныйСложныйПроцесс.СоздатьБизнесПроцесс();
Схема = Процесс.ПолучитьКартуМаршрута();
Если ТипЗнч(Схема) <> Тип("ГрафическаяСхема") Тогда
    ВызватьИсключение "Не получена собственная карта";
КонецЕсли;
Выбор = Схема.ЭлементыГрафическойСхемы.Найти(БизнесПроцессы.УчебныйСложныйПроцесс.ТочкиМаршрута.СпособПолучения);
Если Выбор = Неопределено Тогда
    ВызватьИсключение "Отсутствует собственная точка СпособПолучения";
КонецЕсли;
Если ТипЗнч(Выбор) <> Тип("ЭлементГрафическойСхемыВыборВарианта") Тогда
    ВызватьИсключение "У точки СпособПолучения другой тип";
КонецЕсли;
Варианты = Выбор.Элементы;
Если Варианты.Количество() <> 2 Тогда
    ВызватьИсключение "Создайте ровно два варианта Самовывоз и Доставка";
КонецЕсли;
Первый = Варианты.Получить(0);
Второй = Варианты.Получить(1);
ИсходноеЗначениеПервого = Первый.Значение;
ИсходноеЗначениеВторого = Второй.Значение;
ИсходнаяПодписьПервого = Первый.Наименование;
ИсходнаяПодписьВторого = Второй.Наименование;
Первый.Наименование = "Учебный вариант: " + ИсходнаяПодписьПервого;
Второй.Наименование = "Учебный вариант: " + ИсходнаяПодписьВторого;
Первый.ЦветФона = Новый Цвет(235, 244, 255);
Второй.ЦветФона = Новый Цвет(245, 250, 235);
Сообщить(Первый.Значение = ИсходноеЗначениеПервого);
Сообщить(Второй.Значение = ИсходноеЗначениеВторого);
Сообщить(Первый.Значение <> Второй.Значение);
Сообщить(Первый.Наименование = "Учебный вариант: " + ИсходнаяПодписьПервого);
Сообщить(Второй.Наименование = "Учебный вариант: " + ИсходнаяПодписьВторого);
Сообщить(Первый.ЦветФона = Новый Цвет(235, 244, 255));
Сообщить(Второй.ЦветФона = Новый Цвет(245, 250, 235));

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

  1. Выбор найден по ссылке собственной точки и проверен по типу.

  2. Элементы — readonly-ссылка на коллекцию вариантов. Количество проверяется до Получить(0) и Получить(1).

  3. Позиция 0 сама по себе не означает Самовывоз: сохраняем настоящие исходные подписи обоих вариантов.

  4. Значение варианта только читается; Наименование и ЦветФона изменяются на собственной карте в памяти.

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

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

  1. Семь сообщений Истина при двух различных вариантах собственной карты.

  2. Исходные подписи метаданных не переименовываются, процесс остаётся незапущенным.

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

Разделены коллекция графических вариантов, их подписи и связанные значения маршрута.

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

  1. Получить(0) не является поиском варианта по бизнес-смыслу.

  2. Цвет варианта не выбирает его для выполнения.

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

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

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

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

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