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