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

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

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

Решение 1: Массовое редактирование модулей через командную строку

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

Проанализируем последовательность действий. Платформа 1С позволяет работать с конфигурацией через пакетный режим командной строки. Нам понадобятся параметры /DumpConfigFiles и /LoadConfigFiles с ключом -Module.

  1. Создадим папку на диске (например, C:\ConfModules).
  2. Выполним выгрузку модулей из конфигуратора:

"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /F "ПутьКВашейБазе" /DumpConfigFiles "C:\ConfModules" -Module /Visible

После выполнения этой команды в папке появятся текстовые файлы всех модулей конфигурации. Теперь мы можем воспользоваться любым текстовым редактором, поддерживающим поиск и замену во всех файлах (например, VS Code или Notepad++), чтобы добавить в начало модулей форм отчетов проверку прав.

Разберем пример кода, который нужно вставить в процедуру ПриОткрытии (если отчет имеет форму):


Процедура ПриОткрытии()
    // Проверяем, является ли пользователь тем самым «избранным»
    ИмяПользователя = ИмяПользователя();
    Если ИмяПользователя <> "ИмяДиректора" Тогда
        Предупреждение("Доступ к отчетам ограничен руководством.");
        Отказ = Истина;
        Возврат;
    КонецЕсли;
КонецПроцедуры

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


"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /F "ПутьКВашейБазе" /LoadConfigFiles "C:\ConfModules" -Module /UpdateDBCfg /Visible

Важный нюанс: этот метод эффективен только для отчетов, имеющих формы. Если отчет строится исключительно на схеме компоновки данных (СКД) без программного кода в модуле формы, этот способ может не сработать.

Решение 2: Массовое изменение ролей через XML

Более правильным с точки зрения архитектуры 1С является ограничение прав на уровне метаданных. Чтобы не снимать права вручную, воспользуемся выгрузкой конфигурации в файлы XML (доступно в версиях платформы 8.3).

Рассмотрим этот алгоритм по шагам:

  1. Выгружаем конфигурацию в XML файлы с помощью команды DumpConfigurationToFiles.
  2. Находим файлы, отвечающие за роли пользователей (папка Roles).
  3. Используем регулярные выражения для поиска и замены. Нам нужно найти все вхождения прав Read (Чтение) для объектов Report (Отчет) и установить значение в false.

Пример регулярного выражения для поиска в XML файла роли:


<Item>
    <Name>Report.*</Name>
    <Right>
        <Name>Read</Name>
        <Value>true</Value>

Меняем Value на false. После массовой замены загружаем конфигурацию обратно через LoadConfigurationToFiles. Это позволит мгновенно «обесточить» отчеты во всех ролях сразу.

Решение 3: Ограничение через интерфейсы (визуальный метод)

В «толстом клиенте» (УТ 10.3) доступность отчетов для пользователя часто определяется назначенным ему интерфейсом. Если мы хотим, чтобы отчеты просто исчезли из глаз, но технически права остались (например, для программных вызовов), мы можем пойти по пути настройки интерфейсов.

Выясним, как это сделать быстрее:

  1. Создаем в конфигураторе новый интерфейс (например, «ОграниченныйИнтерфейс»).
  2. Не добавляем в него ветку «Отчеты».
  3. Назначаем этот интерфейс всем пользователям, кроме руководителя.
  4. Удаляем у пользователей роль Полные права, так как она позволяет переключать интерфейсы и видеть все меню.

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

Решение 4: Использование точки входа в Универсальный отчет

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

Проанализируем ситуацию: если мы внесем изменения в модуль объекта или модуль формы самого Универсального отчета, это автоматически заблокирует все отчеты, которые его используют.

Найдем в конфигураторе отчет УниверсальныйОтчет, откроем его модуль объекта и добавим проверку в процедуру инициализации:


// В начале основной процедуры формирования или инициализации
Если НЕ РольДоступна("ПолныеПрава") Тогда
    ВызватьИсключение "Доступ к формированию отчетов запрещен администратором.";
КонецЕсли;

Почему это удобно? Вам не нужно править сотни объектов. Достаточно изменить один базовый отчет, и 90% аналитики в базе станет недоступно для всех, у кого нет роли Полные права.

Важные замечания по безопасности и ролям

При реализации любого из вышеперечисленных методов следует помнить о ключевых правилах работы системы прав 1С:

Подводя итог, наиболее эффективным и «чистым» методом для УТ 10.3 является комбинация снятия прав в ролях через XML-редактирование и внедрение проверки в Универсальный отчет. Это гарантирует, что пользователи не смогут обойти запрет ни через интерфейс, ни через прямые ссылки на объекты.

← На главную