Бизнес-процесс 1С: карта маршрута, задачи и запуск из кода

Дата: 14.10.2026 15:18:46
Программирование 1С
Бизнес-процессы
БСП
Конфигуратор
Примеры кода
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Бизнес-процесс 1С — объект конфигурации, который ведёт работу по маршруту: руководитель согласовал заявку — она уходит в бухгалтерию, отклонил — возвращается автору. Каждый шаг с участием человека платформа превращает в задачу и после её выполнения сама двигает процесс дальше. Разберём карту маршрута и её точки, адресацию задач, обработчики модуля, старт и выполнение из кода на примере согласования заявки, а в конце — когда хватает БСП и когда нужен 1С:Документооборот.

В 1С:Предприятии бизнес-процесс и задача — объекты платформы, механика одинакова в любой конфигурации; имена типовых объектов сверены по УТ 11.4 и КА 2.5.

Где встречаются бизнес-процессы и задачи в 1С

Типичные сценарии — согласование заявок на оплату, заказов, цен и скидок, поручения сотрудникам с контролем срока. В УТ 11.4 шесть бизнес-процессов: Задание из БСП, СогласованиеПродажи, СогласованиеЗакупки, СогласованиеЦенНоменклатуры, СогласованиеЗаявкиНаВозвратТоваровОтКлиента, ТиповаяПродажа — и одна задача ЗадачаИсполнителя. В КА 2.5 процессов 18, включая заявки сотрудников вроде ЗаявкаСотрудникаОтпуск. В УТ 11.4 механизм включают в разделе «НСИ и администрирование» → «Органайзер», флажок «Бизнес-процессы и задачи».

Программисту обычно достаётся свой маршрут согласования, запуск процесса из документа или по расписанию и выполнение задач без формы — из обработки или HTTP-сервиса.

Бизнес-процесс 1С и задача: как связаны объекты

Задача — поручение: номер, наименование, отметка Выполнена, ссылки БизнесПроцесс и ТочкаМаршрута, свои реквизиты и реквизиты адресации. Бизнес-процесс в свойстве «Задача» ссылается на одну задачу, хранит реквизиты процесса и карту маршрута. Флаг Стартован ставит метод Старт(), Завершен — платформа, когда процесс дошёл до точки завершения без невыполненных задач.

Кому достанется задача, задают свойства задачи:

СвойствоЧто задаётУТ 11.4, ЗадачаИсполнителя
Адресациярегистр сведений, где исполнители сопоставлены ролям и объектам адресацииИсполнителиЗадач
Реквизиты адресациикому адресована задача; у каждого — измерение адресации в этом регистреИсполнитель, РольИсполнителя, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации
Основной реквизит адресацииконкретный исполнительИсполнитель
Текущий исполнительпараметр сеанса для отбора «моих» задачАвторизованныйПользователь

Задачу адресуют человеку (заполнен основной реквизит) или роли — тогда её видит каждый, кому роль назначена в регистре адресации, обычном независимом регистре сведений. В УТ 11.4 его заполняют через «Роли и исполнители задач» в «Органайзере».

Карта маршрута: точки и события

Карта маршрута бизнес-процесса в 1С — это и есть его схема: точки, соединённые линиями. Рисуют её в конфигураторе в окне редактирования бизнес-процесса, обработчики событий точек лежат в модуле объекта процесса. Обработчик создаётся из палитры свойств точки, имя — имя точки плюс событие: в УТ 11.4 это СтартПередСтартом, НужнаПроверкаПроверкаУсловия. Точки бизнес-процесса и их события:

