Имя: Пароль:
1C
1C 7.7
v7: Ограничение доступа к группам справочника.
,
0 palm1c
 
19.09.11
16:03
Добрый день.

Есть справочник.
Нужно ограничить доступ пользователей к группе справочника.
1. Пользователи не должны видеть элементы из этой группы.
2. Пользователи не должны видеть саму группу.

Нужны идеи по реализации.

Спасибо.
1 АЛьФ
 
19.09.11
16:05
ИспользоватьСписокЭлементов()
2 Ёпрст
 
19.09.11
16:06
(0)
ИспользоватьРодителя(НужнаяГруппа,0);
3 Tatitutu
 
19.09.11
16:09
если только по первому пункту
то можно
использовать Процедура ПриВыбореРодителя(<?>)
но саму папку будет видно
4 Shaman100M
 
19.09.11
16:14
ну и плюс запретить снимать иерархию.
ИерархическийСписок(1,0);
5 Ёпрст
 
19.09.11
16:17
(4) при (2) пофик - один хрен не "выползет" за пределы этой группы.
6 ASU_Diamond
 
19.09.11
16:21
(1) надо ещё смотреть размер справочника, у нас затыкалось.
(2) а если подчиненную группу нужно закрыть?
7 palm1c
 
19.09.11
16:21
(1) Спасибо, буду пробовать.
8 palm1c
 
19.09.11
16:22
(6) То есть тормозило при отборе в список?
9 ASU_Diamond
 
19.09.11
16:23
(8) вроде да, может вылетало, точно не помню, давно было. Использовали вариант (4)
10 palm1c
 
19.09.11
16:25
Всем спасибо. Буду пробовать оба варианта.
11 ASU_Diamond
 
19.09.11
16:26
(+9) считай тебе надо получить список доступных элементов, потом их поместить в список значений, потом платформе отработать этот список значений. Да ещё учитывай что новые элементы не будут отображаться до перевыполнения всех действий заново.
PS. скрываешь элементы справочника номенклатуры?
12 palm1c
 
19.09.11
16:28
(11) и Контрагентов.
13 ASU_Diamond
 
19.09.11
16:29
(12) оборонка?
14 palm1c
 
19.09.11
16:30
(13) нет.
15 palm1c
 
19.09.11
16:30
(13) не скажу.
16 ASU_Diamond
 
19.09.11
16:34
у нас так реализовано:

Процедура ПриВыбореСтроки()
   Если (ТекущийЭлемент()=Константа.СП) или (ТекущийЭлемент().ПринадлежитГруппе(Константа.СП)=1)  Тогда
       Если Пользователь.ЗакрытьПродукцию=1 Тогда
           Предупреждение("У вас не достаточно прав");
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   Если Пользователь.ЗакрытьПродукцию=1 Тогда
       ИерархическийСписок(1, 0);    
   КонецЕсли;
КонецПроцедуры // ПриОткрытии()
17 ASU_Diamond
 
19.09.11
16:34
Константа.СП - группа справочника, в которой содержатся закрытые элементы
18 palm1c
 
19.09.11
16:36
(16) Понятно. Пользователь видит название группы только.
Спасибо.
19 palm1c
 
19.09.11
16:36
(16) Я сначала хочу попробовать вариант с ИспользоватьСписокЭлементов
20 Ёпрст
 
19.09.11
16:42
(18) в случае (16) - пользователь видит ВСЁ.
Только открыть сам элемент не может.
21 ASU_Diamond
 
19.09.11
16:45
(20) нет, в группу зайти не сможет, соответственно что в группе увидеть то же
22 Ёпрст
 
19.09.11
16:45
(21) брехня!
23 ASU_Diamond
 
19.09.11
16:46
(22) докажи :)
24 Ёпрст
 
19.09.11
16:47
+22 при коде в (16) видит все элементы во всем справочнике (максимум, при условии, что Форма.ОбработкаВыбораСтроки(1) в коде еще есть - не войдет в сам элемент, а видеть в списке будет)
И что в дереве раскрывается группа, что просто на папке, что Ctrl+стрелочки.
25 Ёпрст
 
19.09.11
16:51
26 Ёпрст
 
19.09.11
16:52
+24 а если еще и редактирование в списке - то вообще всё изменить сможет.
27 Ёпрст
 
19.09.11
16:52
+26 так что, код в (16) - профонация.
28 ladyFox3
 
20.09.11
00:17
Создаешь реквизит "Видимость"=  Перечисление.ДаНет
процедура ПриОткрытии()
   Сотр=СоздатьОбъект("Справочник.Сотрудники");
   Если Сотр.НайтиПоРеквизиту("КодПользователя",ИмяПользователя (),1) = 1 Тогда
       ТекПользователь = Сотр.ТекущийЭлемент();
   КонецЕсли;
   Если  ТекПользователь.УровеньДоступа < 1 ТОгда
       УстановитьОтбор ("Видимость",Перечисление.ДаНет.Да);
       Сортировка("Наименование",1);
   
   КонецЕсли;

Конецпроцедуры
29 ASU_Diamond
 
20.09.11
08:38
(24) да не увидишь ты элементы, которые в группе, потому что не сможешь войти в группу.
(25) я не знаю как ты там сделал, но у тебя в примере не заполнена константа и не заходит в процедуру ПриВыбореСтроки
(27) у нас работает, претензий нет.
30 Ёпрст
 
20.09.11
08:39
(29) константа выбрана, в ПриВыбореСтроки  заходит.
31 Ёпрст
 
20.09.11
08:39
(28) при отборе сортировка не работает.
32 ASU_Diamond
 
20.09.11
08:40
(26) для этого в ПриОткрытии добавляется
РедактироватьВДиалоге(1,1)
33 ASU_Diamond
 
20.09.11
08:42
(30) походу глюк какой-то был
пропустил ещё процедуру
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриВыбореРодителя(Родитель)
   Если (Родитель=Константа.СП) или (Родитель.ПринадлежитГруппе(Константа.СП)=1)  Тогда
       Если Пользователь.ЗакрытьПродукцию=1 Тогда
           Предупреждение("У вас не достаточно прав");
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
34 Ёпрст
 
20.09.11
08:43
35 ASU_Diamond
 
20.09.11
08:43
(0) кстати, а тебе ещё надо подумать о доступе к документам, в них будут видны элементы справочника.
36 Ёпрст
 
20.09.11
08:43
(33) зае...сь
37 Ёпрст
 
20.09.11
08:43
+36 что ты еще забыл ?
:))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
38 ASU_Diamond
 
20.09.11
08:44
(36) ну так давно это было, всего не упомнишь. А сейчас я 8-кой занимаюсь.
39 ASU_Diamond
 
20.09.11
08:44
(37) см. (35)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс