УТ 11.4.14.

Как менеджеру по продажам ограничить права на просмотр себестоимости и рентабельности продаж?
---
Вот смотри. Не так давно делал похожий (но более правильный) заказ. Надо было сделать, чтобы при любых раскладах Помощник менеджера по продажам видел только ту прибыль, что по документам с его авторством. Стандартные ограничения РЛС не подошли. Пришлось лишить в его профиле роли "Отчеты руководителя отдела продаж", сделать в расширении Роль по допуску к отчету Валовая прибыль и себестоимость продаж. А вот отчет чтобы не настраивал менеджер всегда будет отбор по этому менеджеру. Примерно так же можно убрать и ресурсы себестоимость и рентабельность
 С остальными отчетами (типа Движения документов) можно поступить примерно так же.
НО. Еще раз, на мой взгляд уж принесенную прибыль своих продаж менеджер имеет право видеть.
Модуль объекта заимствованного отчета Валовая прибыль и себестоимость продаж

```1c
    &Перед("ПриКомпоновкеРезультата")
    Процедура РасшПД_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

    КонецЕсли;

    КонецЕсли;

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

    Функция ПроверкаНаличияОтбора(Коллекция)
    Галка = Ложь;
    Элем = Неопределено;
    Для каждого Эл из Коллекция Цикл
    Если Строка(Эл.ЛевоеЗначение) = "Менеджер" Тогда
    Галка = Истина;
    Элем = Эл;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Возврат Новый Структура ("Есть,СтрокаКоллекции",Галка,Элем);
    КонецФункции
```
---
убрать право с ресурсов себестомость для менеджерских прав
---
убрать право с ресурсов себестомость для менеджерских прав

 Тогда он не сможет проводить реализации. Да и типовые роли редактировать не хотелось.
---
Спасибо ) теперь понял что кое где что то сделали не так.
Тогда как вариант изменить типовой отчет валовая прибыль убирая с него колонки с себестоимостью и рентабельностью при компоновке результатов.
мы так ставили принудительный отбор на "запрещенную группу номенклатуры" наверняка колонки убрать для вывода тоже возможно. Еще правда остануться цены, да и в типовых куча печ.форм с анализом
---
Тогда он не сможет проводить реализации. Да и типовые роли редактировать не хотелось.
А если писать движения в привилегированном режиме, как вариант?
---
Убрать из профиля роль Отчеты по продажам. Так себе решение. Менеджер все-таки должен видеть отчеты по своему профилю
---
Убрать из профиля роль Отчеты по продажам.

Он должен смотреть Выручку, но бес Себестоимости и Прибыли.
---
Скопировать Роль "Отчеты по продажам" в расширение.
Убрать из скопированной роли доступ к отчету "выручка и себестоимость продаж"
Убрать из профиля менеджера по продажам роль Отчеты по продажам
Добавить менеджеру роль из расширения
Сделать в расширении простейший отчет по выручке за период
---
Убрать из скопированной роли доступ к отчету "выручка и себестоимость продаж"

Себестоимость можно посмотреть в Движениях документа или из Заказа клиента нажав Оценка рентабельности продаж.

Это где убирать?
---
"Тогда как вариант изменить типовой отчет валовая прибыль убирая с него колонки с себестоимостью и рентабельностью при компоновке результатов."©
 ТОгда учти, что предопределенных вариантов этого отчета вагон и телега. Предусмотреть надо очистку себестоимости во всех вариантах
---
Правильные вопросы ставишь. А еще, например, есть док Установка цен, где легко увидеть и высчитать цену закупки и наценку. А подумать, так и еще найти можно. Отсюда сомнения, может задача поставлена неправильно? Нельзя заниматься продажами и не видеть главного в результатах работы. Может лучше пусть видит всё, но только свое? Свои контрагенты или категории номенклатуры или еще что-то. Это будет более правильное решение. Ну..... или уволить на фиг менеджера которому до такой степени нет доверия
---
Ну..... или уволить на фиг менеджера которому до такой степени нет доверия

Доверие есть. Но руководство не хочет, чтобы все могли видеть сколько зарабатывает фирма.

Как тогда говорить сотрудникам, что денег нет и мы едва что-то заработали???
---
Вот смотри. Не так давно делал похожий (но более правильный) заказ. Надо было сделать, чтобы при любых раскладах Помощник менеджера по продажам видел только ту прибыль, что по документам с его авторством. Стандартные ограничения РЛС не подошли. Пришлось лишить в его профиле роли "Отчеты руководителя отдела продаж", сделать в расширении Роль по допуску к отчету Валовая прибыль и себестоимость продаж. А вот отчет чтобы не настраивал менеджер всегда будет отбор по этому менеджеру. Примерно так же можно убрать и ресурсы себестоимость и рентабельность
 С остальными отчетами (типа Движения документов) можно поступить примерно так же.
НО. Еще раз, на мой взгляд уж принесенную прибыль своих продаж менеджер имеет право видеть.
Модуль объекта заимствованного отчета Валовая прибыль и себестоимость продаж

```1c
    &Перед("ПриКомпоновкеРезультата")
    Процедура РасшПД_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

    КонецЕсли;

    КонецЕсли;

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

    Функция ПроверкаНаличияОтбора(Коллекция)
    Галка = Ложь;
    Элем = Неопределено;
    Для каждого Эл из Коллекция Цикл
    Если Строка(Эл.ЛевоеЗначение) = "Менеджер" Тогда
    Галка = Истина;
    Элем = Эл;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Возврат Новый Структура ("Есть,СтрокаКоллекции",Галка,Элем);
    КонецФункции
```
---
Добрый день! Решили?