ТочкаНазначениеСобытия
Стартначало маршрута; если точек старта несколько, нужную передают в Старт()ПередСтартом(Точка, Отказ)
Действиесоздаёт задачи и ждёт их выполненияПередСозданиемЗадач, ПриСозданииЗадач, ПередВыполнением, ПриВыполнении, ОбработкаПроверкиВыполнения
Условиеразвилка на две веткиПроверкаУсловия(Точка, Результат)
Выбор вариантаразвилка на любое число ветокОбработкаВыбораВарианта(Точка, Результат)
Разделение, Слияниезапуск параллельных веток и ожидание всех ветоксобытий нет
Обработкаавтоматическое действие без задачиОбработка(Точка)
Вложенный бизнес-процессзапускает дочерние процессы и ждёт их завершенияПередСозданиемВложенныхБизнесПроцессов, ПриСозданииВложенныхБизнесПроцессов
Завершениеконец маршрутаПриЗавершении(Точка, Отказ)

Обработчики создания задач, условий и завершения неинтерактивные: окна в них не открывают, сообщить пользователю можно. Постоянного исполнителя, например роль «Бухгалтерия», задают в реквизитах адресации точки, исполнителя из реквизитов процесса — кодом в ПриСозданииЗадач.

Пример: согласование заявки

Пример собран в своей конфигурации, имена — свои, не типовые. Маршрут: Старт → «Согласовать» (задача согласующему) → Условие «Согласовано» → да: Обработка «ОтметитьСогласование» → «Исполнить» (задача роли «Бухгалтерия») → Завершение; нет: «Доработать» (задача инициатору) → снова «Согласовать».

ОбъектЧто настроить
Документ ЗаявкаНаОплатуреквизиты Сумма, Согласована (Булево)
Справочник РолиСогласованияпредопределённый элемент Бухгалтерия
Регистр сведений АдресацияСогласованияизмерения Роль и Исполнитель
Задача ЗадачаСогласованияадресация через АдресацияСогласования, реквизиты адресации Исполнитель (основной) и Роль, текущий исполнитель — параметр сеанса ТекущийПользователь; реквизиты Решение (Булево), Комментарий (Строка)
Бизнес-процесс СогласованиеЗаявкизадача ЗадачаСогласования; реквизиты Заявка, Инициатор, Согласующий, Согласовано, КомментарийСогласующего, Круг (Число), ДатаЗавершения

Параметр сеанса ТекущийПользователь заполняют при входе в модуле сеанса (в конфигурациях на БСП он уже есть). Модуль объекта процесса:

// Модуль объекта бизнес-процесса СогласованиеЗаявки.
// Обработчик создаётся из палитры свойств точки, имя: <Точка><Событие>.
// Реквизиты процесса пишу через ЭтотОбъект, чтобы не путать их с переменными.

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура СтартПередСтартом(ТочкаМаршрутаБизнесПроцесса, Отказ)

	// Без заявки и согласующего процесс не запускаем.
	Если Не ЗначениеЗаполнено(ЭтотОбъект.Заявка) Или Не ЗначениеЗаполнено(ЭтотОбъект.Согласующий) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НСтр("ru = 'Не указаны заявка или согласующий.'");
		Сообщение.Сообщить();
		Отказ = Истина;
	КонецЕсли;

КонецПроцедуры

Процедура СогласоватьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

	// Круг растёт при каждом возврате заявки с доработки.
	ЭтотОбъект.Круг = ЭтотОбъект.Круг + 1;
	ЭтотОбъект.Записать();

	Для Каждого Задача Из ФормируемыеЗадачи Цикл
		// Адресация конкретному пользователю: основной реквизит адресации.
		Задача.Исполнитель = ЭтотОбъект.Согласующий;
		Задача.Наименование = СтрШаблон(НСтр("ru = 'Согласовать %1 (круг %2)'"),
			ЭтотОбъект.Заявка, ЭтотОбъект.Круг);
	КонецЦикла;

КонецПроцедуры

