Имя: Пароль:
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)
2 + 2 = 3.9999999999999999999999999999999...