При настройке комплексных бизнес-процессов в конфигурации 1С:Документооборот часто возникает типовая ситуация: документ (например, входящий счет на оплату) сначала проходит этап согласования у руководителей, а затем отправляется на исполнение бухгалтеру. Согласующие лица оставляют важные комментарии и резолюции (например, «Оплатить только 50% согласно условиям договора» или «Оплатить после поступления оригиналов актов»), однако исполнитель на следующем этапе не видит этих примечаний, так как для него формируется отдельная изолированная задача Исполнение.
Проанализируем архитектурные причины такого поведения системы, а также подробно разберем практические способы передачи истории согласования исполнителю.
Выясним причину, почему исполнитель не видит визы напрямую в карточке документа:
ВизыСогласования изначально спроектирован для внутренних и исходящих документов. Входящий документ рассматривается методологически как неизменяемый объект, поступивший от контрагента «как есть», поэтому вкладка и реквизит виз для него штатно не предусмотрены.Согласование, Исполнение) формирует собственный набор задач. Описание задачи исполнения берется из шаблона шага и автоматически не дополняется комментариями из завершенного процесса согласования.Рассмотрим программный способ извлечения результатов предыдущего шага. Если комплексный процесс содержит последовательные этапы, мы можем запросом найти завершенный бизнес-процесс согласования и считать его историю через специализированный регистр сведений ИсторияВыполненияЗадач.
Посмотрим на пример кода, который выполняет поиск последнего завершенного шага в рамках комплексного процесса и формирует текстовый блок с историей согласования:
// Получаем последний выполненный этап комплексного процесса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КомплексныйПроцессЭтапы.ЗапущенныйБизнесПроцесс
|ИЗ
| БизнесПроцесс.КомплексныйПроцесс.Этапы КАК КомплексныйПроцессЭтапы
|ГДЕ
| КомплексныйПроцессЭтапы.Ссылка = &Ссылка
| И КомплексныйПроцессЭтапы.ЗадачаВыполнена = ИСТИНА
|УПОРЯДОЧИТЬ ПО
| КомплексныйПроцессЭтапы.НомерСтроки УБЫВ";
Запрос.УстановитьПараметр("Ссылка", ШаблонБизнесПроцесса.ВладелецШаблона);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И ТипЗнч(Выборка.ЗапущенныйБизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") Тогда
ИсторияВыполнения = РегистрыСведений.ИсторияВыполненияЗадач.ИсторияПоБизнесПроцессу(Выборка.ЗапущенныйБизнесПроцесс);
Результат = Символы.ПС
+ Символы.ПС
+ НСтр("ru = 'История выполнения:'")
+ Символы.ПС
+ "------------------------------------"
+ Символы.ПС
+ ИсторияВыполнения;
Иначе
Результат = "Не удалось определить процесс, на основании которого создана задача.";
КонецЕсли;
Разберем, как применить данный алгоритм:
Описание создаваемой задачи ЗадачаИсполнителя.Исполнение, динамически заполняя текст задачи для бухгалтера.Если нет возможности модифицировать логику формирования задач, разберем более быстрый способ — предоставление бухгалтеру удобного доступа к печати листа согласования непосредственно из карточки входящего документа или его формы списка.
ПроцессыДляОбъектов или реквизит Предмет бизнес-процессов.ВходящиеДокументы. В результате исполнитель может распечатать или просмотреть визы в один клик без перехода по дереву связанных процессов.Проанализируем правильную методологию ведения документооборота, заложенную разработчиками системы:
ВходящиеДокументы.Примечание по переходу на 1С:Документооборот 3.0: В редакции 3.0 архитектура была существенно переработана. Входящие, исходящие и внутренние документы объединены в единый справочник ДокументыПредприятия, а процессы заменены сквозной обработкой документа. Все визы, замечания и история решений согласующих автоматически отображаются в единой ленте обработки и доступны исполнителю без дополнительных настроек и доработок кода.