При работе в конфигурации 1С:Документооборот (начиная с версий 2.1 и выше) администраторы и пользователи часто сталкиваются с неприятной ситуацией. При попытке запустить бизнес-процесс (например, «Исполнение», «Согласование» или «Ознакомление») система блокирует старт и выводит диагностическое сообщение вида: «Пользователь "Иванов Иван Иванович" не имеет прав на предмет "Заявка №... от..."». При этом запуск обновления информационной базы с параметром /c ЗапуститьОбновлениеИнформационнойБазы или полное пересчет прав не всегда приносят желаемый результат.
В этой статье мы подробно разберем, почему возникает эта ошибка, как работает программный алгоритм проверки прав в системе 1С:Документооборот, и рассмотрим несколько эффективных способов решения проблемы — как через стандартные настройки администрирования, так и на уровне программного кода.
Давайте проанализируем внутренние механизмы конфигурации. Ошибка «Пользователь не имеет прав на предмет» — это не классическое системное ограничение доступа на уровне записей СУБД (RLS), а специальная программная проверка, заложенная разработчиками 1С в логику старта бизнес-процессов.
Перед тем как запустить процесс, система проверяет всех его участников (исполнителей, контролеров, проверяющих) на наличие у них прав доступа на чтение прикрепленного к процессу документа (который в терминах системы называется «предметом»). Логика разработчиков проста и понятна: нет смысла ставить задачу исполнителю по документу, который он физически не сможет открыть из-за ограничений прав. Чтобы предотвратить появление «битых» задач, система блокирует старт бизнес-процесса на самом раннем этапе.
В коде конфигурации эта проверка выглядит следующим образом:
Если КоличествоПользователей <> 0 Тогда
Отказ = Истина;
Если КоличествоПользователей = 1 Тогда
ТекстОшибки = НСтр("ru = 'Пользователь ""%1"" не имеет прав на предмет ""%2"".'");
ТекстОшибки =
СтрШаблон(ТекстОшибки, УчастникиНеИмеющиеПравДоступаНаТекущийПредмет[0], Предмет);
Иначе
// Обработка для списка пользователей
КонецЕсли;
КонецЕсли;
Ситуация осложняется, когда в организации настроена жесткая структура прав по папкам документов (например, подразделения не должны видеть документы друг друга), но при этом возникает необходимость отправлять документы «смежным» отделам на ознакомление или исполнение. Возникает классический замкнутый круг:
Выясним, как разорвать этот круг штатными средствами администрирования.
Самый простой и эффективный способ решить проблему без изменения программного кода — скорректировать правила валидации рабочих групп в настройках системы.
По умолчанию в 1С:Документооборот включена жесткая опция, которая запрещает добавлять пользователей в рабочую группу документа, если у них нет прав на папку этого документа. Чтобы отключить это ограничение, выполним следующие шаги:
После снятия этого флага система позволит беспрепятственно добавлять любых сотрудников в рабочую группу конкретного документа. Пользователь получит доступ к самому документу «в обход» ограничений папки, в которой этот документ физически хранится.
Чтобы не добавлять пользователей в рабочую группу каждого документа вручную, мы можем автоматизировать этот процесс. Настроим систему так, чтобы при старте бизнес-процесса все его участники автоматически становились членами рабочей группы документа:
Теперь при старте любого процесса по данному документу система автоматически добавит исполнителя в его рабочую группу, тем самым программно расширив его права на чтение этого предмета. Ошибка при старте процесса больше не возникнет.
Если требования информационной безопасности запрещают отключать системные проверки рабочих групп, мы можем настроить иерархию папок документов более гибко:
Иногда администраторы сталкиваются с ситуацией, когда все права настроены верно, пользователь добавлен в рабочую группу, но ошибка все равно продолжает появляться. Это связано с механизмом отложенного расчета прав доступа.
В крупных базах 1С:Документооборот расчет прав выполняется в фоновом режиме через специальную очередь. Если фоновые задания зависли или база испытывает высокую нагрузку, новые права могут просто «не успеть» рассчитаться к моменту запуска бизнес-процесса.
Для диагностики и решения этой проблемы выполним следующие действия:
УправлениеПравамиДоступа для оперативного пересчета прав конкретного «проблемного» документа.Если вы планируете переход или уже работаете в новой редакции 1С:Документооборот 3.0, важно знать, что концепция распределения прав там претерпела значительные изменения:
Рассмотренные нами методики администрирования позволяют полностью решить проблему прав на предметы бизнес-процессов штатными средствами, сохраняя при этом конфигурацию на поддержке и обеспечивая стабильное обновление системы в будущем.