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