Как отключить расшифровку и переход в ОСВ по счету из основной Оборотно-сальдовой ведомости?

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

В повседневной работе с 1С:Бухгалтерия 3.0 часто возникает задача ограничить права доступа пользователя таким образом, чтобы он мог видеть общие цифры в Оборотно-сальдовой ведомости (ОСВ), но не имел возможности «провалиться» глубже в детализацию — например, в Оборотно-сальдовую ведомость по счету или в Карточку счета. Рассмотрим подробно, почему стандартное удаление отчета из интерфейса не всегда помогает и какими способами можно добиться желаемого результата.

Механизм расшифровки и принцип суммирования прав

Разберем ситуацию, с которой столкнулся автор темы: пользователю была создана роль, в которой отключен отчет ОСВ по счету, однако при нажатии на ячейку в основной ОСВ детализация все равно открывается. Проанализируем причину. В системе 1С права доступа работают по принципу разрешения. Если пользователю назначено несколько ролей, и хотя бы в одной из них разрешен просмотр конкретного объекта, то право будет предоставлено, независимо от ограничений в других ролях.

Для решения этой задачи нам необходимо не просто создать новую «ограничивающую» роль, а проанализировать весь набор прав пользователя. Выясним, какие именно роли дают доступ к расшифровке. Как правило, это базовые профили типа Бухгалтер или ПросмотрДанных.

Способ 1. Анализ и настройка ролей через Конфигуратор

Этот метод является самым «чистым» с точки зрения архитектуры системы. Рассмотрим по шагам, как найти «лишние» права:

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

Важный момент: Чтобы полностью исключить возможность «провалиться» в отчет, у пользователя должны быть удалены все роли, где разрешен Просмотр данного объекта. Если право на Просмотр остается, система сможет программно сформировать отчет, даже если он скрыт из меню пользователя.

Способ 2. Программное отключение через обработку расшифровки

Если правки ролей по какой-то причине невозможны (например, право нужно для других целей), мы можем вмешаться в программный код формы отчета. Рассмотрим, как это реализовать в управляемом приложении. Основным инструментом здесь выступает событие РезультатОбработкаРасшифровки для поля табличного документа.

Проанализируем пример кода, который можно добавить в модуль формы отчета ОборотноСальдоваяВедомость:


&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    // Определяем текущего пользователя
    Пользователь = ПараметрыСеанса.ТекущийПользователь;
    
    // Проверяем наличие определенной роли или вхождение в группу
    Если НЕ РольДоступна("ПолныеПрава") Тогда
        // Отключаем стандартный механизм появления контекстного меню расшифровки
        СтандартнаяОбработка = Ложь;
        
        // Опционально: можно вывести предупреждение
        ПоказатьПредупреждение(, "Для вашего профиля детализация отчета ограничена.");
    КонецЕсли;
    
КонецПроцедуры

Установка параметра СтандартнаяОбработка = Ложь предотвращает открытие меню выбора типа расшифровки (счета, карточки счета и т.д.). Таким образом, нажатие на ячейку не приведет к переходу в другой отчет.

Способ 3. Использование свойств табличного документа «Защита»

Посмотрим на ситуацию со стороны отображения данных. У ячеек сформированного отчета в 1С есть специальные свойства, отвечающие за интерактивность. Если мы хотим полностью запретить взаимодействие с отчетом, можно использовать свойство Защита.

Рассмотрим, как это работает:

Для более точной настройки можно пройтись циклом по областям табличного документа и установить ИспользованиеРасшифровки = Ложь только для определенных колонок (например, для колонки со счетами).

Способ 4. Профили групп доступа (Режим «1С:Предприятие»)

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

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав.
  2. Откроем Профили групп доступа.
  3. В списке выберем профиль, назначенный нашему пользователю.
  4. Нажмем кнопку «Отчет по правам» (или «Разрешенные действия»).

Этот отчет наглядно покажет суммарный результат всех ролей. Если в списке разрешенных действий вы видите Отчет.ОборотноСальдоваяВедомостьПоСчету, значит, вам необходимо найти роль-«виновника» и создать новый профиль доступа, исключив из него эту конкретную роль. В типовых конфигурациях 1С:Бухгалтерия 3.0 часто требуется создание «пустого» профиля на основе копирования стандартного с последующим удалением лишних ролей.

Резюме

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

← На главную