Как скрыть себестоимость от менеджеров в отчетах 1С:Управление торговлей 11.4?

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

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

Способ 1. Использование типовой роли «Чтение себестоимости товаров»

Прежде чем приступать к сложным доработкам, проанализируем типовой механизм прав доступа. В конфигурации УТ 11.4 предусмотрена специализированная роль ЧтениеСебестоимостиТоваров. Если эта роль отсутствует в профиле групп доступа пользователя, система автоматически блокирует вывод данных, связанных с финансовым результатом, во многих типовых механизмах.

Разберем алгоритм проверки прав:

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

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

Способ 2. Ограничение через варианты отчетов и права на их изменение

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

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

Теперь проанализируем ситуацию с правами. Чтобы менеджеры не смогли самостоятельно зайти в настройки и вернуть скрытые поля, нам нужно ограничить их возможности по редактированию структуры отчета. Для этого в профиле групп доступа менеджеров найдем и отключим роль СохранениеВариантовОтчетов. Это лишит их возможности изменять состав колонок «на лету», но позволит продолжать пользоваться фильтрами и группировками.

Способ 3. Программное ограничение доступа на уровне регистра (RLS)

Ситуация усложняется, когда менеджер обладает техническими навыками и может попытаться вытащить данные через консоль отчетов или другие инструменты. В этом случае выясним причину «утечки» на уровне базы данных. Данные о прибыли хранятся в регистре накопления ВыручкаИСебестоимостьПродаж.

Мы можем настроить RLS (Record Level Security), но не на уровне строк, а на уровне полей (ресурсов). Это более тонкая настройка, которая требует внесения изменений в роли. Разберем логику:

Для роли менеджера в объекте РегистрНакопления.ВыручкаИСебестоимостьПродаж на право Чтение устанавливается ограничение. В списке полей выбираются только Количество и СуммаВыручки. Поля Себестоимость и ДопРасходы исключаются из разрешенных. При попытке обращения к этим полям система будет возвращать NULL, и в отчетах вместо цифр будут пустые значения.

Способ 4. Использование расширений для динамической модификации СКД

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

В расширении мы можем перехватить событие ПриКомпоновкеРезультата в модуле объекта отчета или использовать общий модуль для модификации схемы компоновки данных (СКД). Рассмотрим пример кода, который удаляет «запрещенные» поля из доступных полей выбора:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Проверяем наличие специальной роли у текущего пользователя
    Если Не РольДоступна("ПросмотрСебестоимости") Тогда
        
        // Получаем схему компоновки
        Схема = ЭтотОбъект.СхемаКомпоновкиДанных;
        
        // Список запрещенных полей
        ЗапрещенныеПоля = Новый Массив;
        ЗапрещенныеПоля.Добавить("Себестоимость");
        ЗапрещенныеПоля.Добавить("ВаловаяПрибыль");
        ЗапрещенныеПоля.Добавить("Рентабельность");
        
        // Удаляем поля из наборов данных
        Для Каждого НаборДанных Из Схема.НаборыДанных Цикл
            Для Каждого Поле Из НаборДанных.Поля Цикл
                Если ЗапрещенныеПоля.Найти(Поле.ПутьКДанным) <> Неопределено Тогда
                    Поле.ОграничениеИспользованияВВыборе = Истина;
                    Поле.ОграничениеИспользованияВПорядке = Истина;
                    Поле.ОграничениеИспользованияВГруппировке = Истина;
                    Поле.ОграничениеИспользованияВУсловии = Истина;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        
    КонецЕсли;

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

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

Способ 5. Создание упрощенного отчета-клона

Если заказчик хочет максимально простое решение, можно пойти по пути «кастрации» отчета. Разберем этот вариант:

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

Таким образом, у менеджера физически не будет инструмента, способного показать себестоимость, даже если он попытается изменить настройки.

Комплексная защита данных: на что еще обратить внимание?

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

Подводя итог, наиболее сбалансированным решением для УТ 11.4 является использование расширения, которое программно ограничивает доступ к полям СКД (Способ 4). Это сохраняет гибкость настройки отчетов для пользователей, но гарантирует конфиденциальность финансовой информации на уровне программного кода.

← На главную