Каталог решений - Автоматическое создание задачи исполнения при бронировании помещений в 1С: Документооборот

Автоматическое создание задачи исполнения при бронировании помещений в 1С: Документооборот

Автоматическое создание задачи исполнения при бронировании помещений в 1С: Документооборот

В наличии

Простая настройка для автоматического создания задач исполнения при использовании блока бронирования помещений для 1С: Документооборот 2.1.

Категория:

Описание

Обратил внимание, что в 1С: Документооборот 2.1 нет автоматического механизма постановки задач на основании введенных документов бронирования помещений. Исправить данную проблему можно очень просто типовыми средствами без каких-либо доработок.

Для этого нам потребуется 4 справочника: "Шаблоны исполнения", "Виды бизнес событий", "Детектор бизнес-события" и "Обработчик бизнес-события". 

Первым делом создаем шаблон процесса исполнения, тут всё просто — в настройках процесса указываем исполнителей, в качестве предмета указываем "бронь":

 

 

Далее создаем новый вид бизнес-события "Бронирование ВКС":

 

 

После этого добавляем детектор события, в котором укажем созданный нами вид события:

 

 

Детектор по сути работает так — ищет хотя бы один документ бронирования, по которому не было запущено ни одного процесса исполнения. Если нашел — возвращает Истина.

И последнее действие — создаем обработчик бизнес-события. Обратите внимание, что в коде обработчика я использую созданный на первом шаге шаблон исполнения "Заявка на ВКС", именно на его основе будет создаваться процесс:

 

 

В подписках обработчика устанавливаем связь события и обработчика:

 

 

Выполнение детекторов и формирование событий выполняет регламентное задание «Обработка детекторов бизнес-событий».

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


 

Для того чтобы можно было использовать механизм бизнес-событий, необходимо его включить в настройках программы:

 

 

Код детектора:

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

Код обработчика:

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

 

has been added to your cart:
Оформление заказа