Процедура СогласоватьПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)

	// Задача приходит ссылкой и к этому моменту уже записана выполненной.
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Задачи.Решение КАК Решение,
	|	Задачи.Комментарий КАК Комментарий
	|ИЗ
	|	Задача.ЗадачаСогласования КАК Задачи
	|ГДЕ
	|	Задачи.Ссылка = &Задача";
	Запрос.УстановитьПараметр("Задача", Задача);
	Выборка = Запрос.Выполнить().Выбрать();

	// Сбрасываем решение прошлого круга.
	ЭтотОбъект.Согласовано = Ложь;
	ЭтотОбъект.КомментарийСогласующего = "";
	Если Выборка.Следующий() Тогда
		ЭтотОбъект.Согласовано = Выборка.Решение;
		ЭтотОбъект.КомментарийСогласующего = Выборка.Комментарий;
	КонецЕсли;
	ЭтотОбъект.Записать();

КонецПроцедуры

Процедура СогласованоПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)

	// Истина - ветка к исполнению, Ложь - возврат инициатору на доработку.
	Результат = ЭтотОбъект.Согласовано;

КонецПроцедуры

Процедура ОтметитьСогласованиеОбработка(ТочкаМаршрутаБизнесПроцесса)

	// Автоматический шаг без задачи: отмечаем саму заявку.
	НачатьТранзакцию();
	Попытка
		Блокировка = Новый БлокировкаДанных;
		ЭлементБлокировки = Блокировка.Добавить("Документ.ЗаявкаНаОплату");
		ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭтотОбъект.Заявка);
		Блокировка.Заблокировать();

		ЗаявкаОбъект = ЭтотОбъект.Заявка.ПолучитьОбъект();
		ЗаявкаОбъект.Согласована = Истина;
		ЗаявкаОбъект.Записать();
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;

КонецПроцедуры

Процедура ИсполнитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

	// Адресация роли: исполнителя не заполняем, задачу увидит каждый,
	// у кого в регистре адресации есть роль Бухгалтерия.
	// Постоянную роль можно указать и в реквизитах адресации точки на карте.
	Для Каждого Задача Из ФормируемыеЗадачи Цикл
		Задача.Роль = Справочники.РолиСогласования.Бухгалтерия;
		Задача.Наименование = СтрШаблон(НСтр("ru = 'Оплатить %1'"), ЭтотОбъект.Заявка);
	КонецЦикла;

КонецПроцедуры

Процедура ДоработатьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

	// Возврат инициатору вместе с комментарием согласующего.
	Для Каждого Задача Из ФормируемыеЗадачи Цикл
		Задача.Исполнитель = ЭтотОбъект.Инициатор;
		Задача.Наименование = СтрШаблон(НСтр("ru = 'Доработать %1'"), ЭтотОбъект.Заявка);
		Задача.Комментарий = ЭтотОбъект.КомментарийСогласующего;
	КонецЦикла;

КонецПроцедуры

Процедура ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)

	ЭтотОбъект.ДатаЗавершения = ТекущаяДатаСеанса();
	ЭтотОбъект.Записать();

КонецПроцедуры

#КонецЕсли

Разбор ключевых строк

  • ФормируемыеЗадачи — массив ещё не записанных задач: заполняем адресацию и наименование, записывает их платформа после обработчика.
  • В ПриВыполнении параметр Задача — ссылка. Решение читаем запросом: задача уже записана с отметкой выполнения, так же читает результат Задание в БСП. Если задач в точке несколько, обработчик сработает на последней.
  • Реквизиты процесса после изменения записываем явно, как Задание в БСП.
  • Истина в ПроверкаУсловия ведёт по ветке, отмеченной на карте как истинная (по умолчанию правая).
  • «Обработка» меняет документ под управляемой блокировкой в своей транзакции; вложенный НачатьТранзакцию() допустим, даже если транзакция уже открыта.

Проверку «отклонил — укажи причину» держим в модуле задачи: её событие ПередВыполнением вызывается раньше одноимённого события точки, и в нём доступен сам объект с незаписанными значениями:

