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

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот Управленческий учет IT и автоматизация бизнеса
← На главную

При настройке комплексных бизнес-процессов в конфигурации 1С:Документооборот часто возникает типовая ситуация: документ (например, входящий счет на оплату) сначала проходит этап согласования у руководителей, а затем отправляется на исполнение бухгалтеру. Согласующие лица оставляют важные комментарии и резолюции (например, «Оплатить только 50% согласно условиям договора» или «Оплатить после поступления оригиналов актов»), однако исполнитель на следующем этапе не видит этих примечаний, так как для него формируется отдельная изолированная задача Исполнение.

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

Почему в 1С:Документооборот 2.1 не отображаются визы по входящим документам

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

  1. Разделение метаданных документов: В редакции 2.1 входящие, исходящие и внутренние документы представляют собой раздельные объекты конфигурации. Механизм визирования через регистр сведений ВизыСогласования изначально спроектирован для внутренних и исходящих документов. Входящий документ рассматривается методологически как неизменяемый объект, поступивший от контрагента «как есть», поэтому вкладка и реквизит виз для него штатно не предусмотрены.
  2. Изоляция контекста задач: В рамках комплексного процесса каждый вложенный бизнес-процесс (Согласование, Исполнение) формирует собственный набор задач. Описание задачи исполнения берется из шаблона шага и автоматически не дополняется комментариями из завершенного процесса согласования.

Вариант 1. Программное получение истории согласования в скрипте или автозаполнении

Рассмотрим программный способ извлечения результатов предыдущего шага. Если комплексный процесс содержит последовательные этапы, мы можем запросом найти завершенный бизнес-процесс согласования и считать его историю через специализированный регистр сведений ИсторияВыполненияЗадач.

Посмотрим на пример кода, который выполняет поиск последнего завершенного шага в рамках комплексного процесса и формирует текстовый блок с историей согласования:


// Получаем последний выполненный этап комплексного процесса
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ ПЕРВЫЕ 1
|    КомплексныйПроцессЭтапы.ЗапущенныйБизнесПроцесс
|ИЗ
|    БизнесПроцесс.КомплексныйПроцесс.Этапы КАК КомплексныйПроцессЭтапы
|ГДЕ
|    КомплексныйПроцессЭтапы.Ссылка = &Ссылка
|    И КомплексныйПроцессЭтапы.ЗадачаВыполнена = ИСТИНА
|УПОРЯДОЧИТЬ ПО
|    КомплексныйПроцессЭтапы.НомерСтроки УБЫВ";

Запрос.УстановитьПараметр("Ссылка", ШаблонБизнесПроцесса.ВладелецШаблона);

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

Разберем, как применить данный алгоритм:

  1. В пользовательских скриптах комплексного процесса: В версии КОРП в настройках этапа «Исполнение» можно добавить скрипт перед стартом, который запишет полученную строку в реквизит Описание создаваемой задачи ЗадачаИсполнителя.
  2. В шаблонах автозаполнения: Код можно вынести в справочник алгоритмов автозаполнения описания задачи.
  3. Через расширение конфигурации: Можно перехватить подписку на событие при создании или старте бизнес-процесса Исполнение, динамически заполняя текст задачи для бухгалтера.

Вариант 2. Подключение внешней печатной формы «Лист согласования»

Если нет возможности модифицировать логику формирования задач, разберем более быстрый способ — предоставление бухгалтеру удобного доступа к печати листа согласования непосредственно из карточки входящего документа или его формы списка.

  1. Разрабатываем внешнюю печатную форму (ВПФ), подключаемую через стандартную подсистему дополнительных отчетов и обработок.
  2. В модуле ВПФ находим связанный с входящим документом процесс согласования через регистр ПроцессыДляОбъектов или реквизит Предмет бизнес-процессов.
  3. Формируем стандартный макет листа согласования с выводом согласующих лиц, дат, результатов («Согласовано», «Не согласовано», «Согласовано с замечаниями») и текстов комментариев.
  4. Назначаем обработку для справочника ВходящиеДокументы. В результате исполнитель может распечатать или просмотреть визы в один клик без перехода по дереву связанных процессов.

Вариант 3. Методологическое разделение на входящие и внутренние документы

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

  1. Поступающий от поставщика счет регистрируется как объект справочника ВходящиеДокументы.
  2. На основании входящего счета создается внутренний документ (например, «Заявка на оплату» или «Счет на оплату внутренний»).
  3. Комплексный процесс запускается уже по внутреннему документу. Внутренние документы в 1С:Документооборот 2.1 полноценно поддерживают механизм хранения виз на специальной вкладке и формирование стандартного листа согласования.
  4. При необходимости оплаты частями (например, 50% аванса и 50% постоплаты) на основании одного входящего документа можно ввести несколько заявок на расходование денежных средств с разными суммами и сроками, что исключает риск ошибки со стороны бухгалтера.

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

← На главную