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