// Модуль объекта задачи ЗадачаСогласования.

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура ПередВыполнением(Отказ)

	// Проверяем только точку Согласовать: отклонить без причины нельзя.
	Если ЭтотОбъект.ТочкаМаршрута <> БизнесПроцессы.СогласованиеЗаявки.ТочкиМаршрута.Согласовать Тогда
		Возврат;
	КонецЕсли;

	Если Не ЭтотОбъект.Решение И ПустаяСтрока(ЭтотОбъект.Комментарий) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НСтр("ru = 'Укажите в комментарии, что исправить в заявке.'");
		Сообщение.Поле = "Комментарий";
		Сообщение.УстановитьДанные(ЭтотОбъект);
		Сообщение.Сообщить();
		Отказ = Истина;
	КонецЕсли;

КонецПроцедуры

#КонецЕсли

Старт и выполнение задач программно

Чтобы работать с бизнес-процессами 1С программно, хватает трёх методов. СоздатьБизнесПроцесс() менеджера создаёт объект. Старт() ведёт процесс по карте до первой точки «Действие» или вложенного процесса, создаёт задачи и возвращает управление; без таких точек процесс пройдёт маршрут целиком и сразу завершится. ВыполнитьЗадачу() отмечает задачу выполненной, записывает её и продвигает процесс. Общий модуль с флажком «Сервер»:

// Общий модуль СогласованиеЗаявок (флажок «Сервер»).

// Создаёт и запускает согласование заявки, возвращает ссылку на процесс.
Функция ЗапуститьСогласование(Заявка, Согласующий, Инициатор) Экспорт

	НачатьТранзакцию();
	Попытка
		// Блокируем заявку: два одновременных запуска не создадут два процесса.
		Блокировка = Новый БлокировкаДанных;
		ЭлементБлокировки = Блокировка.Добавить("Документ.ЗаявкаНаОплату");
		ЭлементБлокировки.УстановитьЗначение("Ссылка", Заявка);
		Блокировка.Заблокировать();

		Если ЕстьАктивноеСогласование(Заявка) Тогда
			ВызватьИсключение СтрШаблон(НСтр("ru = 'По заявке %1 согласование уже идёт.'"), Заявка);
		КонецЕсли;

		Процесс = БизнесПроцессы.СогласованиеЗаявки.СоздатьБизнесПроцесс();
		Процесс.Дата = ТекущаяДатаСеанса();
		Процесс.Заявка = Заявка;
		Процесс.Согласующий = Согласующий;
		Процесс.Инициатор = Инициатор;
		Процесс.Записать();

		// Старт ведёт процесс по карте до первой точки Действие: там появится задача.
		Процесс.Старт();
		Если Не Процесс.Стартован Тогда
			ВызватьИсключение НСтр("ru = 'Процесс не стартовал, см. сообщения.'");
		КонецЕсли;
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;

	Возврат Процесс.Ссылка;

КонецФункции

// Есть ли по заявке запущенный и ещё не завершённый процесс.
Функция ЕстьАктивноеСогласование(Заявка) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	Процессы.Ссылка КАК Ссылка
	|ИЗ
	|	БизнесПроцесс.СогласованиеЗаявки КАК Процессы
	|ГДЕ
	|	Процессы.Заявка = &Заявка
	|	И Процессы.Стартован
	|	И НЕ Процессы.Завершен
	|	И НЕ Процессы.ПометкаУдаления";
	Запрос.УстановитьПараметр("Заявка", Заявка);

	Возврат Не Запрос.Выполнить().Пустой();

КонецФункции

// Выполняет задачу без формы: из обработки, HTTP-сервиса, мобильного приложения.
Процедура ВыполнитьЗадачуСогласования(ЗадачаСсылка, Согласовано, Комментарий = "") Экспорт

	ЗадачаОбъект = ЗадачаСсылка.ПолучитьОбъект();
	Если ЗадачаОбъект.Выполнена Тогда
		ВызватьИсключение СтрШаблон(НСтр("ru = 'Задача %1 уже выполнена.'"), ЗадачаСсылка);
	КонецЕсли;

	// Если задачу сейчас редактируют в форме, здесь будет исключение.
	ЗадачаОбъект.Заблокировать();
	ЗадачаОбъект.Решение = Согласовано;
	ЗадачаОбъект.Комментарий = Комментарий;

	// Ставит Выполнена, записывает задачу и двигает процесс дальше по карте.
	ЗадачаОбъект.ВыполнитьЗадачу();

