Разграничение прав доступа и администрирование пользователей в платформе 1С:Предприятие 7.7 существенно отличается от более поздних версий. В штатной поставке отсутствуют гибкие механизмы объединения ролей и детального визуального анализа прав. Разберем особенности архитектуры безопасности 1С 7.7, выясним, как построить удобный отчет для анализа прав, и рассмотрим инструменты для программного управления учетными записями.
Чтобы правильно подойти к анализу и настройке прав, сначала проанализируем базовые принципы работы платформы:
users.usr в каталоге USRDEF. Сами же наборы прав и правила доступа к объектам зашиты в конфигурации 1Cv7.MD.Для наглядного анализа того, какие наборы прав имеют доступ к тем или иным объектам, применяют специализированные отчеты — «шахматки». В Конфигураторе дерево прав отображает только один набор за раз, что делает аудит безопасности неудобным.
Построить матрицу прав можно программно через обход коллекции Метаданные с помощью встроенной функции платформы ПравоДоступа(). Рассмотрим пример формирования таблицы прав для справочников и документов:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МатрицаПрав");
// Обходим все наборы прав в конфигурации
Для НомерПрава = 1 По Метаданные.НаборПрав() Цикл
ИмяПрава = Метаданные.НаборПрав(НомерПрава).Идентификатор;
// Обходим справочники
Для НомерСпр = 1 По Метаданные.Справочник() Цикл
Спр = Метаданные.Справочник(НомерСпр);
ДоступЧтение = ПравоДоступа("Чтение", "Справочник." + Спр.Идентификатор, ИмяПрава);
ДоступЗапись = ПравоДоступа("Запись", "Справочник." + Спр.Идентификатор, ИмяПрава);
ДоступВвод = ПравоДоступа("ВводНового", "Справочник." + Спр.Идентификатор, ИмяПрава);
// Выводим строку матрицы
КонецЦикла;
// Обходим документы
Для НомерДок = 1 По Метаданные.Документ() Цикл
Док = Метаданные.Документ(НомерДок);
ДоступЧтение = ПравоДоступа("Чтение", "Документ." + Док.Идентификатор, ИмяПрава);
ДоступЗапись = ПравоДоступа("Запись", "Документ." + Док.Идентификатор, ИмяПрава);
ДоступПроведение = ПравоДоступа("Проведение", "Документ." + Док.Идентификатор, ИмяПрава);
// Выводим строку матрицы
КонецЦикла;
КонецЦикла;
Для создания действительно удобного отчета рекомендуется:
Проведение только для документов, а ВводНового — для справочников и документов.Штатный механизм добавления и редактирования пользователей через меню «Администрирование — Пользователи» в Конфигураторе требует монопольного захвата служебного файла users.usr, что неудобно в рабочей базе.
Для программного управления списком пользователей, смены паролей и назначения наборов прав в режиме «1С:Предприятие» используется внешняя библиотека UsersDef.dll (или аналогичные решения, такие как 1C_User.dll).
Разберем основные возможности внешней компоненты UsersDef.dll:
Когда возможностей штатных наборов прав недостаточно, разработчики реализуют прикладные механизмы разграничения доступа:
Пользователи, ГруппыДоступа, а также периодические реквизиты или регистры сведений для детальной настройки (доступ по складам, фирмам, кассам, типам цен). Проверки внедряются в предопределенные процедуры ПриОткрытии(), ПриЗаписи(), ОбработкаПроведения().FormEx позволяет на лету блокировать или скрывать отдельные реквизиты, колонки табличных частей, пункты меню и кнопки форм в зависимости от прав текущего пользователя без дублирования наборов форм.