Почему при повторном согласовании визы не уходят в историю и как это исправить?

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

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

В этой статье мы подробно разберем, почему так происходит, как работает механизм архивации виз и каким образом правильно организовывать повторные итерации согласования, чтобы история правок сохранялась корректно.

Анализ проблемы: почему визы дублируются?

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

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

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

Решение №1: Использование штатного механизма повторного согласования

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

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

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

Решение №2: Контроль версионности файлов

Выясним еще одну причину, по которой визы могут «зависать». Часто логика системы привязана к версиям файлов документа. Если вы запускаете новый процесс согласования по тому же самому файлу, не внося в него изменений и не создавая новую версию, 1С может посчитать, что старые замечания все еще актуальны.

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

Решение №3: Настройка шаблонов процессов

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

Проверьте следующие настройки в шаблоне процесса Согласование:

Особенности работы в редакции 3.0

Если вы используете 1С:Документооборот 3.0, механизм работы с визами там существенно переработан. Вместо отдельных объектов «Визы» используется концепция «Участники действия». В этой версии система более интеллектуально управляет итерациями в рамках одного «Действия Согласование».

Рассмотрим, как это работает в 3.0:

Предупреждение: Если в версии 3.0 вы используете механизм «Дополнительных согласований» (вне основного маршрута обработки), то вы можете столкнуться с той же проблемой, что и в версии 2.1 — ручной запуск «Доп. согласования» не очищает историю основного маршрута.

Как принудительно очистить «зависшие» визы?

Если ошибка уже совершена и документ «висит» с двумя визами, проанализируем, что может сделать администратор или ответственный за документ:

  1. Перейдите на вкладку «Визы» в карточке документа.
  2. Найдите старую визу с результатом «Не согласовано».
  3. Если права доступа позволяют, можно зайти в саму визу и вручную установить признак «В истории». Это немедленно исключит её из расчета итогового статуса.
  4. В некоторых случаях помогает использование обработки «Групповое изменение реквизитов» для регистра ВизыСогласования, где для нужных записей устанавливается поле ПомещенаВИсторию = Истина.

Разберем пример кода (для разработчиков), который можно использовать во внешнем расширении для автоматизации этого процесса при старте нового согласования:


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

Запрос.УстановитьПараметр("Документ", СсылкаНаДокумент);
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    ОбъектВизы = Результат.Виза.ПолучитьОбъект();
    ОбъектВизы.ПомещенаВИсторию = Истина;
    ОбъектВизы.Записать();
КонецЦикла;

Итоги и рекомендации

Подводя итог нашему анализу, можно сформулировать главное правило: никогда не запускайте согласование «с нуля» как новый бизнес-процесс, если по документу уже есть история согласования.

Всегда используйте цепочку задач, созданную системой: Согласование -> Ознакомление с результатом -> Повторное согласование. Только в этом случае 1С корректно управляет регистром виз, вовремя помечая старые записи как исторические и позволяя документу получить заветный статус «Согласован».

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

← На главную