КонецПроцедуры

Проверка Стартован страхует от отказа в ПередСтартом: запись и старт в одной транзакции, незапущенный процесс не останется. Заблокировать() — объектная блокировка: если задачу правят в форме, будет исключение, а не конфликт записи.

Кнопки «Согласовать» и «Отклонить» в форме задачи

Метод Записать() формы задачи принимает предопределённый параметр записи ВыполнитьЗадачу: с ним задача выполняется при записи. Его же передают стандартные команды «Выполнить» и «Выполнить и закрыть» — в точке согласования их лучше скрыть, чтобы решение принимали кнопками.

// Модуль формы задачи ЗадачаСогласования.
// Согласовать и Отклонить - команды формы, их кнопки: ФормаСогласовать, ФормаОтклонить.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Кнопки решения - только в точке Согласовать и только у невыполненной задачи.
	ПоказатьКнопки = Не Объект.Выполнена
		И (Объект.ТочкаМаршрута = БизнесПроцессы.СогласованиеЗаявки.ТочкиМаршрута.Согласовать);
	Элементы.ФормаСогласовать.Видимость = ПоказатьКнопки;
	Элементы.ФормаОтклонить.Видимость = ПоказатьКнопки;

КонецПроцедуры

&НаКлиенте
Процедура Согласовать(Команда)

	ВыполнитьСРешением(Истина);

КонецПроцедуры

&НаКлиенте
Процедура Отклонить(Команда)

	ВыполнитьСРешением(Ложь);

КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьСРешением(Решение)

	Объект.Решение = Решение;

	// Предопределённый параметр записи формы задачи: задача выполнится при записи.
	// Форму закрываем, только если запись и выполнение прошли.
	Если ЭтотОбъект.Записать(Новый Структура("ВыполнитьЗадачу", Истина)) Тогда
		Закрыть();
	КонецЕсли;

КонецПроцедуры

Список задач пользователя запросом

У задачи есть виртуальная таблица ЗадачиПоИсполнителю(Исполнитель, Условие): она отдаёт задачи, адресованные пользователю напрямую и через роли из регистра адресации. Без параметра берётся значение параметра сеанса из свойства «Текущий исполнитель» — на этом построен список «Мои задачи» в БСП.

// Невыполненные задачи исполнителя по заявкам: для своего списка, отчёта или бота.
Функция ЗадачиИсполнителя(Исполнитель) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Задачи.Ссылка КАК Задача,
	|	Задачи.Дата КАК Дата,
	|	Задачи.Наименование КАК Наименование,
	|	Задачи.ТочкаМаршрута КАК Шаг,
	|	Процессы.Заявка КАК Заявка,
	|	Процессы.Круг КАК Круг
	|ИЗ
	|	Задача.ЗадачаСогласования.ЗадачиПоИсполнителю(&Исполнитель) КАК Задачи
	|		ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.СогласованиеЗаявки КАК Процессы
	|		ПО Задачи.БизнесПроцесс = Процессы.Ссылка
	|ГДЕ
	|	НЕ Задачи.Выполнена
	|	И НЕ Задачи.ПометкаУдаления
	|УПОРЯДОЧИТЬ ПО
	|	Дата";
	Запрос.УстановитьПараметр("Исполнитель", Исполнитель);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

