![]() |
Программирование шаблонов ограничений для роли УТ 10.3 Столкнулся с тем что типовой шаблон ограничений для роли «МенеджерПоПродажам» перестал удовлетворять. Для просмотра документов "Реализация" и отчетов по регистрам "Продажи" и "Взаиморасчеты с контрагентом по документам расчетов" (выбрать разрешенные) применяется шаблон «#ОрганизацияВШапкеКонтрагентВШапке". Данный шаблон не удовлетворяет тем, что ограничения накладываются через группу доступа к контрагентам. Проблема заключается в том, что за данным контрагентом может быть закреплено несколько менеджеров и каждый должен видеть в журнале и отчетах (выбрать разрешенные) только свои документы. И если настраивать права доступа типовым способом, то каждый менеджер будет видеть документы и обороты клиентов другого. Для расчета комиссии в документы отгрузки и оплаты я уже внес реквизит "Менеджер" (справочник «Пользователи»). Теперь мне нужно написать шаблон ограничений по данному реквизиту применительно к текущему пользователю. Как это делать ума не приложу. Есть ли какие ссылки с примерами. Также буду признателен за ссылку на пример настройки прав доступа контрагентам типовыми средствами УТ. |
(0) покажи что у тебя в #ОрганизацияВШапкеКонтрагентВШапке |
##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ СоставГруппы.Ссылка КАК ГруппаПользователей ИЗ Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы ГДЕ СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей) ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ ИЛИ (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК ПолеОтбора ИЗ РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа ГДЕ НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей И ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ТОГДА ВЫБОР КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ (ВЫБРАТЬ 1 КАК ПолеОтбора ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1) И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) И ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА ВЫБОР КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)) ГДЕ Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2)) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ = ЛОЖЬ)) И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL) ##КонецЕсли |
Текущее время: 15:47. Часовой пояс GMT +3. |