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

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

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

Анализ логики процесса согласования

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

Способ 1. Использование встроенной настройки «Исключать из списка исполнителей»

Рассмотрим самый простой вариант, который доступен «из коробки» внутри одного действия «Согласование». Если ваш процесс подразумевает несколько циклов (итераций) внутри одного этапа, в настройках действия предусмотрен флаг «Использовать циклы исполнения».

В этом случае, если пользователь уже поставил визу «Согласовано» на первом цикле, а документ ушел на второй цикл из-за отклонения другим участником, система может автоматически пропустить тех, кто уже дал положительный ответ. Но этот механизм работает преимущественно в рамках одного конкретного действия в шаблоне.

Способ 2. Условия маршрутизации для пропуска этапов

Разберем ситуацию, когда один и тот же человек стоит в разных этапах комплексного процесса (например, этап №1 «Согласование с руководителем» и этап №5 «Согласование с финдиректором», где это одно и то же лицо). Чтобы исключить дублирование, мы можем настроить Условие маршрутизации.

Для этого выполним следующие шаги:

  1. Перейдем в настройки комплексного процесса.
  2. Для этапа, который нужно пропустить, создадим условие на языке 1С.
  3. Пропишем код, который проверяет наличие визы от данного пользователя по текущему предмету.

Пример логики кода (схематично):


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

Запрос.УстановитьПараметр("Предмет", Предмет);
Запрос.УстановитьПараметр("ТекущийИсполнитель", Параметры.ИсполнительЭтапа);

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    // Если виза уже есть, возвращаем Ложь, чтобы этап пропустился
    Результат = Ложь;
Иначе
    Результат = Истина;
КонецЕсли;

Способ 3. Автоматическое завершение задач через обработчик «При создании задач»

Проанализируем более продвинутый метод, который позволяет сохранить историю согласования (виза будет видна в списке), но не требует действий от пользователя. Мы можем использовать программное событие «При создании задач» в шаблоне процесса.

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

Различие между Согласованием и Утверждением

Важно понимать разницу в терминах, которую часто путают пользователи. Согласование — это сбор мнений и экспертных оценок. Утверждение — это финальное принятие решения ответственным лицом. Если вы хотите, чтобы кто-то «поставил точку» один раз в самом конце, возможно, этого сотрудника стоит убрать из этапов согласования и оставить только в качестве Утверждающего. Это логически решит проблему повторных задач, так как этап утверждения в процессе обычно один.

Настройка ознакомления для реквизита «Подготовил»

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

Чтобы исправить это, разберем настройку этапа «Ознакомление»:

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

Это гарантирует, что задача «Ознакомиться с результатом согласования» придет именно составителю документа, даже если процесс за него запустил секретарь или руководитель подразделения.

Программный поиск реквизита через скрипты

Если стандартная автоподстановка по каким-то причинам недоступна (например, в очень старых релизах или специфических видах документов), мы можем использовать небольшой скрипт для вычисления исполнителя. Рассмотрим пример получения значения реквизита Подготовил из предмета документа:


// Скрипт для определения исполнителя ознакомления
Если ТипЗнч(Предмет) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
    ИсполнительОзнакомления = Предмет.Подготовил;
    Если ЗначениеЗаполнено(ИсполнительОзнакомления) Тогда
        ДобавитьИсполнителя(ИсполнительОзнакомления);
    КонецЕсли;
КонецЕсли;

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

← На главную