Как в 1С:Управление торговлей 10.3 узнать, кто имеет права на чтение и редактирование кассовых документов?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе администрирования 1С часто возникает задача аудита прав доступа. Особенно это актуально для финансовых блоков, таких как «Касса». В конфигурации «Управление торговлей» редакции 10.3 права распределены по ролям, и простому пользователю или начинающему специалисту бывает трудно сопоставить конкретного человека с его фактическими полномочиями на чтение или изменение документов. Разберем подробно, как решить эту задачу несколькими способами: от визуального анализа в Конфигураторе до автоматизированного скрипта.

Способ 1: Визуальный анализ через дерево конфигурации

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

Рассмотрим последовательность действий:

  1. Откроем Конфигуратор и развернем дерево метаданных.
  2. Найдем ветку Документы. Стоит учитывать, что в Конфигураторе нет папки «Денежные средства», как в интерфейсе программы. Нам нужно найти конкретные объекты, относящиеся к кассе. Проанализируем список документов и выделим основные: ПриходныйКассовыйОрдер, РасходныйКассовыйОрдер, ДенежныйЧек, ОбъявлениеНаВзносНаличными.
  3. Нажмем правой кнопкой мыши на нужный документ (например, ПриходныйКассовыйОрдер) и выберем пункт Дополнительно, затем перейдем на вкладку Права.
  4. В открывшемся окне мы увидим список всех ролей, существующих в системе. Пролистаем список и посмотрим, у каких ролей стоят галочки напротив прав Чтение, Просмотр, Изменение и Редактирование.
  5. Выпишем названия этих ролей (например, «Кассир», «ПолныеПрава», «МенеджерПоПродажам»).
  6. Теперь перейдем в меню Администрирование — Пользователи. Открывая каждого пользователя, посмотрим на вкладке Прочие, назначены ли ему выявленные ранее роли.

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

Способ 2: Использование программного скрипта для автоматической проверки

Для того чтобы не перебирать каждого пользователя вручную, мы можем воспользоваться встроенным языком 1С. Напишем код, который сам проверит права каждого активного пользователя на интересующие нас объекты. Проанализируем пример кода, который выводит список пользователей и их права в окно сообщений.

Для выполнения этого кода нам понадобится создать внешнюю обработку или воспользоваться консолью кода. Рассмотрим структуру этого алгоритма:


Юзеры = ПользователиИнформационнойБазы.ПолучитьПользователей();
КассовыеДокументы = Новый Массив;
КассовыеДокументы.Добавить(Метаданные.Документы.ПриходныйКассовыйОрдер);
КассовыеДокументы.Добавить(Метаданные.Документы.РасходныйКассовыйОрдер);
КассовыеДокументы.Добавить(Метаданные.Документы.ДенежныйЧек);

ПраваДоступа = Новый Массив;
ПраваДоступа.Добавить("Чтение");
ПраваДоступа.Добавить("Просмотр");
ПраваДоступа.Добавить("Изменение");
ПраваДоступа.Добавить("Редактирование");

Для каждого Юзер Из Юзеры Цикл
    Для каждого КассовыйДокумент Из КассовыеДокументы Цикл
        Для каждого Право Из ПраваДоступа Цикл
            Если ПравоДоступа(Право, КассовыйДокумент, Юзер) Тогда
                Сообщить("Пользователь: " + Юзер.Имя + " | Документ: " + КассовыйДокумент.Имя + " | Право: " + Право);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

Этот скрипт использует функцию ПравоДоступа(), которая проверяет наличие конкретного права у конкретного пользователя ИБ для заданного объекта метаданных. Это самый точный способ узнать реальное положение дел, так как он учитывает совокупность всех ролей, назначенных человеку.

Способ 3: Создание внешней обработки (инструкция для не-программистов)

Если вы боитесь напрямую работать с кодом, разберем по шагам, как безопасно запустить этот алгоритм, создав временный инструмент в Конфигураторе:

  1. В Конфигураторе зайдем в меню Файл — Новый, выберем Внешняя обработка.
  2. Дадим ей любое имя, например ПроверкаПравКассы.
  3. Перейдем на вкладку Формы и нажмем на значок лупы (создать новую форму). Нажмем «Готово».
  4. На форме создадим кнопку. В свойствах кнопки найдем событие Действие и нажмем на лупу.
  5. Программа предложит создать процедуру. Внутри этой процедуры (между Процедура... и КонецПроцедуры) вставим наш программный код.
  6. Поскольку УТ 10.3 работает на обычных формах, код будет выполняться на стороне клиента без лишних сложностей.
  7. Сохраним файл обработки (.epf) на рабочий стол.
  8. Запустим 1С:Предприятие в обычном режиме, зайдем в Файл — Открыть, выберем нашу обработку и нажмем кнопку на форме.

В нижней части экрана в окне сообщений появится готовый список. Вы сможете скопировать его в Excel для дальнейшего анализа.

Способ 4: Проверка через профили полномочий (в режиме Предприятие)

В типовой конфигурации «Управление торговлей 10.3» реализован механизм дополнительных прав. Выясним, как посмотреть настройки, не прибегая к программированию. Для этого выполним следующие действия:

Зайдем в меню Сервис — Пользователи — Настройка прав доступа. Здесь мы увидим справочник Профили полномочий пользователей. Как правило, администраторы создают профили (например, «Бухгалтер», «Продавец») и внутри них отмечают необходимые Роли. Проанализируем состав этих профилей. Выбрав профиль, мы можем увидеть список пользователей, которым он назначен. Это более «высокоуровневый» способ, но он может не учитывать индивидуальные настройки прав, сделанные напрямую в списке пользователей.

Важное замечание: Ограничение на уровне записей (RLS)

Проанализируем ситуацию, когда у пользователя есть право на «Чтение», но он все равно не видит документы. В УТ 10.3 часто используется механизм RLS (Record Level Security). Это ограничение доступа к конкретным записям базы данных (например, только по определенной организации или кассе).

Выясним причину возможного отсутствия доступа даже при наличии прав:

Таким образом, для получения полной картины нам необходимо не только проверить общие роли через Метаданные, но и убедиться в отсутствии ограничений по конкретным значениям объектов (кассам или организациям).

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

← На главную