Права доступа 1С отвечают на простой вопрос: что каждый сотрудник может видеть и менять в базе. Кладовщику не нужны закупочные цены, бухгалтеру одной фирмы — документы другой, менеджеру — чужие клиенты. В типовых конфигурациях на платформе 8.3 большую часть таких задач закрывает настройка, без программиста. Ниже — схема для БП 3.0, УТ 11 и ERP 2, разбор типовых задач и граница, за которой настройки уже не хватает.
В актуальных типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP, Комплексная автоматизация, УНФ, Розница) права пользователей в 1С 8.3 настраиваются через подсистему «Управление доступом» из БСП. Схема везде одна, в четыре уровня:
| Уровень | Что это | Кто настраивает |
|---|---|---|
| Роль | Набор разрешений на объекты базы: читать, добавлять, изменять, проводить. Создаётся в конфигураторе | Программист |
| Профиль группы доступа | Набор ролей под должность («менеджер по продажам», «кладовщик») и перечень того, по чему можно ограничивать: организации, склады, клиенты | Администратор. Поставляемые профили приходят вместе с конфигурацией |
| Группа доступа | Профиль плюс конкретные сотрудники плюс конкретные значения: «организации — только ООО „Ромашка“» | Администратор |
| Пользователь | Входит в одну или несколько групп и получает сумму их прав | Администратор |
Из схемы следуют два правила:
Как создать роль в конфигураторе, разобрано в статье про роли 1С. Старые конфигурации на обычных формах (например, УТ 10.3) устроены иначе: роли там обычно назначают прямо в конфигураторе.
В Бухгалтерии права доступа пользователя настраиваются в упрощённом режиме: групп доступа в интерфейсе не видно, профили отмечают прямо в карточке сотрудника.
Чтобы бухгалтер работал только со своей организацией:
В Управлении торговлей 11, ERP 2 и КА 2 группы доступа видны явно, всё собрано в разделе НСИ и администрирование → Настройки пользователей и прав. Порядок такой:



