Почему один пользователь видит документ, а другой нет: ищем разницу в правах

· 9 мин

Содержание

Чтобы сравнить права двух пользователей в 1С 8.3, откройте Администрирование → Настройки пользователей и прав → Пользователи, в карточке каждого перейдите по ссылке «Права доступа » и сопоставьте списки групп доступа. Если группы совпадают, а доступ всё равно разный, сравнивайте значения ограничений в самих группах доступа и личные настройки. Роли в Конфигураторе — последний уровень проверки, для расследований.

Типичная ситуация: бухгалтер Иванова проводит реализацию, а её коллега Петрова получает Недостаточно прав для просмотра данных. Обе «вроде бы с одинаковыми правами». Разница почти всегда находится за 10–15 минут, если идти от общего к частному. Порядок ниже подходит для БП 3.0, ЗУП 3.1, УТ 11 и других конфигураций на Библиотеке стандартных подсистем (БСП).

Как устроены права доступа в 1С 8.3

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

СлойГде настраиваетсяЧто определяет
РольКонфигуратор, ветка «Роли»Какие объекты можно читать, менять, проводить
Профиль группы доступаАдминистрирование → Настройки пользователей и прав → Профили групп доступаНабор ролей и виды доступа
Группа доступаАдминистрирование → Настройки пользователей и прав → Группы доступаУчастники и значения ограничений (какие организации, склады)
Ограничение на уровне записей (RLS)Текст ограничений в ролях + значения в группахКакие именно записи видит пользователь

Связка работает так. Профиль — это шаблон: «Бухгалтер», «Кладовщик», «Кадровик». Группа доступа — профиль, применённый к конкретным людям с конкретными значениями. Например, группа «Бухгалтеры ООО Ромашка» на профиле «Бухгалтер» с доступом только к одной организации.

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

В конфигурациях на БСП роли пользователю не назначают вручную. Программа сама выставляет их по составу групп доступа. Поэтому сравнивать нужно в первую очередь группы, а не роли.

Какой способ сравнения выбрать

СпособКогда подходитЧто покажетЧего не покажет
Карточка пользователяПервая проверка, 2–3 минутыСостав групп доступаРоли, выданные в Конфигураторе
Отчёт по правамГруппы похожи, нужна детализацияПрава на каждую таблицуЛичные настройки форм
Конфигуратор и кодОтчёт расхождений не нашёлФактические роли в базеЗначения ограничений в группах
Группы доступа (виды доступа)Документы видны частичноРазрешённые организации, складыПрава на объекты целиком

Что собрать перед сравнением прав пользователей

Без подготовки сравнение превращается в перебор. Соберите исходные данные заранее.

  1. 📝 Точный симптом. Текст ошибки дословно, название документа или отчёта, действие: открыть, записать, провести, распечатать.
  2. 👥 Имена обоих пользователей так, как они записаны в справочнике «Пользователи», и их имена для входа.
  3. 🏢 Данные, на которых ошибка. Организация, склад, подразделение в документе. Это пригодится при проверке RLS.
  4. 👤 Группы пользователей. Посмотрите, в каких группах пользователей состоят оба. Группу пользователей можно включить в группу доступа целиком, и человек получит права «по наследству».
  5. 🔑 Ваши собственные права. Для сравнения нужен профиль «Администратор» или роль «Полные права». С обычными правами часть отчётов недоступна.

Не проверяйте права, временно добавляя пользователю роль «Полные права». Это стирает следы: после такой правки уже не понять, чего ему не хватало. Сначала зафиксируйте разницу, потом меняйте.

Сравнение прав через карточку пользователя и отчёт «Права доступа»

Этот способ закрывает большинство случаев и не требует Конфигуратора.

Шаг 1. Сравните группы доступа

Откройте список Администрирование → Настройки пользователей и прав → Пользователи. Откройте карточку первого пользователя и перейдите по ссылке «Права доступа». Там видно, в каких группах доступа он состоит. Повторите для второго.

Выпишите обе колонки рядом. Если у Ивановой есть группа «Бухгалтеры — проведение», а у Петровой нет, причина найдена.

Шаг 2. Постройте отчёт по правам

Если группы на вид одинаковые, нужен отчёт. В списке пользователей в группе команд отчётов есть отчёт «Права доступа». В новых версиях БСП рядом есть отчёт «Анализ прав доступа» с вариантами по пользователю и по таблице.

Как работать с отчётом:

  1. Сформируйте его по первому пользователю.
  2. Сохраните результат в файл: в формате .xlsx или .txt.
  3. Повторите для второго пользователя.
  4. Сравните файлы.

