Что такое «дескрипторы прав доступа»?
В первых версиях «1С:Документооборот» при назначении прав доступа (изменение групп доступа, профилей групп доступа) происходило обновление нескольких записей в регистрах, которые использовались в запросах ограничения доступа. При этом запросы могли быть столь сложными, насколько сложную логику ограничения прав доступа требовалось реализовать. Это могло привести к замедлению работы системы.
В актуальной версии «1С:Документооборота» используется реализация стандартной подсистемы «1С:Предприятия» — «Управление доступом». Специфика — в расчете прав доступа при записи объектов. Расчет прав доступа происходит либо сразу при записи, либо в режиме «Отложенного обновления доступа». Таким образом, решается проблема медленного чтения списков при сложных запросах к данным, которые имеют ограниченный доступ.
Вся система прав построена на так называемых «дескрипторах доступа». Дескриптор — специальный объект, содержащий ключевые поля, от которых зависит доступ к объектам данных, с такими же ключевыми полями. Таким образом, права доступа рассчитываются не для каждого объекта данных, а для дескриптора доступа. Число дескрипторов на порядки меньше, чем число объектов данных. В зависимости от настроек прав доступа в конкретной базе данных их число может быть меньше в 100-10000 раз, чем число самих объектов, для которых нужно рассчитать права доступа.
В «1С:Документообороте» дескрипторы создаются автоматически и несут на себе ключевые поля, по которым настроен доступ (организация, гриф доступа, вид документа, папка и другие). Дескрипторы создаются не на каждый объект системы, а на комбинацию ключевых правообразующих полей. У объекта может быть один или несколько дескрипторов: один основной (комбинация правообразующих полей) и несколько дескрипторов для рабочей группы документа (один на каждую строчку).
Для того чтобы посмотреть какие права доступа к документу назначены в соответствии с дескриптором, пользователь может открыть карточку документа перейти по кнопке «Еще» к команде «Права доступа».