Контроль доступа в 1С:Предприятие — критически важный аспект безопасности и управления бизнес-процессами. От того, как настроены права пользователей, зависит не только защита конфиденциальных данных, но и корректность работы системы. Однако многие администраторы и разработчики сталкиваются с вопросом: где физически хранятся эти права и как их можно просмотреть или изменить вручную?
В этой статье мы разберём все уровни хранения прав — от метаданных конфигурации до физических таблиц в SQL-базах и файловых версиях. Вы узнаете, какие объекты отвечают за ролевой доступ, как права синхронизируются между пользователями и ролями, и какие инструменты помогут их анализировать. Особое внимание уделим скрытым механизмам наследования прав, которые часто становятся причиной ошибок при настройке.
Материал будет полезен администраторам 1С, разработчикам и специалистам по информационной безопасности, которые хотят глубже понять архитектуру системы и научиться управлять правами на низком уровне.
Архитектура прав доступа в 1С: основные понятия
Прежде чем говорить о хранении, важно разобраться в терминологии. В 1С:Предприятие права доступа организованы по иерархическому принципу:
- 🔐 Пользователи — учётные записи, под которыми осуществляется вход в систему. Хранят привязку к ролям и дополнительные настройки (например, язык интерфейса).
- 🛡️ Роли — наборы прав, определяющие, какие действия разрешено выполнять (чтение, редактирование, удаление объектов).
- 📋 Объекты метаданных — справочники, документы, отчёты и другие элементы конфигурации, к которым применяются права.
- 🔄 Права доступа — конкретные разрешения (или запреты) на операции с объектами (например,
Чтение,Добавление,Просмотр).
Ключевая особенность: права не хранятся напрямую у пользователя. Вместо этого пользователь получает их через назначенные роли, а роли уже содержат набор разрешений. Такая схема упрощает управление — достаточно изменить роль, и права обновятся для всех пользователей, к которым она привязана.
Важно понимать, что в 1С действует принцип минимальных привилегий: по умолчанию доступ ко всем объектам запрещён, и права нужно назначать явным образом. Это отличается от некоторых других систем, где по умолчанию может быть разрешён доступ ко всему.
Хранение прав в файловой версии 1С
В файловой версии (например, 1С:Предприятие 8.3 с базой в формате .1CD) все данные, включая права пользователей, хранятся в одном бинарном файле. Это упрощает развёртывание, но усложняет прямой доступ к информации.
Права пользователей в файловой базе хранятся в следующих структурах:
- 📁 Системный каталог
1Cv8— содержит файлы конфигурации и данных, включая сведения о пользователях. Права записаны в бинарном виде внутри файла базы. - 🔧 Таблица
Users— внутренняя таблица, где хранятся логины, пароли (в зашифрованном виде) и ссылки на назначенные роли. - 📜 Таблица
Roles— содержит описание ролей и их прав. Доступна только через специальные методы платформы.
Чтобы просмотреть права в файловой базе, можно использовать:
- Встроенный Конфигуратор (меню
Администрирование → Пользователи). - Внешние обработки, например, "Просмотр прав пользователей" (доступны на Инфостарте).
- Прямой доступ через OLE/COM (для опытных разработчиков).
⚠️ Внимание: Прямое редактирование файловой базы (например, через hex-редакторы) может привести к её повреждению. Все изменения прав должны выполняться через штатные средства 1С или проверенные обработки.
Для резервного копирования прав пользователей в файловой базе достаточно скопировать файл .1CD — все настройки хранятся внутри него.
Хранение прав в клиент-серверной версии (SQL)
В клиент-серверной версии (например, с использованием Microsoft SQL Server или PostgreSQL) права пользователей хранятся в отдельных таблицах базы данных. Это позволяет гибко управлять доступом и интегрировать 1С с другими системами.
Основные таблицы, отвечающие за права:
| Таблица | Описание | Ключевые поля |
|---|---|---|
_Users |
Хранит список пользователей и их атрибуты (имя, пароль, активность). | _IDRRef, _Description, _PasswordHash |
_UserRoles |
Связывает пользователей с ролями (многие ко многим). | _User_IDRRef, _Role_IDRRef |
_Roles |
Содержит описание ролей и их прав. | _IDRRef, _Description, _Data (XML с правами) |
_RoleRights |
Хранит конкретные права доступа для ролей (опционально, зависит от версии). | _Role_IDRRef, _ObjectType, _Right |
Особенности SQL-хранения:
- 🔑 Пароли пользователей хранятся в виде хэшей (например,
SHA-256в новых версиях). Восстановить оригинальный пароль невозможно, только сбросить. - 📄 Права ролей часто хранятся в XML-поле
_Dataтаблицы_Roles. Это бинарные данные, которые можно расшифровать через 1С или специализированные утилиты. - 🔄 При изменении прав через конфигуратор платформа автоматически обновляет соответствующие таблицы в SQL.
Для просмотра прав в SQL-версии можно использовать:
-- Пример запроса для получения списка пользователей и их ролей
SELECT
u._Description AS UserName,
r._Description AS RoleName
FROM
_Users u
JOIN
_UserRoles ur ON u._IDRRef = ur._User_IDRRef
JOIN
_Roles r ON ur._Role_IDRRef = r._IDRRef
WHERE
u._Marked = 0x00; -- Только не помеченные на удаление
⚠️ Внимание: Прямое редактирование таблиц_Usersили_Rolesчерез SQL может нарушить целостность данных. Все изменения должны проходить через механизмы 1С, иначе возможны ошибки при следующем обновлении конфигурации.
Как права синхронизируются между пользователями и ролями
Процесс назначения прав в 1С строится на трёх ключевых механизмах:
- Наследование ролей — пользователь получает все права от назначенных ему ролей. Если роль изменяется, права пользователя обновляются автоматически.
- Кумулятивность прав — если пользователю назначены несколько ролей, он получает объединённое множество прав. Например, роль
"Бухгалтер"даёт доступ к документам, а роль"Администратор"— ко всем объектам. - Приоритет запретов — если одна роль разрешает действие, а другая запрещает, то запрет имеет приоритет. Это правило действует даже если запрет установлен косвенно (например, через роль, унаследованную от другой роли).
Пример наследования:
- 📌 Роль
"Менеджер по продажам"имеет правоЧтениедля справочника"Контрагенты". - 📌 Роль
"Старший менеджер"наследуется от"Менеджер по продажам"и добавляет правоРедактирование. - 📌 Пользователь
"Иванов"имеет роль"Старший менеджер"→ он получает оба права.
Для анализа итоговых прав пользователя можно использовать встроенную обработку "Права пользователей" (доступна в конфигураторе через меню Администрирование → Права пользователей). Она показывает результирующий набор прав с учётом всех ролей и наследования.
Что будет если удалить роль, назначенную пользователям?
При удалении роли из конфигурации платформа автоматически удаляет её из списка ролей всех пользователей. Однако если роль была назначена через внешние обработки или прямые SQL-запросы, могут остаться "битые" ссылки, которые приводят к ошибкам при авторизации.
Права на уровне конфигурации: где их искать
Права доступа в 1С не только хранятся в базе данных, но и описываются в метаданных конфигурации. Это позволяет гибко управлять доступом при обновлениях и переносе между базами.
Где искать права в конфигурации:
- 🛠️ Дерево метаданных — раздел
"Роли"содержит все определенные в конфигурации роли. Здесь можно увидеть, какие объекты и действия доступны для каждой роли. - 📂 Объекты конфигурации — у каждого справочника, документа или отчёта есть вкладка
"Права", где указывается, какие роли имеют доступ к этому объекту. - 🔧 Модули объектов — иногда права проверяются программно через функции вида
ПраваДоступа.ПроверкаПрав().
Пример структуры ролей в конфигураторе:
// Путь к ролям в дереве метаданных:
Роли
├── ПолныеПрава
├── Бухгалтер
│ ├── Права на документы "ПоступлениеТоваров"
│ └── Права на справочник "Номенклатура"
└── Менеджер
├── Права на справочник "Контрагенты" (только чтение)
└── Права на документ "ЗаказКлиента" (полный доступ)
Важно: при обновлении конфигурации права ролей не всегда сохраняются автоматически. Если в новой версии добавлены объекты, для них нужно вручную настроить доступ в ролях. Это частая причина ошибок после обновлений.
☑️ Проверка прав после обновления конфигурации
Инструменты для анализа и редактирования прав
Для работы с правами в 1С существует несколько инструментов — от встроенных до сторонних решений. Выбор зависит от задачи:
| Инструмент | Назначение | Ограничения |
|---|---|---|
| Конфигуратор (встроенный) | Просмотр и редактирование ролей, пользователей, прав на объекты. | Нет массовых операций, сложно анализировать пересечения прав. |
| "Права пользователей" (стандартная обработка) | Показывает результирующие права пользователя с учётом всех ролей. | Не позволяет редактировать права, только просматривать. |
| "Универсальный отчёт по правам" (Инфостарт) | Формирует отчёты по правам в удобном виде (Excel, HTML). | Требует настройки, может тормозить на больших базах. |
| "1С:Анализ прав доступа" (от фирмы 1С) | Продвинутый анализ конфликтов прав, наследования, аудит изменений. | Платное решение, требует лицензии. |
Для сложных задач (например, миграции прав между базами) можно использовать выгрузку/загрузку через XML:
// Пример выгрузки ролей в файл:
ПраваДоступа.ВыгрузитьРоли("C:\temp\roles.xml");
// Загрузка ролей из файла:
ПраваДоступа.ЗагрузитьРоли("C:\temp\roles.xml");
При работе с внешними инструментами важно учитывать:
- 🔒 Не все обработки поддерживают последние версии платформы 1С:Предприятие 8.3.20+.
- 📊 Отчёты по правам могут занимать много памяти при анализе крупных конфигураций (например, 1С:ERP).
- 🔄 После массового изменения прав рекомендуется перезапустить сеансы пользователей, чтобы изменения вступили в силу.
Типичные ошибки при работе с правами и как их избежать
Ошибки в настройке прав — одна из самых частых причин сбоев в работе 1С. Рассмотрим типичные проблемы и способы их решения:
- Пользователь не видит объект, несмотря на назначенные права
Причины:
- 🔍 Роль имеет
Запретна объект (приоритетнееРазрешения). - 🔄 Права не обновлены после изменения ролей (нужен перезапуск сеанса).
- 📂 Объект помечен на удаление или скрыт через настройки видимости.
- 🔍 Роль имеет
Решение: проверить роль через обработку "Права пользователей" и убрать лишние запреты.
Причины:
- 🔧 В новой версии добавлены объекты, для которых не настроены права в ролях.
- 📋 Роли не были перенесены при обновлении (если использовалась выборочная загрузка).
Решение: сравнить роли в старой и новой версии, перенести недостающие права.
Причины:
- 🛡️ Наследование прав от другой роли даёт лишние разрешения.
- 🔐 Права настроены на уровне
RLS(Row-Level Security), но фильтры работают некорректно.
Решение: использовать отчёт "Конфликты прав" для выявления пересечений.
⚠️ Внимание: В конфигурациях с RLS (ограничение доступа на уровне записей) права проверяются не только на уровне ролей, но и через программные фильтры. Например, менеджер может видеть только "своих" клиентов. Такие настройки хранятся в модулях объектов и требуют отдельного аудита.
Всегда тестируйте изменения прав на копии рабочей базы. Ошибки в настройке доступа могут заблокировать работу критически важных процессов.
FAQ: Частые вопросы о хранении прав в 1С
Можно ли восстановить удалённую роль?
Если роль была удалена через конфигуратор, её можно восстановить только из резервной копии базы. В файловой версии поможет копия файла .1CD, в SQL-версии — бэкап базы данных. В некоторых случаях помогает анализ журнала транзакций (LDF-файлов в SQL Server), но это требует специальных навыков.
Где хранятся права для внешних пользователей (например, через веб-сервис)?
Права для внешних пользователей (аутентификация через OAuth, AD или веб-сервисы) хранятся в тех же таблицах (_Users, _Roles), но могут дополнительно проверяться через механизмы внешней аутентификации. Например, при интеграции с Active Directory права синхронизируются через модуль УправлениеПользователями.
Как перенести права между базами?
Для переноса прав между базами можно использовать:
- Выгрузку/загрузку ролей через XML (встроенные методы
ПраваДоступа.ВыгрузитьРоли()). - Специализированные обработки, например, "Перенос прав пользователей" с Инфостарта.
- Ручной экспорт/импорт через SQL-запросы (только для опытных администраторов).
Важно: при переносе проверяйте совместимость версий конфигураций — структуры ролей могут отличаться.
Можно ли отключить проверку прав для ускорения работы?
Технически да, но это крайне не рекомендуется. Проверка прав — часть ядра безопасности 1С. Отключение может привести к:
- 🔴 Нарушению целостности данных (пользователи смогут редактировать системные объекты).
- 🔴 Проблемам при обновлении (платформа ожидает, что права настроены корректно).
- 🔴 Нарушению лицензионных соглашений (если речь идёт о типовой конфигурации).
Вместо отключения прав лучше оптимизировать их настройку (например, уменьшить количество ролей или использовать RLS).
Как проверить, какие права есть у текущего пользователя?
Для проверки прав текущего пользователя можно использовать:
- В пользовательском режиме: меню
Справка → О программе → Права пользователя. - В конфигураторе: обработка
"Права пользователей"(указав своего пользователя). - Через код:
Сообщить(ПраваДоступа.ТекущийПользователь().Права());