Имя: Пароль:
1C
 
Ограничение доступа к справочнику
0 Alex7771
 
03.09.25
11:29
Не подскажите, если надо конкретным пользователя в 1с бухгалтерии 30 ограничить возможность добавлять/менять элементы в каком-нибудь справочнике ( например номенклатурные группы ) - это делается только через расширение ( т.е. мутим расширение которое при открытии формы элемента справочника например как-то идентифицировало что этому пользователю это делать нельзя и ругалось/выкидывало его обратно ) или как-то типовыми средствами можно ?
1 Волшебник
 
03.09.25
11:30
при открытии формы элемента надо устанавливать режим ТолькоПросмотр = Истина
2 mikecool
 
03.09.25
11:31
(0) настроить роли
3 craxx
 
03.09.25
11:31
(0) Роли уже запретили?
4 Alex7771
 
03.09.25
11:37
(3) отдельной роли на конкретный справочник не нашел
5 Волшебник
 
03.09.25
11:39
А ещё можно организационно запретить. Просто всем объявить и всё.
6 mikecool
 
03.09.25
11:40
(4) ну... тут надо помощника звать
7 slad
 
03.09.25
12:47
Создаешь Группу пользователей, проверяешь принадлежность пользователя к группе, если не принадлежит форму только на просмотр
8 shuhard
 
03.09.25
13:06
(4) что-то мешает создать и назначить роль в расширении ?
9 Alex7771
 
03.09.25
13:29
(8) я создал роль в расширении, добавил в расширение справочник, в роли указал для него галки чтение, только просмотр.
В предприятии создал профиль с этой ролью.
У пользователя выбран профиль к примеру ГлБухгалтер и мой новый.
Гав буху же разрешено менять этот справочник - и это право как я понимаю перекрывает мое. т.е. менять вводить можно.

что не так делаю ?
10 shuhard
 
03.09.25
13:33
(9)[что не так делаю ?]
всё, ГБ имеет полные права
11 Alex7771
 
03.09.25
13:37
(10) ну т.е. если надо запретить кому то с полными правами то новой ролью не получится ?
13 shuhard
 
03.09.25
13:52
(11) ты точно 1С-ник ?
14 PLUT
 
гуру
03.09.25
13:59
(11) "В тех случаях, где роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, следует использовать метод РольДоступна. При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи:
Например, без использования БСП:

Если РольДоступна(...) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда ...

Либо аналогичная проверка с использованием БСП:

Если Пользователи.РолиДоступны(...) Тогда ..."

©пижжено отсюда https://its.1c.ru/db/v8std/content/737/hdoc
15 СвинТуз
 
03.09.25
14:03
(9)
"Гав буху"

- Чем ЧК отличается от ЦК?
- ЦК - цыкает, а ЧК - чикает.
16 СвинТуз
 
03.09.25
14:04
(14)
с полными правами осторожнее в этом случае.
17 spiller26
 
03.09.25
14:05
(9)
1. Нужно "вычислить" все роли, у которых есть права на добавление/изменение (далее РолиИзмСпр)
2. Делаешь расширение.
В расширение кидаешь например Справочник.НоменклатурныеГруппы
Закидываешь все роли РолиИзмСпр
3. В ресширении у всех ролей РолиИзмСпр ставишь права на Справочник.НоменклатурныеГруппы = Чтение, Просмотр, Ввод по строке.
4. Делаешь в расширении дополнительную роль, для отдельных личностей, для правки.
18 spiller26
 
03.09.25
14:08
(17) Мы так ограничили всем право на изм "Производственных календарей" и "Графиков работ сотрудников", чтобы было централизовано для всех организаций, а их сейчас 10-ть только в одной базе.
Меняют определнные пользователи и только по согласованию.
19 maxab72
 
03.09.25
14:26
(17) не очень надежный способ. особенно когда широко используются расширения. Представь, что ты изменил в двух расширениях одну и ту же роль...
20 spiller26
 
03.09.25
14:30
(19) Начнем с того что само оиспользование даже одного и того же объекта может перекрыться, так что сами контролируйте в расширениях.
Я предложил и оно у нас работает уже 2-й год.
А так придумайте сами реализацию данной задачи.
21 Alex7771
 
03.09.25
14:40
короче, забил на роли, сделал расширение которое при открытии справочника смотрит есть ли определенный профиль и ставит только просмотр. Вроде работает, заняло полчаса.

&НаКлиенте
Процедура Расш2_ПриОткрытииПосле(Отказ)
    //Вставить содержимое обработчика
    
    Польз = ПользователиКлиент.ТекущийПользователь();
    ТолькоПросмотр = Расш2_ЕстьВГруппе(Польз);

    
КонецПроцедуры


&НаСервере
Функция  Расш2_ЕстьВГруппе(Польз)
    //Вставить содержимое обработчика
    
    Рез = Ложь;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ГруппыДоступаПользователи.Ссылка.Профиль КАК Профиль,
    |    ГруппыДоступаПользователи.Пользователь КАК Пользователь
    |ИЗ
    |    Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
    |
    |СГРУППИРОВАТЬ ПО
    |    ГруппыДоступаПользователи.Ссылка.Профиль,
    |    ГруппыДоступаПользователи.Пользователь";
    
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        Если СтрНайти(Выборка.Профиль.Наименование,"БЕЗДОСТУПА")>0 Тогда
            Рез = Истина;
        КонецЕсли;    
    
    КонецЦикла;
    
    Возврат Рез;
    
КонецФункции
22 ptiz
 
03.09.25
15:25
(21) А пометка на удаление из формы списка, например? Правильный вариант: давать отказ в подписке ПередЗаписью.
23 Мультук
 
гуру
03.09.25
15:32
(21)

Ты проверял -- что запрет работает. Ок. Верю.

А на пользователе, где запрет не должен работать проверял ?

P.S.
1) Почему вот это не в  запросе ?
Если СтрНайти(Выборка.Профиль.Наименование,"БЕЗДОСТУПА")>0 Тогда


2) И где
ГДЕ
?
24 YaFedor
 
03.09.25
15:46
Для расширений очень бы пригодились роли запрета ...
но их не завезли, поэтому - программно.
25 kostik79
 
03.09.25
18:26
(0) В расширении создаёшь роль "ШышТебеАНеСправочник", назначаешь её кому надо, а при открытии формы проверяешь Если РольДоступна("ШышТебеАНеСправочник") Тогда ТолькоПросмотр = Истина
И не важно какие ещё права у юзера.
(21) /заняло полчаса/ а тут 5 минут
26 Волшебник
 
03.09.25
19:27
(21) Так и сказали в (1) ибо опыт
27 Волшебник
 
03.09.25
19:28
Но ваше наименование "БЕЗДОСТУПА" полное говно