Для сравнения текстовых файлов подойдёт штатная команда Windows:

fc /n C:\Temp\ivanova.txt C:\Temp\petrova.txt > C:\Temp\raznica.txt

Ключ /n выводит номера строк — так легче найти объект с разными правами. В Excel удобнее поставить два отчёта на соседние листы и сравнить колонки через условное форматирование.

Шаг 3. Проверьте отчёт по нужному объекту

Если известен конкретный документ, удобнее вариант отчёта «по таблице»: выбираете, например, документ «Реализация (акт, накладная, УПД)» и видите всех пользователей с правами на него. Оба человека окажутся в одной таблице, разница видна сразу.

Что показало сравнение?

Как сравнить роли пользователей в Конфигураторе

Конфигуратор показывает «сырые» роли, которые реально назначены пользователю в информационной базе. Это нужно, когда отчёт молчит, а разница есть.

Список ролей пользователя

  1. Откройте базу в режиме Конфигуратора.
  2. Выберите Администрирование → Пользователи.
  3. Откройте свойства первого пользователя, вкладка «Прочие». Галочками отмечены его роли.
  4. Откройте рядом свойства второго пользователя и сравните списки.

Список ролей длинный, в БП их больше сотни. Сравнивать глазами неудобно, поэтому ниже есть код, который делает это сам.

Не правьте роли пользователей в Конфигураторе, если конфигурация на БСП. Программа перезапишет их при следующей записи группы доступа или профиля. Кроме того, роль, выданная в обход групп, не видна в отчётах по правам — следующий администратор её не найдёт.

Права самой роли

Если нужно понять, что именно даёт роль, откройте её в дереве конфигурации, ветка «Общие → Роли». В редакторе прав слева объекты, справа галочки: «Чтение», «Добавление», «Изменение», «Проведение», «Просмотр» и другие. Удобно сравнивать роли таблицей через команду «Все роли» в контекстном меню ветки «Роли»: по строкам объекты, по колонкам роли.

Сравнение ролей кодом

Код ниже выводит только те роли, которые есть у одного пользователя и отсутствуют у другого. Его можно вставить во внешнюю обработку или выполнить в консоли кода от имени администратора. На вход — имена для входа, а не полные имена.

&НаСервереБезКонтекста
Процедура СравнитьРолиНаСервере(Имя1, Имя2)

	Пользователь1 = ПользователиИнформационнойБазы.НайтиПоИмени(Имя1);
	Пользователь2 = ПользователиИнформационнойБазы.НайтиПоИмени(Имя2);

	Если Пользователь1 = Неопределено Или Пользователь2 = Неопределено Тогда
		Сообщить("Один из пользователей не найден в информационной базе");
		Возврат;
	КонецЕсли;

	Для Каждого Роль Из Метаданные.Роли Цикл
		Есть1 = Пользователь1.Роли.Содержит(Роль);
		Есть2 = Пользователь2.Роли.Содержит(Роль);
		Если Есть1 <> Есть2 Тогда
			Сообщить(СтрШаблон("%1 (%2): %3 — %4, %5 — %6",
				Роль.Синоним, Роль.Имя,
				Имя1, ?(Есть1, "есть", "нет"),
				Имя2, ?(Есть2, "есть", "нет")));
		КонецЕсли;
	КонецЦикла;

КонецПроцедуры

Если различий нет, процедура ничего не выведет. Это тоже результат: значит, разница в ограничениях на уровне записей или в настройках.

Проверить право на конкретный объект можно функцией ПравоДоступа. Например, ПравоДоступа("Проведение", Метаданные.Документы.РеализацияТоваровУслуг, Пользователь1) вернёт Истина или Ложь. Учтите: функция отвечает, есть ли право в принципе, и не учитывает ограничения на уровне записей.

Ограничения на уровне записей: почему права «одинаковые», а данные разные

Самая частая загадка: роли совпадают, отчёт по правам одинаковый, но Петрова не видит документы второй организации. Это ограничение доступа на уровне записей, RLS.

Как оно работает в типовых:

  1. В Администрирование → Настройки пользователей и прав включён флажок ограничения доступа на уровне записей. Без него ограничения не действуют вовсе.
  2. В профиле группы доступа перечислены виды доступа: «Организации», «Склады», «Группы партнёров» и другие — набор зависит от конфигурации.
  3. Для каждого вида в профиле выбрано «Все разрешены» или «Все запрещены».
  4. Конкретные значения — исключения из этого правила — задаются уже в группе доступа.

