Настройка роли менеджера по продажам в 1С 8.2 УПП (RLS и немного кода)

Программирование - Практика программирования

Требовалось настроить роль МенеджераПоПродажам, с условием, что менеджер видит только «своих» контрагентов (контрагентов, для которых он является менеджером), только документы «своих» контрагентов и в отчетах цифры «своих».

Имеем справочник Контрагенты с табличной частью содержащую поля МенеджерПокупателя и Статус, для ввода менеджеров и их помощников, которые работают  с этим контрагентом. Поле Статус с типом перечисление, основной и помощник.


Перво-наперво нужно было чтобы менеджер и его помощники видели только своих контрагентов, для этого в роли МенеджерПоПродажам в правах на чтение поставил ограничение.

 

Следующим шагом в журнале "Документы контрагентов" оставляем документы контрагетов данного менеджера. Также в роли МенеджерПоПродажам в правах на чтение поставил ограничение.


После поправил отчет Продажи, чтобы не отображались продажи контрагентов для которых данный пользователь не является менеджером, сделал следующим образом:
- отчет оставил в списке справочника Контрагенты, в списке справочника Номенклатуры и в меню Отчеты.
- в модуле объекта отчета Продажи, в процедуре УстановитьНачальныеНастройки, дописал следующее.


Функция ЭтоМенеджер() вызывается из общего модуля МенеджерПоПродажам. Условились что пользователь имеющий роль МенеджерПоПродажам является менеджером, все остальные пользователи не должны иметь этой роли.

Установкой начальных настроек устанавливается отбор по контрагенту "В списке" по списку контрагентов для которых пользователь является менеджером. Чтобы пользователь не менял настройку отчета "заблокировал" кнопку "Настройка".


Таким образом, если менеджер хочет получить отчет по контрагенту, он запускает отчет из списка справочника Контрагенты, если хочет получить отчет по номенклатуре - из списка справочника Номенклатура, если по всем его контрагентам и номенклатуре из меню Отчеты.

Еще убрал "лишние" кнопки из командной панели списка справочника Контрагенты.

В роли на чтение журнала «Документы Контрагентов» добавил условие, чтобы были видны документы только «его» контрагентов.

Скачать файлы

Наименование Файл Версия Размер
Настройка роли менеджера по продажам в 1С 8.2 УПП (RLS и немного кода):
.doc 32,00Kb
01.04.18
0
.doc 1.0 32,00Kb Скачать

См. также

Комментарии
0. Анатолий В. (Nucky) 34 02.04.12 12:35 Сейчас в теме
Требовалось настроить роль МенеджераПоПродажам, с условием, что менеджер видит только «своих» контрагентов (контрагентов, для которых он является менеджером), только документы «своих» контрагентов и в отчета цифры «своих».


Перейти к публикации

1. q_i 326 02.04.12 12:35 Сейчас в теме
По-моему, что-то не то с некоторыми запросами.
Насколько я понимаю, в них получается полное соединение таблицы Контрагенты и таб.части МенеджерПокупателя, на которое потом накладывается отбор по &ТекущийПользователь, что должно давать задвои/затрои/т.п. по контрагентам, у которых в таб.части МенеджерыПокупателя больше одного менеджера. Если это так, то, как минимум, это будет медленно работать, а как максимум, если такой запрос будет использован где-то, где получаются цифры (в отчётах/расчётах), будет врать.
Примеры настораживающих запросов:
ВЫБРАТЬ
	Контрагенты.Ссылка
ИЗ
	Справочник.Контрагенты КАК Контрагенты
ГДЕ
	Контрагенты.МенеджерыПокупателя.МенеджерПокупателя = &МенеджерПокупателя

ГДЕ МенеджерыПокупателя.МенеджерПокупателя = &ТекущийПользователь
    ИЛИ ЭтоГруппа = Истина

2. Анатолий В. (Nucky) 34 02.04.12 12:45 Сейчас в теме
"давать задвои/затрои/т.п. по контрагентам"
А как сделать так чтобы два или три пользователя работали в одном сеансе?...
3. q_i 326 02.04.12 16:57 Сейчас в теме
(2) я в восторге от 1с!
оказывается она может запрос
ВЫБРАТЬ
   Контрагенты.Ссылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.МенеджерыПокупателя.МенеджерПокупателя = &МенеджерПокупателя

оттранслировать в
SELECT
T1._IDRRef
FROM _Reference7 T1
WHERE EXISTS(
SELECT 1 
FROM _Reference7_VT9 T2
WHERE T1._IDRRef = T2._Reference7_IDRRef AND ((T2._Fld11RRef = 0xA084005056C0000811E17CC165ADD72E)))

я же был в полной уверенности что на выходе будет нечто вроде
SELECT
T1._IDRRef
FROM _Reference7 T1 LEFT OUTER JOIN _Reference7_VT9 T2 ON T1._IDRRef = T2._Reference7_IDRRef 
WHERE T2._Fld11RRef = 0xA084005056C0000811E17CC165ADD72E

Интересно, как она догадалась? Это где-нибудь в документации есть?
4. Анатолий В. (Nucky) 34 02.04.12 18:05 Сейчас в теме
:-) Как получил транслированный код?
Документации нет. К такому запросу пришел методом проб и ошибок.
5. q_i 326 02.04.12 19:16 Сейчас в теме
(4) пользую технологический журнал.
Создаёшь файл "C:\Program Files\1cv82\conf\logcfg.xml" с примерно таким содержимым ("Z:\LOGS82\" заменить на свой каталог для логов):
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="Z:\LOGS82\" history="1">
    <event>
     <eq property="name" value="dbmssql"/>
    </event>
    <event>
     <eq property="name" value="dbpostgrs"/>
    </event>
    <event>
     <eq property="name" value="dbv8dbeng"/>
    </event>
    <property name="sql">
    </property>
  </log>
</config>
Показать

К такому запросу пришел методом проб и ошибок.

Ну работает - и хорошо. )))
Впрочем, если стоит задача выбрать контрагентов определённого менеджера, то я бы предложил такой вариант:
ВЫБРАТЬ [РАЗЛИЧНЫЕ]
   Ссылка
ИЗ
   Справочник.МенеджерыПокупателя
ГДЕ
   МенеджерПокупателя = &МенеджерПокупателя
6. Гость 25.04.12 11:02 Сейчас в теме
Спасибо, полезная штука
7. Анатолий В. (Nucky) 34 25.04.12 11:08 Сейчас в теме
Рад, что вам пригодилось.
8. Масянечка 30.05.12 21:59 Сейчас в теме
9. Анатолий В. (Nucky) 34 31.05.12 10:25 Сейчас в теме
Рад, что и вам пригодилось.
10. Юлия Пухова (luchyk007) 27.05.13 19:25 Сейчас в теме
Спасибо, было интересно ознакомиться, хотелось бы почитать побольше материала про RLS - интересная тема
11. Павел (Yimaida) 34 22.08.13 16:02 Сейчас в теме
Статья интересная, но мне кажется, что можно кое что подправить
Например,
1.
Функция ЭтоМенеджер()
Возврат РольДоступна("Менеджер")
КонецФункции


2. В запросах, в частности в отчете правильнее будет использовать ВЫБРАТЬ РАЗРЕШЕННЫЕ...
Т.е. я бы ограничил список контрагентов уже с учетом RLS.
12. pavel ev (pavelyar) 03.10.15 21:05 Сейчас в теме
Оставьте свое сообщение