Как просматривать и настраивать права пользователей в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Разграничение прав доступа и администрирование пользователей в платформе 1С:Предприятие 7.7 существенно отличается от более поздних версий. В штатной поставке отсутствуют гибкие механизмы объединения ролей и детального визуального анализа прав. Разберем особенности архитектуры безопасности 1С 7.7, выясним, как построить удобный отчет для анализа прав, и рассмотрим инструменты для программного управления учетными записями.

Архитектурные ограничения штатной системы прав в 1С 7.7

Чтобы правильно подойти к анализу и настройке прав, сначала проанализируем базовые принципы работы платформы:

  1. Принцип «один пользователь — один набор прав»: штатная система не позволяет назначить одной учетной записи несколько ролей одновременно. Каждому пользователю жестко сопоставляется ровно один набор прав и один пользовательский интерфейс.
  2. Разделение хранения настроек: учетные записи, назначенные интерфейсы, права и пароли хранятся в специальном служебном файле users.usr в каталоге USRDEF. Сами же наборы прав и правила доступа к объектам зашиты в конфигурации 1Cv7.MD.
  3. Статичность прав в метаданных: настроить доступ к конкретным объектам (чтение, запись, проведение, удаление) динамически в режиме «1С:Предприятие» нельзя — изменения наборов прав требуют монопольной правки конфигурации в режиме «Конфигуратор».
  4. Отсутствие штатного RLS: платформа не поддерживает ограничение доступа на уровне отдельных записей (Row Level Security). Доступ дается или закрывается ко всему справочнику или документу целиком.

Просмотр прав: построение отчета «Шахматка»

Для наглядного анализа того, какие наборы прав имеют доступ к тем или иным объектам, применяют специализированные отчеты — «шахматки». В Конфигураторе дерево прав отображает только один набор за раз, что делает аудит безопасности неудобным.

Построить матрицу прав можно программно через обход коллекции Метаданные с помощью встроенной функции платформы ПравоДоступа(). Рассмотрим пример формирования таблицы прав для справочников и документов:


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МатрицаПрав");

// Обходим все наборы прав в конфигурации
Для НомерПрава = 1 По Метаданные.НаборПрав() Цикл
    ИмяПрава = Метаданные.НаборПрав(НомерПрава).Идентификатор;
    
    // Обходим справочники
    Для НомерСпр = 1 По Метаданные.Справочник() Цикл
        Спр = Метаданные.Справочник(НомерСпр);
        
        ДоступЧтение = ПравоДоступа("Чтение", "Справочник." + Спр.Идентификатор, ИмяПрава);
        ДоступЗапись = ПравоДоступа("Запись", "Справочник." + Спр.Идентификатор, ИмяПрава);
        ДоступВвод   = ПравоДоступа("ВводНового", "Справочник." + Спр.Идентификатор, ИмяПрава);
        
        // Выводим строку матрицы
    КонецЦикла;
    
    // Обходим документы
    Для НомерДок = 1 По Метаданные.Документ() Цикл
        Док = Метаданные.Документ(НомерДок);
        
        ДоступЧтение     = ПравоДоступа("Чтение", "Документ." + Док.Идентификатор, ИмяПрава);
        ДоступЗапись     = ПравоДоступа("Запись", "Документ." + Док.Идентификатор, ИмяПрава);
        ДоступПроведение = ПравоДоступа("Проведение", "Документ." + Док.Идентификатор, ИмяПрава);
        
        // Выводим строку матрицы
    КонецЦикла;
КонецЦикла;

Для создания действительно удобного отчета рекомендуется:

  1. Исключать нерелевантные операции: например, проверять право Проведение только для документов, а ВводНового — для справочников и документов.
  2. Группировать объекты: объединять строки отчета по видам метаданных (справочники, документы, журналы, регистры, отчеты).
  3. Режим сравнения: выводить не всю гигантскую таблицу, а только различия между выбранными наборами прав.

Управление пользователями без монопольного доступа: UsersDef.dll

Штатный механизм добавления и редактирования пользователей через меню «Администрирование — Пользователи» в Конфигураторе требует монопольного захвата служебного файла users.usr, что неудобно в рабочей базе.

Для программного управления списком пользователей, смены паролей и назначения наборов прав в режиме «1С:Предприятие» используется внешняя библиотека UsersDef.dll (или аналогичные решения, такие как 1C_User.dll).

Разберем основные возможности внешней компоненты UsersDef.dll:

  1. Создание и удаление учетных записей: добавление новых пользователей базы без перезапуска рабочего процесса других сотрудников.
  2. Назначение прав и интерфейсов: изменение привязки пользователя к существующему набору прав или интерфейсу прямо из пользовательской обработки.
  3. Сброс и смена паролей: централизованное администрирование паролей через специализированный интерфейс.
  4. Чтение структуры USRDEF: получение списка всех пользователей с их параметрами для построения сводных отчетов по безопасности.

Альтернативные подходы к гибкому разграничению прав

Когда возможностей штатных наборов прав недостаточно, разработчики реализуют прикладные механизмы разграничения доступа:

  1. Собственные справочники прав и групп: в конфигурацию добавляются справочники Пользователи, ГруппыДоступа, а также периодические реквизиты или регистры сведений для детальной настройки (доступ по складам, фирмам, кассам, типам цен). Проверки внедряются в предопределенные процедуры ПриОткрытии(), ПриЗаписи(), ОбработкаПроведения().
  2. Динамическое управление формами через FormEx: использование возможностей внешней компоненты FormEx позволяет на лету блокировать или скрывать отдельные реквизиты, колонки табличных частей, пункты меню и кнопки форм в зависимости от прав текущего пользователя без дублирования наборов форм.
← На главную