// Где сейчас заявка: процессы по ней и их невыполненные задачи.
Функция ХодСогласования(Заявка) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Процессы.Ссылка КАК Процесс,
	|	Процессы.Круг КАК Круг,
	|	Процессы.Завершен КАК Завершен,
	|	Задачи.ТочкаМаршрута КАК Шаг,
	|	Задачи.Исполнитель КАК Исполнитель,
	|	Задачи.Роль КАК Роль
	|ИЗ
	|	БизнесПроцесс.СогласованиеЗаявки КАК Процессы
	|		ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачаСогласования КАК Задачи
	|		ПО (Задачи.БизнесПроцесс = Процессы.Ссылка)
	|			И (НЕ Задачи.Выполнена)
	|			И (НЕ Задачи.ПометкаУдаления)
	|ГДЕ
	|	Процессы.Заявка = &Заявка
	|	И НЕ Процессы.ПометкаУдаления
	|УПОРЯДОЧИТЬ ПО
	|	Процессы.Дата УБЫВ";
	Запрос.УстановитьПараметр("Заявка", Заявка);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Запросы удобно отлаживать в бесплатной консоли запросов; в типовой подставьте Задача.ЗадачаИсполнителя и реквизит РольИсполнителя.

Готовое: подсистема БСП и 1С:Документооборот

В типовых на БСП — УТ 11, КА 2, ERP — свой процесс с нуля нужен редко. Подсистема «Бизнес-процессы и задачи» (см. статью про БСП) уже содержит процесс Задание — поручение с необязательной проверкой, задачу ЗадачаИсполнителя с адресацией на пользователя или роль (справочник РолиИсполнителей, регистр ИсполнителиЗадач), «Мои задачи», перенаправление, отложенный старт и уведомления о новых и просроченных задачах. Поручение из кода в УТ 11.4 или КА 2.5:

// УТ 11, КА 2 и другие конфигурации на БСП: поручение через типовой процесс Задание.
// Исполнитель - пользователь или роль (РолиИсполнителей).
// Предмет - ссылка из определяемого типа ПредметЗадачи: документ, контрагент и т. п.
Функция ПоручитьЗадание(Исполнитель, Тема, Текст, Срок, Предмет = Неопределено) Экспорт

	Задание = БизнесПроцессы.Задание.СоздатьБизнесПроцесс();
	Задание.Заполнить(Неопределено); // автор и проверяющий - текущий пользователь
	Задание.Дата = ТекущаяДатаСеанса();
	Задание.Исполнитель = Исполнитель;
	Задание.Наименование = Тема;
	Задание.Содержание = Текст;
	Задание.СрокИсполнения = Срок;
	Задание.Важность = Перечисления.ВариантыВажностиЗадачи.Обычная;
	Задание.НаПроверке = Ложь; // Истина - после выполнения задача уйдёт проверяющему
	Если Предмет <> Неопределено Тогда
		Задание.Предмет = Предмет;
	КонецЕсли;
	Задание.Записать();
	Задание.Старт();

	Возврат Задание.Ссылка;

КонецФункции

// Невыполненные задачи пользователя по всем процессам на БСП.
Функция НевыполненныеЗадачи(Пользователь) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Задачи.Ссылка КАК Задача,
	|	Задачи.Наименование КАК Наименование,
	|	Задачи.СрокИсполнения КАК Срок,
	|	Задачи.Предмет КАК Предмет,
	|	Задачи.БизнесПроцесс КАК БизнесПроцесс
	|ИЗ
	|	Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю(&Исполнитель) КАК Задачи
	|ГДЕ
	|	НЕ Задачи.Выполнена
	|	И НЕ Задачи.ПометкаУдаления
	|	И Задачи.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
	|УПОРЯДОЧИТЬ ПО
	|	Срок";
	Запрос.УстановитьПараметр("Исполнитель", Пользователь);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Свой маршрут в такой конфигурации стройте на типовой задаче, как все процессы УТ 11.4: укажите ЗадачаИсполнителя в свойстве «Задача», а при создании задач заполняйте Исполнитель или РольИсполнителя. Процесс добавьте и в определяемые типы БизнесПроцесс и БизнесПроцессОбъект, где в УТ 11.4 перечислены все шесть.

1С:Документооборот берут, когда маршрутов десятки, их меняют сами пользователи без конфигуратора, а к согласованию прикладывают файлы с версиями; с УТ 11.4 и КА 2.5 он связывается через подсистему «Интеграция с 1С:Документооборотом». Напоминания о просроченных задачах в своей конфигурации — это регламентное задание с запросом по задачам и отправкой почты.

