Вопрос ограничения доступа к финансовым показателям, в частности к себестоимости товаров, является одной из классических задач при настройке 1С:Управление торговлей 11.5. Менеджеры по продажам должны видеть выручку и количество, но доступ к маржинальности и закупочным ценам часто должен быть ограничен по соображениям коммерческой безопасности. Разберем подробно, как реализовать этот запрет, чтобы даже продвинутый пользователь не смог добраться до заветных цифр.
Стандартный профиль Менеджер по продажам в типовой конфигурации 1С:УТ 11.5 спроектирован так, чтобы сотрудник имел максимум информации для оперативной работы. Даже если мы уберем роль Отчеты руководителя отдела продаж, менеджер все равно может увидеть себестоимость через «Валовую прибыль», универсальные отчеты или банально заглянув в движения документа «Реализация товаров и услуг». Проанализируем ситуацию: простое отключение отчетов не помогает, так как данные хранятся в регистрах, к которым у пользователя остается право на чтение. Нам потребуется комплексный подход.
Данные о себестоимости в системе не возникают из ниоткуда — они хранятся в конкретных структурах. Рассмотрим основные регистры, которые необходимо «закрыть» в первую очередь:
Для решения задачи создадим в расширении новую роль, например, ОграничениеПросмотраСебестоимости. В этой роли нам нужно снять право Просмотр для вышеуказанных регистров. Важно понимать разницу между правами Чтение и Просмотр. Если мы снимем Чтение, система может начать выдавать ошибки в стандартных механизмах проведения документов. Снятие же права Просмотр приведет к тому, что данные будут недоступны в списках, универсальных отчетах и при попытке добавить поля в настройки через схему компоновки данных (СКД).
Менеджерам по-прежнему нужны отчеты по продажам, но без колонок себестоимости. Рассмотрим, как программно вмешаться в процесс формирования отчета. Один из наиболее надежных методов — использование обработчика ПриКомпоновкеРезультата в модуле объекта отчета (в расширении).
Выясним причину, по которой менеджеры могут обходить запреты: они используют пользовательские настройки и добавляют поля из списка доступных. Чтобы этого избежать, мы можем применить следующий код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Проверяем, есть ли у пользователя роль, ограничивающая просмотр
Если РольДоступна("МенеджерБезСебестоимости") Тогда
// Находим поле Себестоимость в доступных полях компоновщика
ПолеСебестоимость = КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы.Найти("Себестоимость");
Если ПолеСебестоимость <> Неопределено Тогда
ПолеСебестоимость.Использование = Ложь;
КонецЕсли;
// Аналогично блокируем вывод в выбранные поля
Для Каждого Элемент Из КомпоновщикНастроек.Настройки.ВыбранныеПоля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Если Строка(Элемент.Поле) = "Себестоимость" ИЛИ Строка(Элемент.Поле) = "ВаловаяПрибыль" Тогда
Элемент.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Кроме того, в самой схеме компоновки данных для каждого поля предусмотрено свойство «Ограничение доступа». Если установить этот флаг для полей себестоимости и связать его с нашей ролью, система автоматически скроет эти поля из конструктора настроек у пользователя.
Даже если мы закрыли отчеты, менеджер может открыть документ «Реализация товаров и услуг» и нажать кнопку «Движения документа» (пиктограмма Дт/Кт). Там в наглядном виде по регистру «Выручка и себестоимость продаж» будут видны все суммы.
Проанализируем шаги по блокировке этой лазейки:
Просмотр движений документов.Интерактивный просмотр движений. Его отключение полностью уберет команду просмотра записей регистров из интерфейса форм документов.Если менеджер обладает минимальными техническими навыками или имеет доступ к интернету, он может попытаться запустить внешнюю обработку «Консоль запросов» и выгрузить любые данные. Чтобы предотвратить это, необходимо строго ограничить следующие права в профиле:
Интерактивное открытие внешних отчетов и обработок — должно быть выключено.Использование дополнительных отчетов и обработок — оставить только для проверенных администратором инструментов.В 1С:УТ 11.5 реализован механизм предварительного расчета себестоимости. Это позволяет видеть расчетную прибыль прямо в заказе клиента или в списке заказов (колонка «Рентабельность»). Посмотрим на ситуацию глазами менеджера: он видит процент прибыли и цену продажи, а значит, легко вычислит себестоимость на калькуляторе.
Чтобы скрыть эти данные, нам придется через расширение модифицировать формы:
Ложь для всех элементов, связанных с рентабельностью (группа «ГруппаРентабельность», надписи о прибыли).Для более «чистой» реализации рекомендуем использовать Функциональные опции. Вы можете создать свою функциональную опцию, которая будет зависеть от параметров пользователя, и привязать к ней видимость элементов интерфейса.
Часто менеджеру все же нужно понимать границы допустимой скидки. Вместо того чтобы бороться с отображением реальной себестоимости, разберем альтернативный вариант. Можно создать отдельный Вид цены (например, «Расчетный закуп»), который будет рассчитываться как Цена поступления + 10%.
Далее мы даем менеджеру доступ только к этому виду цены. В отчетах он будет видеть прибыль относительно этой «суррогатной» цены, а реальные цифры закупа останутся в закрытых регистрах, доступ к которым есть только у бухгалтерии и руководства.
Полное сокрытие себестоимости в 1С:УТ 11.5 — это трудоемкая задача, требующая вмешательства в программный код через расширения. Главное — помнить, что ограничение прав на просмотр регистров является фундаментом, а модификация отчетов и форм — лишь надстройкой. Только лишив пользователя возможности видеть движения документов и запретив использование внешних обработок, вы сможете гарантировать конфиденциальность закупочных цен.