Имя: Пароль:
1C
 
Программное добавление отбора
,
0 Marry04
 
06.12.16
05:23
УТ 11.3
Существует два вида пользователей: менеджер и руководитель менеджеров (определенного подразделения).
менеджеры видят документы внутри своего подразделения, как и руководители.
При формировании отчета "Ведомость расчетов с клиентами" нужно сделать программное добавление отбора:
если текущий пользователь менеджер, то в отборе автоматически устанавливается Менеджер текущий и подразделение, к которому принадлежит данный пользователь. С отсутствием возможности на редактирование.
если тек пользователь руководитель менеджеров, то он может выбрать менеджеров из справочника "Текущие пользователи" и перевыбрать подразделение(НО К ЗАПОЛНЕНИЮ ОНО ОБЯЗАТЕЛЬНО).
Ну и расширенный функционал СКД запретить для менеджеров. Это я сделаю в функции "При открытии формы на сервере"в зависимости от выбранных ролей текущего пользователя.

Структура отчета: (скрин) https://docs.google.com/drawings/d/1r6E_711W47QacTdUPWM0KDlYfDcnQfkSfFgZgRuttWw/edit?usp=sharing


Начинала делать так:
При открытии формы настроек на сервере:

ЭлементОтбора = Элементы.Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Заказ.Менеджер");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
Отборы.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; // это что бы пользователь не видел этот отбор
Отборы.ПравоеЗначение   = ПользователиИнформационнойБазы.ТекущийПользователь();
Ругается на метод Добавить и т.д.
1 mehfk
 
06.12.16
05:31
Пригласите специалиста.
2 Antony8x
 
06.12.16
07:47
(0)
ЭлементОтбора = Элементы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
3 Antony8x
 
06.12.16
07:47
(1) уже здесь
4 Marry04
 
06.12.16
11:36
(2) не идет. Отбор - нет такого объекта. Только Отборы
5 singlych
 
06.12.16
12:00
1. Дык наверно надо в настройки компоновки отбор добавлять, а не в элементы формы.
2. А если никто не откроет настройки отчета, то и отбор не добавится?
6 Aleksandr N
 
06.12.16
12:02
КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить...
7 Marry04
 
07.12.16
10:13
(5) в форму отчета добавила 2 поля: "подразделение",  "менеджер".
При открытии формы отчета на сервере прописала след.код:
Пользователь =   ПараметрыСеанса.ТекущийПользователь;
ЭлементыОтбора = Новый Соответствие;
ЭлементОтбора = ЭлементыОтбора.Получить ( Новый ПолеКомпоновкиДанных("Заказ.Менеджер"));
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый  ПолеКомпоновкиДанных("Заказ.Менеджер");
КонецЕсли;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; // это что бы пользователь не видел этот отбор
ЭлементОтбора.ПравоеЗначение =  Пользователь;

Но при этом при открытии отчета поля Отбора пустые..
Отладчик прошлась посмотрела значения переменных- все нормально.
(скрин отчета)
https://docs.google.com/drawings/d/1R8BYCbdk4KRVZdSh4YthPD0PRnSiJD4SAe7FNTLvQ1s/edit?usp=sharing
8 EvgeniuXP
 
07.12.16
10:34
есть еще пользовательские настройки, там глянь в отладке :)
9 EvgeniuXP
 
07.12.16
10:37
а в СКД что мешало сразу добавить отбор как недоступным? нафига программно при открытии создавать?
10 EvgeniuXP
 
07.12.16
10:41
и в комментарии написала "это что бы пользователь не видел отбор" - ну вот и не видишь, всё правильно.
11 Marry04
 
07.12.16
12:27
(10) для некоторых пользователей(с определенными ролями) нужно открыть возможность редактирования отбора.поэтому программно настраиваю все
12 EvgeniuXP
 
08.12.16
18:59
(11) сделай тогда проще - два отчета, один с отбором, другой без - один отчет для одних открывай, другой доя других с обязательным заполнением и передачу в компоновку  параметра