Типичные ошибки

  • Задача не видна исполнителю. Она адресована роли, а в регистре адресации нет записи «роль — пользователь». Или в своей конфигурации не заполнен параметр сеанса из свойства «Текущий исполнитель», а запрос вызывает ЗадачиПоИсполнителю() без параметра.
  • Процесс стоит после «выполнения» задачи. Задаче поставили Выполнена = Истина и вызвали Записать(). Отметка есть, но по маршруту двигает только ВыполнитьЗадачу() или запись формы с параметром ВыполнитьЗадачу.
  • «Нарушение прав доступа!» при выполнении задачи. Нет права «Выполнение» на задачу, «Старт» на процесс или прав на то, что пишут обработчики. Создание задач покрывает свойство процесса ПривилегированныйРежимПриСозданииЗадач (в Задание включено), остальное — роли или УстановитьПривилегированныйРежим(Истина); подробнее — в статье о правах доступа.
  • Процесс пошёл не по той ветке. Истина из ПроверкаУсловия ведёт по ветке, отмеченной на карте, а не по «верхней» — после перерисовки карты проверьте, какая ветка истинная.
  • Процесс не стартует. Точек старта несколько, а Старт() вызван без параметра — платформа выдаст ошибку; передайте точку: Процесс.Старт(БизнесПроцессы.СогласованиеЗаявки.ТочкиМаршрута.Старт). На «Выборе варианта» обязателен обработчик ОбработкаВыбораВарианта.

Частые вопросы

Как запустить бизнес-процесс при записи документа?

Вызовите ЗапуститьСогласование из ПриЗаписи модуля документа или из подписки на событие, пропустив ОбменДанными.Загрузка и заявки, по которым процесс уже идёт. Старт попадёт в транзакцию записи документа: не стартовал процесс — не запишется и документ. Если такая связка не нужна, запускайте командой формы после записи.

Чем «Условие» отличается от «Выбора варианта»?

У условия две ветки и булев результат. У выбора варианта веток сколько угодно, а обработчик возвращает вариант по имени: Результат = ТочкаВыбораВарианта.Варианты.Директор;. Так удобно разводить заявки по сумме.

Как согласовать заявку параллельно с несколькими людьми?

Либо «Разделение» → по «Действию» на каждого согласующего → «Слияние»: процесс пойдёт дальше, когда закончатся все ветки. Либо одна точка «Действие»: в ПередСозданиемЗадач ставите СтандартнаяОбработка = Ложь и сами добавляете в ФормируемыеЗадачи задачи из Задачи.ЗадачаСогласования.СоздатьЗадачу(), заполнив БизнесПроцесс, ТочкаМаршрута и Исполнитель, — так делает СогласованиеЗакупки в УТ 11.4. Решения соберите запросом по задачам этой точки.

Можно ли сделать бизнес-процесс в расширении?

Да, начиная с платформы 8.3.25: в расширении создают собственные бизнес-процессы и задачи и заимствуют типовые. У заимствованного процесса можно изменить карту маршрута — при загрузке расширения она полностью заменит исходную. Раньше — только в самой конфигурации.

Как показать, на каком шаге процесс?

ПолучитьКартуМаршрута() объекта процесса возвращает копию карты: пройденные точки заштрихованы, активные обведены пунктиром. Выведите её в реквизит формы типа ГрафическаяСхема с полем графической схемы. В БСП для этого есть команда «Карта маршрута», текстом шаг покажет запрос ХодСогласования.

Когда проще заказать

Если маршрут нужно встроить в типовую УТ или КА, связать с проведением документов и правами пользователей или перенести самописные процессы на подсистему БСП, быстрее поручить это программисту: доработка 1С под ваши процессы. Опишите маршрут на странице «Разместить задание» — оценка бесплатная, ответ в течение рабочего дня.

По теме

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

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

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

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


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