Результат проверяйте отчётом по правам доступа из карточки пользователя: он показывает, что сотрудник может читать и изменять. Название отчёта зависит от версии БСП.
Не заводите персональный профиль: посмотрите, в каких группах доступа состоит коллега, и включите новичка в те же. Когда человек уходит, снимите в карточке флажок «Вход в программу разрешён», а не удаляйте пользователя: на нём висят документы и история изменений.
В УТ 11 и ERP для этого есть группы доступа партнёров: клиентов распределяют по группам (по отделам, регионам), а в группе доступа менеджера разрешают только нужные. Если такое деление устраивает, программист не нужен.
Вариант строже — «только документы, где он ответственный» — типовыми настройками обычно не закрывается. Это доработка: ограничение на уровне записей с условием вида Менеджер = &ТекущийПользователь, сделанное так, чтобы не пострадали скорость работы и обновления.
Закупочная цена хранится сразу в нескольких местах:
Первый шаг — уберите из профиля менеджера роли на закупочные документы и отчёты по себестоимости. Если цены всё равно видны, они приходят из общих данных: роль открывает регистр цен целиком, со всеми видами цен. В УТ 11 и ERP проверьте, есть ли в профиле на вкладке «Ограничения доступа» вид доступа «Виды цен». Если есть, закупочный вид цен закрывается настройкой при включённом ограничении на уровне записей. Если нет — нужно ограничение по полю вида цен или доработка конкретных форм и отчётов.
Кладовщику нужен документ поступления (количество, склад), но не цены. Закрыть документ целиком нельзя, поэтому цены прячут в форме — пример кода ниже.
| Задача | Настройкой | Доработкой |
|---|---|---|
| Дать права «как у коллеги» | Да, включить в те же группы | — |
| Ограничить организации, склады | Да, виды доступа в профиле | — |
| Запретить правку закрытого периода | Да, настройка «Даты запрета изменения» | — |
| Только свои документы | Как правило, нет | Ограничение на уровне записей |
| Скрыть колонку (цена, сумма) | Нет | Расширение формы и роль-флаг |
| Закрыть один вид цен | В УТ и ERP — если есть вид доступа «Виды цен»; в БП — нет | Ограничение по виду цен |
| Права на объект из доработки | Нет | Своя роль и включение её в профили |
Пример для кладовщика. В расширении создаём роль Расш_ПросмотрЗакупочныхЦен без единого права — это флаг. Администратор добавляет её в профили тех, кому цены видеть можно. Форму поступления заимствуем в расширение, добавляем в неё реквизит Расш_СкрыватьЦены (Булево) и в палитре свойств назначаем обработчик ПриСозданииНаСервере с типом вызова «После».
// Модуль формы документа поступления товаров, заимствованной в расширение.
// Обработчик назначен в палитре свойств формы расширения:
// событие ПриСозданииНаСервере, тип вызова «После».
// Роль Расш_ПросмотрЗакупочныхЦен создана в этом же расширении и не содержит
// ни одного права: это флаг для профилей тех, кому цены видеть можно.
// Расш_СкрыватьЦены — реквизит формы (Булево), добавленный в расширении.
// Имена элементов формы проверьте в своей конфигурации: они отличаются.
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// БСП: Истина, если есть хотя бы одна из ролей или полные права.
Расш_СкрыватьЦены = Не Пользователи.РолиДоступны("Расш_ПросмотрЗакупочныхЦен");
Если Не Расш_СкрыватьЦены Тогда
Возврат;
КонецЕсли;
// Колонки таблицы товаров и итоговые поля внизу формы.
ИменаЭлементов = "ТоварыЦена, ТоварыСумма, ТоварыСуммаНДС, ТоварыСуммаСНДС"
+ ", ИтогиВсего, ИтогиНДС";
Расш_СкрытьЭлементы(ИменаЭлементов);
КонецПроцедуры
&НаСервере
Процедура Расш_СкрытьЭлементы(ИменаЭлементов)
// Элемент УО создаём только когда найдено хотя бы одно поле:
// с пустым списком оформляемых полей оформление применится ко всем полям формы.
ЭлементУО = Неопределено;
Для Каждого ИмяЭлемента Из СтрРазделить(ИменаЭлементов, ",", Ложь) Цикл
Элемент = Элементы.Найти(СокрЛП(ИмяЭлемента));
Если Элемент = Неопределено Тогда
Продолжить;
КонецЕсли;
Элемент.Видимость = Ложь;
// Условное оформление типовой код формы не сбрасывает: если он снова
// включит колонку, значения в колонке таблицы всё равно не отобразятся.
// Для полей вне таблиц (итоги) на условное оформление не рассчитывайте:
// их повторно скрывает перехват типовой процедуры, см. ниже.
Если ЭлементУО = Неопределено Тогда
ЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементУО.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
ПолеУО = ЭлементУО.Поля.Элементы.Добавить();
ПолеУО.Поле = Новый ПолеКомпоновкиДанных(Элемент.Имя);
КонецЦикла;
КонецПроцедуры
Разбор ключевых мест:
Пользователи.РолиДоступны — функция общего модуля Пользователи из БСП. В отличие от платформенной РольДоступна, она учитывает полные права: администратору роль-флаг не нужен. Имена ролей передаются строкой через запятую.&Перед, &После, &Вместо (платформа 8.3.9+) нужны для обычных процедур модуля формы — пример ниже.Элементы.Найти вместо обращения через точку: имена колонок отличаются в разных конфигурациях, а несуществующий элемент через точку даст ошибку при открытии формы.Видимость = Ложь мало: типовой код формы сам управляет колонками сумм и НДС (например, при смене «Цена включает НДС») и может включить их снова. Условное оформление он не трогает, и значения в колонках останутся скрытыми.СтрРазделить доступна с платформы 8.3.6. Префикс Расш_ у роли, реквизита и методов защищает от совпадения с именами типовой конфигурации.С итогами внизу формы («Всего», «НДС») сложнее: условное оформление рассчитано на колонки таблиц, и итоги скрывает только Видимость = Ложь. Если типовой код включает их снова, повторите скрытие перехватом &После типовой процедуры управления видимостью или скройте всю группу итогов:
// Тот же модуль формы в расширении. Имя, параметры и директиву компиляции
// перехватываемой процедуры скопируйте из типового модуля формы:
// УправлениеФормой(Форма) здесь — пример. Аннотации — с платформы 8.3.9.
&НаКлиентеНаСервереБезКонтекста
&После("УправлениеФормой")
Процедура Расш_УправлениеФормой(Форма)
Если Не Форма.Расш_СкрыватьЦены Тогда
Возврат;
КонецЕсли;
// Типовая процедура могла снова показать итоги: скрываем их повторно.
// Имена итоговых полей — из вашей формы.
Для Каждого ИмяЭлемента Из СтрРазделить("ИтогиВсего,ИтогиНДС", ",", Ложь) Цикл
Элемент = Форма.Элементы.Найти(ИмяЭлемента);
Если Элемент <> Неопределено Тогда
Элемент.Видимость = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Проверьте и остальные места: колонку суммы в списке документов, печатные формы. И главное: это скрытие в интерфейсе, а не защита данных — в отчётах и других формах цены останутся доступны, если роли это разрешают. Настоящая защита — роли или ограничение на уровне записей.
После увольнений и перестановок проверьте, у кого какие права. Участников групп с профилями выведет запрос из внешней обработки под администратором:
// Модуль формы внешней обработки. Вызов — из клиентской команды формы.
&НаСервереБезКонтекста
Процедура ВывестиУчастниковГруппДоступа()
// ПРЕДСТАВЛЕНИЕ() отдаёт готовые строки одним запросом. Если выбрать ссылки,
// СтрШаблон будет дочитывать представление каждой ссылки отдельным обращением к базе.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(ГруппыДоступаПользователи.Пользователь) КАК Участник,
| ПРЕДСТАВЛЕНИЕ(ГруппыДоступаПользователи.Ссылка) КАК ГруппаДоступа,
| ПРЕДСТАВЛЕНИЕ(ГруппыДоступаПользователи.Ссылка.Профиль) КАК Профиль
|ИЗ
| Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
|ГДЕ
| НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления
| И НЕ ГруппыДоступаПользователи.Ссылка.Профиль.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| ГруппыДоступаПользователи.Пользователь.Наименование,
| ГруппыДоступаПользователи.Ссылка.Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("%1: группа ""%2"", профиль ""%3""",
Выборка.Участник, Выборка.ГруппаДоступа, Выборка.Профиль));
КонецЦикла;
КонецПроцедуры
Участником может быть и группа пользователей: тогда права получают все её члены.
РАЗРЕШЕННЫЕ читает записи, закрытые ограничением на уровне записей, и вместо тихой фильтрации падает. В своих отчётах и обработках пишите ВЫБРАТЬ РАЗРЕШЕННЫЕ. Подробнее — в статье о нарушении прав доступа.Профиль отвечает на вопрос «что можно делать» — это набор ролей. Группа отвечает на вопрос «кому и в каких пределах» — участники и конкретные организации, склады, группы клиентов. Один профиль можно использовать в нескольких группах с разными ограничениями.
Не всегда. Если раздел не виден никому, включая администратора, скорее всего, выключена функциональность в настройках программы. Если не видит только этот сотрудник — проверьте отчётом по правам, какой роли ему не хватает.
Поставляемые профили обновляются вместе с конфигурацией, в них могут появиться новые роли. Ваши копии профилей не обновляются: новые роли в них добавляют вручную.
Да. Соберите профиль из ролей чтения нужных разделов и не включайте сотрудника в группы с правом изменения, иначе права сложатся.
Если задача укладывается в профили, группы и виды доступа, настроить права доступа в 1С можно самостоятельно по этой инструкции. Скрыть отдельные поля, ограничить «только свои документы» или закрыть закупочные цены везде — уже доработка с ролями, ограничениями на уровне записей и проверкой под каждым профилем. Такие задачи делают на услуге настройки прав доступа 1С: опишите, кто что должен видеть, и разместите задачу — оценка бесплатная, ответ в течение рабочего дня.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.