Вот где прячется разница. Иванова и Петрова на одном профиле «Бухгалтер», но в разных группах доступа. В группе Ивановой вид «Организации» — «Все разрешены». В группе Петровой — «Все запрещены» с исключением для одной организации.

Как проверить

  1. Откройте обе группы доступа, вкладку с видами доступа.
  2. Сравните режим по каждому виду: разрешены все или запрещены все.
  3. Сравните списки значений-исключений.
  4. Проверьте документ, на котором ошибка: его организация, склад или контрагент должны попадать в разрешённые значения.

Если пользователь состоит в двух группах доступа, ограничения тоже складываются. Документ виден, если его разрешает хотя бы одна группа, в профиле которой есть нужная роль.

Пример расследования

Петрова не видит реализацию от ООО «Север». Проверка заняла четыре шага: группы доступа у неё и у Ивановой разные; в группе Петровой вид «Организации» настроен как «Все запрещены»; в исключениях только ООО «Юг»; ООО «Север» туда не добавляли. Решение — добавить организацию в значения группы или включить Петрову в группу Ивановой, если ей действительно нужны обе фирмы.

После изменения значений доступа в больших базах программа пересчитывает служебные данные доступа фоновым заданием. Новые права могут появиться не мгновенно. Пусть пользователь перезапустит сеанс.

Что ещё отличается у пользователей, кроме прав

Часть «разницы в правах» на деле правами не является. Эти настройки проверьте до того, как переделывать группы доступа.

  • 🗓️ Даты запрета изменения. Их задают общей датой или отдельно по пользователям. Если у Петровой своя дата запрета, она не проведёт документ прошлого периода, хотя права на проведение у неё есть.
  • 🖥️ Настройки форм. Пользователь мог скрыть колонку, кнопку или поле через «Ещё → Изменить форму». Права при этом в порядке.
  • 📂 Настройки интерфейса. Скрытые разделы и команды панели навигации выглядят как «нет доступа».
  • 🚪 Флажок входа в программу. Если вход запрещён, пользователь не войдёт вовсе, при любых группах.
  • 🌐 Внешний пользователь. Партнёру или контрагенту права выдаются через отдельные профили для внешних пользователей. Сравнивать его с сотрудником бессмысленно.

Персональные настройки удобно сравнить и выровнять через Администрирование → Настройки пользователей и прав → Персональные настройки пользователей: там можно посмотреть, скопировать и очистить настройки одного пользователя другому.

Где чаще всего ошибаются при сравнении прав

  • ❌ Смотрят только роли. Две учётные записи с одинаковыми ролями видят разные данные из-за RLS. Роли — половина картины.
  • ❌ Забывают про группы пользователей. Человек не числится в группе доступа напрямую, но получает права через группу «Бухгалтерия». В карточке это легко пропустить.
  • ❌ Выравнивают права копированием профиля. Новый профиль «Бухгалтер 2» с одной лишней ролью через год превращается в десяток неотличимых профилей. Лучше отдельная группа доступа с маленьким дополнительным профилем.
  • ❌ Сравнивают в разных базах. Права в рабочей и тестовой базе расходятся после любой правки. Сверяйте в той базе, где ошибка.
  • ❌ Не ждут обновления доступа. Права поменяли, а пользователь не перезашёл. Он продолжает работать со старыми.

Частые вопросы о сравнении прав

Можно ли сделать права одного пользователя такими же, как у другого?
Да. Включите второго пользователя в те же группы доступа, что и первого. Роли подтянутся автоматически. Личные настройки форм при этом не переносятся — их копируют отдельно.
Почему администратор не видит роль, назначенную в Конфигураторе, в отчётах программы?
Отчёты БСП строятся по группам доступа. Роль, выданная напрямую в Конфигураторе, в группах не значится, поэтому в отчётах её нет. Найти её можно сравнением ролей в Конфигураторе или кодом.
Нужен ли монопольный доступ к базе, чтобы сравнить права?
Нет. Просмотр карточек, групп доступа и отчётов работает при работающих пользователях. Изменение групп доступа тоже не требует выгонять людей из базы.
Как сравнить права пользователя в двух разных базах?
Сформируйте отчёт по правам в каждой базе от одного и того же пользователя, сохраните оба в файлы и сравните. Если отличаются сами роли, причина часто в разных релизах конфигурации.
Почему после добавления в группу доступа ничего не изменилось?
Пользователь работает в старом сеансе. Попросите его закрыть программу и войти заново. В больших базах дождитесь окончания фонового обновления доступа.