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