Настройка прав доступа в крупных системах 1С — это всегда сложный процесс, особенно когда приходится разбираться в «наследстве» от предыдущих специалистов. Ситуация осложняется, если в работе находятся одновременно базы на разных архитектурах: современная 1С:ERP 2.5 (на управляемых формах) и более ранняя 1С:КА 1.1 (на обычных формах). В этой статье мы подробно разберем, как «размотать» клубок настроек, найти причины исчезновения целых разделов интерфейса и правильно диагностировать работу механизма RLS (Restriction at Leaf Level).
Прежде всего, нам необходимо четко разграничить механизмы управления доступом в этих двух конфигурациях. Попытка применить одни и те же методы диагностики к ним обоим приведет к путанице.
Для начала аудита в любой из этих систем первым делом перейдем в раздел: НСИ и администрирование — Администрирование — Настройки пользователей и прав. Именно здесь сосредоточены основные инструменты управления.
Рассмотрим распространенную ситуацию: у пользователя (или даже у администратора) в одной базе ЕРП видны разделы «Кадры» и «Зарплата», а в другой — нет. Причина здесь чаще всего кроется не в ролях, а в Функциональных опциях (ФО). Если функциональность отключена в настройках системы, 1С скрывает связанные с ней объекты метаданных из всего интерфейса, независимо от прав доступа.
Проанализируем конкретные настройки, которые могут влиять на видимость разделов:
ИспользоватьВнешнююПрограммуДляУчетаЗаработнойПлаты, то встроенный блок ЗУП в ЕРП будет скрыт. Предполагается, что учет ведется в сторонней базе, и интерфейс не перегружается лишними разделами.Если разделы видны, но отчеты пустые или данные отображаются частично, мы имеем дело с работой RLS. В отличие от ошибки «Нарушение прав доступа», механизм RLS просто тихо исключает строки из выборки запроса. Разберем по шагам, как проверить, виноват ли RLS в вашей проблеме:
Самый быстрый способ подтвердить теорию о влиянии RLS — это временное отключение ограничений. На копии базы данных перейдем в настройки прав и снимем флаг Ограничивать доступ на уровне записей. Если после этого данные в отчетах появились — причина 100% в настройках RLS.
В современных конфигурациях используется «Производительный режим» RLS. Он полагается на фоновые задания по обновлению ключей доступа. Если задание зависло или завершилось с ошибкой, пользователь может не видеть новые данные. Проанализируем состояние очереди обновлений. Если очередь переполнена, необходимо дождаться окончания процесса или перезапустить фоновое задание Обновление прав доступа.
Не нужно «курить» профили вручную. В ЕРП 2.5 есть мощный инструмент. Зайдем в карточку пользователя, нажмем кнопку Права доступа и выберем отчет Права доступа. Рассмотрим его структуру: он показывает в разрезе каждого объекта (справочника, документа), какая именно роль дает право, и какое ограничение наложено по организациям, складам или подразделениям.
Проанализируем ситуацию, упомянутую в обсуждении: переезд с Windows Server на CentOS 7. Это может стать неочевидной причиной проблем с правами и доступностью данных:
snccntx. Это сбросит старые хэши прав доступа, которые могли некорректно перенестись.Если документации нет, а профили «засраны хэшем» (как выразились участники форума), придерживайтесь следующего алгоритма совместной работы с системой:
Посмотрим на пример того, как программно можно проверить наличие функциональной опции, если вы пишете свой обработчик или диагностическую утилиту:
// Проверка включения функциональной опции в коде
Если ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаРасходованиеДенежныхСредств") Тогда
Сообщить("Функционал заявок активен, проверяем права доступа к документам.");
Иначе
Сообщить("Функционал отключен на уровне настроек системы.");
КонецЕсли;
Подводя итог: при поиске проблем с доступом в 1С:ERP и 1С:КА всегда идите от простого к сложному. Сначала проверьте Функциональные опции, затем Группы доступа и состояние Фоновых заданий по обновлению прав, и только в последнюю очередь приступайте к анализу сложных запросов в шаблонах RLS.