Имя: Пароль:
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) Пожалуй да, лучше ограничение так, чтобы без выбранной группы запись нового была недоступна.
Т.е. если сначала думали разрешить доступ ко всем Контрагентам кроме тех у кого проставлены группы доступа, то сейчас переделали и доступ дали только к тем у кого проставлены (т.е. наоборот).

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