Имя: Пароль:
1C
1С v8
УТ, RLS: автоназначение группы новым Контрагентам
0 Минона
 
18.10.11
23:08
При использовании RLS невозможно назначить папке Контрагентов Группу Доступа. Поэтому приходится назначить каждому Контрагенту.
Существующим пропишем обработкой.

А как автоматизировать прописание новым Контрагентам группы Доступа? При этом желательно не ломать типовую.
1 rotting
 
18.10.11
23:14
не ломать думаю не получиться, при смене РЛС не особо ломается типовая, только роли, а они и так должны быть уже изменены раз РЛС понадобилась
2 Минона
 
18.10.11
23:22
Хорошо, как тогда красивей сделать (0) ?
3 rotting
 
18.10.11
23:28
(2) Запрос в РЛС подправить, где-то там написать В ИЕРАРХИИ наверное
4 Минона
 
18.10.11
23:36
Может поточнее?
Наверняка кто-то уже делал, спрашивал на форуме.
5 rotting
 
18.10.11
23:54
не прав, В ИЕРАРХИИ использовать в РЛС нельзя. Помню что как-то делал, но не помню как....  Как-то через параметры сеанса, которые были массивом
6 Минона
 
19.10.11
14:09
Помогите кто настраивал!
7 shuhard
 
19.10.11
14:14
(6)две строчки кода + один ПВХ - любимая группа доступа контрагентов
8 Минона
 
19.10.11
14:50
(7) извините, но ваш пост абсолбютно непонятен.
Какие строчки? с каким кодом? где? что за ПВХ?

Я понимаю что ляпнуть что-нибудь с умным видом это круто. Но поверьте мне вы этим нисколько не помогли.
9 shuhard
 
19.10.11
15:21
(8) мне пох
10 Минона
 
19.10.11
15:28
Вопрос (0) все ещё актуален. Нужна помощь!
11 FIXXXL
 
20.10.11
13:40
(0) или пользователь сознательно должен выбирать группу перед записью или придется маленько подписать, в процедуре ПередЗаписью объекта:

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


Функция ПолучитьСписокГруппДоступа() Экспорт

   СписокОтбора = Новый СписокЗначений;
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    НастройкиПравДоступаПользователей.ОбъектДоступа КАК ГруппаДоступа
                  |ИЗ
                  |    РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |            ГруппыПользователейПользователиГруппы.Ссылка КАК ГруппаПользователя
                  |        ИЗ
                  |            Справочник.ГруппыПользователей.ПользователиГруппы КАК ГруппыПользователейПользователиГруппы
                  |        ГДЕ
                  |            ГруппыПользователейПользователиГруппы.Пользователь = &Пользователь
                  |        
                  |        СГРУППИРОВАТЬ ПО
                  |            ГруппыПользователейПользователиГруппы.Ссылка) КАК ГрПлз
                  |        ПО НастройкиПравДоступаПользователей.Пользователь = ГрПлз.ГруппаПользователя
                  |ГДЕ
                  |    НастройкиПравДоступаПользователей.ВидОбъектаДоступа = &ВидОбъектаДоступа
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    НастройкиПравДоступаПользователей.ОбъектДоступа";

   Запрос.УстановитьПараметр("ВидОбъектаДоступа", Перечисления.ВидыОбъектовДоступа.Контрагенты);
   Запрос.УстановитьПараметр("Пользователь", глЗначениеПеременной("глТекущийПользователь"));

   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();


   Пока Выборка.Следующий() Цикл
         СписокОтбора.Добавить(Выборка.ГруппаДоступа);                        
   КонецЦикла;
   
   Возврат СписокОтбора;

КонецФункции

ну или как предложил (7) в настройках пользователей добавляете группу по-умолчанию и ее проставляете перед записью
12 FIXXXL
 
20.10.11
13:57
+(11) ну и что б пользователь не выбирал руками ненужные группы в форме элемента добавить

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

   
КонецПроцедуры
13 Минона
 
25.10.11
10:44
2(11) Пожалуй да, лучше ограничение так, чтобы без выбранной группы запись нового была недоступна.
Т.е. если сначала думали разрешить доступ ко всем Контрагентам кроме тех у кого проставлены группы доступа, то сейчас переделали и доступ дали только к тем у кого проставлены (т.е. наоборот).

В итоге пока ограниченный юзер не выберет группу (а она у нас одна), ему не дает записать.
Думали ещё через преопределенные значения (в настройках Пользователей), но без вмешательства не получается. Пусть уж сами указывают, конфа типовой зато останется.
Закон Брукера: Даже маленькая практика стоит большой теории.