Работа в 1С:Предприятие часто требует гибкой настройки прав доступа — от простого добавления пользователя до тонкой кастомизации ролей для разных отделов. Без правильно настроенных прав сотрудники сталкиваются с ошибками типа «Отказано в доступе», а администраторы — с рисками утечки данных. Эта статья поможет разобраться, как расширить права в 1С безопасно и эффективно, избегая типичных ошибок.
Мы рассмотрим не только стандартные методы через конфигуратор, но и продвинутые техники: настройку ролей на уровне записей, использование дополнительных отборов, а также работу с правами через Управляемые формы и Обычные формы. Особое внимание уделим механизму «Полные права» и его альтернативам — они часто становятся источником проблем при аудите безопасности.
Если вы администратор, бухгалтер или разработчик, работающий с 1С, эта инструкция поможет сэкономить часы на поиск решений. Все примеры актуальны для последних версий платформы 1С:Предприятие 8.3 (включая 8.3.23 и новее), но majority принципов применимы и к более ранним релизам.
1. Базовые понятия: роли, пользователи и профили доступа
Прежде чем расширять права, важно понять терминологию 1С. Роль — это набор разрешений на выполнение действий (например, «Просмотр справочников» или «Редактирование документов»). Пользователь — учётная запись, которой назначаются роли. Профиль доступа (в управляемых формах) — упрощённый интерфейс для назначения ролей без глубоких знаний конфигуратора.
В 1С есть три уровня прав:
- 🔹 Интерактивные права — что пользователь может делать в интерфейсе (кнопки, меню, команды).
- 🔹 Права на данные — какие объекты (документы, справочники) можно просматривать или редактировать.
- 🔹 Права на администрирование — доступ к конфигуратору, обновлениям, резервным копиям.
Ошибка многих администраторов — назначать роль «Полные права» всем подряд. Это упрощает настройку, но создаёт риски:
- 🚨 Пользователи могут случайно (или намеренно) изменить критичные данные.
- 🚨 Сложно отследить, кто и когда внёс изменения.
- 🚨 Нарушаются требования ФЗ-152 (о персональных данных) и ГОСТ Р ИСО/МЭК 27001 (информационная безопасность).
2. Способы расширения прав через конфигуратор
Основной инструмент для работы с правами — Конфигуратор 1С. Чтобы открыть его, запустите 1С:Предприятие с ключом /Config или выберите режим при старте. Далее перейдите в меню Администрирование → Пользователи.
Шаг 1. Добавление новой роли
Если стандартных ролей недостаточно, создайте свою:
- Откройте ветку
Ролив дереве конфигурации. - Нажмите «Добавить» и укажите имя (например, «
Бухгалтер_Зарплата_Просмотр»). - Вкладка «Права» — отметьте галочками нужные разрешения (например, «Чтение» для справочника «Сотрудники» и документа «Начисление зарплаты»).
- Сохраните конфигурацию (
Ctrl + S) и обновите базу (Конфигурация → Обновить конфигурацию базы данных).
Шаг 2. Назначение ролей пользователю
В списке пользователей выберите учётную запись и на вкладке «Роли» добавьте созданную роль. Для управляемых форм можно использовать профили доступа (Администрирование → Профили доступа), где роли группируются по должностям (например, «Кассир», «Кладовщик»).
☑️ Подготовка к изменению прав в конфигураторе
3. Продвинутые методы: права на уровне записей (RLS)
Row-Level Security (RLS) — механизм, позволяющий ограничивать доступ не только к объектам (например, справочнику «Контрагенты»), но и к конкретным записям в них. Например, менеджер по продажам должен видеть только своих клиентов.
Для настройки RLS:
- Откройте нужный объект (например, справочник «Контрагенты») в конфигураторе.
- Перейдите на вкладку «Права» и нажмите «Добавить ограничение».
- Укажите условие (например,
Менеджер = ТекущийПользователь()). - Назначьте это ограничение роли (например, «
МенеджерПоПродажам»).
Пример кода для ограничения по подразделению:
ОграничениеДоступа.Добавить(
Новый ОграничениеДоступа("Подразделение = &ТекущееПодразделение", "Справочник.Сотрудники")
);
Важно! RLS работает только в режиме управляемого приложения. Для обычных форм потребуется доработка через модули.
Перед применением RLS проверьте производительность: сложные ограничения могут замедлить работу базы при больших объёмах данных.
4. Расширение прав через дополнительные отборы
Если RLS слишком жёсткий, используйте дополнительные отборы. Они позволяют динамически фильтровать данные без изменения конфигурации. Например, можно скрыть документы с пометкой «Конфиденциально» для рядовых пользователей.
Как настроить:
- В модуле объекта (например, документа «Заказ покупателя») добавьте процедуру:
Процедура ПриОткрытии()
Если НЕ ЗначениеЗаполнено(ТекущийПользователь().Роли.Найти("Администратор")) Тогда
Отбор = Новый Структура("ПометкаУдаления, Конфиденциальность", Ложь, Ложь);
УстановитьОтбор(Отбор);
КонецЕсли;
КонецПроцедуры
Преимущества метода:
- 🔧 Не требует изменения конфигурации (можно внедрить через расширение).
- 🔧 Гибко настраивается под любые условия.
Недостатки:
- ⚠️ Отборы сбрасываются при обновлении конфигурации.
- ⚠️ Не защищают данные на уровне СУБД (только в интерфейсе).
5. Типичные ошибки и как их избежать
Даже опытные администраторы допускают ошибки при настройке прав. Вот самые распространённые:
| Ошибка | Последствия | Решение |
|---|---|---|
| Назначение роли «Полные права» неадминистраторам | Риск изменения конфигурации, утечка данных | Создать кастомизированную роль с нужными правами |
| Игнорирование RLS для чувствительных данных | Пользователи видят чужие зарплаты, коммерческие тайны | Настроить ограничения на уровне записей |
| Нетестированные права на тестовом пользователе | Блокировка работы отдела из-за отсутствия доступа | Создать тестового пользователя с копией ролей |
| Отсутствие журнала изменений прав | Невозможно отследить, кто и когда расширил доступ | Вести лог в отдельном регистре сведений |
Пример из практики: В одной компании бухгалтер с ролью «Полные права» случайно удалил все документы за квартал. Восстановление из резервной копии заняло 2 дня. После инцидента ввели правило: роль «Полные права» назначается только двум администраторам, а остальным — кастомизированные роли с правами только на свои разделы.
Что делать, если пользователь потерял доступ после обновления?
Обычно это происходит из-за сброса ролей при обновлении конфигурации. Проверьте:
1. Соответствие ролей в новой версии (меню "Сравнить конфигурации").
2. Наличие пользователя в списке (иногда учётки сбрасываются).
3. Права на новые объекты, добавленные в обновлении.
Если проблема остаётся — восстановите права из резервной копии конфигурации.
6. Альтернативные методы: расширения и внешние обработки
Если изменять конфигурацию нельзя (например, в облачной версии 1С:Fresh), используйте расширения или внешние обработки:
Расширения позволяют добавлять новые роли и права без изменения основной конфигурации. Например, можно создать расширение с ролью «Менеджер_ТолькоПросмотр» и применить его к базе.
Внешние обработки подходят для временного расширения прав. Например, обработка для массового назначения ролей:
// Пример кода для обработки
Пользователи = ПолучаемСписокПользователей();
Для Каждого Пользователь Из Пользователи Цикл
Если НЕ Пользователь.Роли.Найти("НоваяРоль") Тогда
Пользователь.Роли.Добавить(ПолучаемРольПоИмени("НоваяРоль"));
Пользователь.Записать();
КонецЕсли;
КонецЦикла;
⚠️ Внимание: Внешние обработки обходят стандартные механизмы безопасности. Используйте их только для разовых задач и удаляйте после выполнения.
7. Аудит и мониторинг прав доступа
Расширять права мало — нужно контролировать их использование. Для этого:
- 📊 Журнал регистрации (
Администрирование → Журнал регистрации) — отслеживайте, кто и когда получал доступ к критичным данным. - 📊 Отчёты по правам — в 1С:ИТС есть готовые отчёты для анализа текущих ролей.
- 📊 Регулярный аудит — раз в квартал проверяйте актуальность назначенных ролей (например, уволившиеся сотрудники часто остаются в списке пользователей).
Пример запроса для поиска пользователей с избыточными правами:
ВЫБРАТЬ
Пользователи.Имя КАК Пользователь,
Роли.Имя КАК Роль
ИЗ
Справочник.Пользователи КАК Пользователи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваПользователей КАК Права
ПО Пользователи.Ссылка = Права.Пользователь
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Роли КАК Роли
ПО Права.Роль = Роли.Ссылка
ГДЕ
Роли.Имя = "Полные права"
И НЕ Пользователи.ПометкаУдаления
⚠️ Внимание: В облачных версиях 1С (например, 1С:Fresh) часть инструментов аудита может быть ограничена. Уточняйте возможности в личном кабинете.
Регулярный аудит прав доступа снижает риск внутренних утечек данных на 70% (по статистике 1С:ИТС).
FAQ: Частые вопросы по расширению прав в 1С
Можно ли расширить права пользователю без доступа к конфигуратору?
Да, если у вас есть роль с правом «Администрирование пользователей». Перейдите в Администрирование → Пользователи (в режиме предприятия) и назначьте дополнительные роли. В управляемых формах это можно сделать через Профили доступа.
Почему после обновления 1С сбросились права пользователей?
Это происходит, если в новой версии конфигурации изменились идентификаторы ролей или объектов. Перед обновлением всегда делайте резервную копию и тестируйте права на тестовой базе. Для восстановления используйте сравнение конфигураций (Конфигурация → Сравнить конфигурации).
Как ограничить доступ к конкретному документу (например, только для директора)?
Используйте RLS (права на уровне записей) или дополнительные отборы. Для RLS в конфигураторе настройте ограничение по реквизиту (например, «ТолькоДляДиректора = Истина»). Для отборов добавьте проверку в модуль объекта:
Если НЕ ТекущийПользователь().Роли.Найти("Директор") Тогда
Сообщить("Доступ запрещён!");
Возврат;
КонецЕсли;
Что делать, если пользователь видит чужие данные despite RLS?
Проверьте:
- Корректность условия в RLS (возможно, ошибка в коде).
- Наличие роли «Полные права» у пользователя.
- Режим работы базы: RLS не работает в обычном приложении (только в управляемом).
Если проблема остаётся — используйте отладчик (F5 в конфигураторе) для проверки выполнения ограничений.
Как дать временный доступ к базе на 1 день?
Создайте нового пользователя с нужными ролями и установите дату блокировки (Администрирование → Пользователи → Дата блокировки). Альтернатива — внешняя обработка, которая добавляет роль на ограниченный период:
Пользователь.Роли.Добавить(НоваяРоль);
Планировщик.ДобавитьЗадачу("УдалитьРоль", ТекущаяДата() + 86400, "УдалитьРольУПользователя");