Ограничение доступа к реквизитам справочника Сотрудники

1. dicwork 01.03.12 17:50 Сейчас в теме
1С 7.7 Бухгалтерский учет для Украины. Сейчас добавляем в эту базу Заработную плату. Права на выбор и чтение из справочника Сотрудники имеют все или почти все. Поделитесь информацией как кто реализует ограничение доступа к реквизитам справочника Сотрудники. Чтобы те кому это не нужно не могли видеть информацию по заработной плате. Планируется разместить эту информацию на отдельных вкладках и показывать эти вкладки только ограниченному кругу лиц. Какие еще могут быть варианты решения этой проблемы.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Strawberry 01.03.12 17:54 Сейчас в теме
(1) dicwork,
Процедура Приоткрытии ()
если НазваниеНабораПрав()<> "видно _все" Тогда
форма.Оклад.Видимость(0);
Иначе
форма.Оклад.Видимость(1);
КонецЕСли;
КонецПроцедуры
4. dusha0020 1118 01.03.12 18:21 Сейчас в теме
Я вот выковырял из своей базы. Из справочника сотрудников в ЗИКе
Здесь по-моему все есть:
Функция УстДоступность()   
	Если ТипСотрудника = Перечисление.ТипСотрудника.УченикГПТУ Тогда	
		Форма.ГПТУ.Доступность(1);  
		Форма.ГПТУ.Доступность(1);  
	Иначе
		Форма.ГПТУ.Доступность(0);  
		Форма.ГПТУ.Доступность(0);  
	КонецЕсли;
	Форма.кИстория.Доступность(Выбран());
	Форма.кОбновить.Доступность(Выбран());
	ЕстьДокНачала = ДокументНачала.Выбран();
		Форма.ФизическоеЛицо.Доступность(1);
	        Форма.Фирма.Доступность(1-ЕстьДокНачала);
	        Форма.Подразделение.Доступность(1);
	Если (ИмяПользователя()= "Иванов") или(ИмяПользователя()= "Петров") или 
	(ИмяПользователя()= "Сидоров") или(ИмяПользователя()= "Потапов")  или (ИмяПользователя()= "Кадровик")  или (ИмяПользователя()= "Кадровик2") Тогда
		Форма.ДатаНачалаДействия.Доступность(1);  
		Форма.ДатаОкончанияДействия.Доступность(1);
	Иначе
		Форма.ДатаНачалаДействия.Доступность(0);  
		Форма.ДатаОкончанияДействия.Доступность(0);
	конецЕсли;
	Если Найти("Кадровик,Табельщик,Ст.кадровик,Ст.табельщик",СокрЛП(НазваниеНабораПрав()))>0 Тогда
		Форма.ВыплПКФл.Видимость(0);
		Форма.ПВыпЗаг.Видимость(0);
		Форма.ПроцДляПК.Видимость(0);
		Форма.НеВыплПКФл.Видимость(0);
	ИначеЕсли ВывБлокПК = 1 Тогда
		Если ВыплПК = 1 Тогда
			ВыплПКФл = 1;
			Форма.ПВыпЗаг.Видимость(1);
			Форма.ПроцДляПК.Видимость(1);
		Иначе
			ВыплПКФл = 0;
			Форма.ПВыпЗаг.Видимость(0);
			Форма.ПроцДляПК.Видимость(0);
		КонецЕсли;
		Если ИсклВыпПК = 1 Тогда
			НеВыплПКФл = 1;
		Иначе
			НеВыплПКФл = 0;
		КонецЕсли;
	Иначе
		Форма.ПВыпЗаг.Видимость(0);
		Форма.ПроцДляПК.Видимость(0);
	КонецЕсли;
	Возврат "";
КонецФункции
Показать

Делается невидимое поле на форме и в нем ставится функция УстДоступность()
Не ругайте сильно код. Не я один писал, его дописывали и правили много раз в зависимости от пользователей и прав, добавления новых реквизитов и т.п.
Не самый удачный способ, так как при изменении набора прав или состава допущеных пользователей нужно лазить в конфигурацию.
Как идея у меня была ввести доступный админу справочник разрешений типа с тремя реквизитами:
ВидРазрешения (набор прав или имя пользователя) и собственно список текстовый этих наборов и пользователей.
Тогда проверку проводить по списку из справочника через глобальную функцию глДоступ()
Что-то типа:
Функция глДоступ(ИДдоступа) Экспорт
УД = СоздатьОбъект("Справочник.УправлениеДоступом");
УД.НайтиПоНаименованию(ИДДоступа);
Если УД.ВидРазрешения = "Набором прав" Тогда
    Если Найти(УД.СписокРазрешенных,НазваниеНабораПрав())>0 Тогда
        Возврат 1;
    Иначе
        Возврат 0;
    КонецЕсли;
Иначе
    Если Найти(УД.СписокРазрешенных,ИмяПользователя())>0 Тогда
        Возврат 1;
    Иначе
        Возврат 0;
    КонецЕсли;
КонецЕсли;
КонецФункции
Показать

Ну а в УстДоступность() использовать так:
Если глДоступ("Просматривать оклад сотрудника") = 1 Тогда
Форма.Оклад.Видимость(1);
Иначе
Форма.Оклад.Видимость(0);
КонецЕсли;

Или даже так:
Форма.Оклад.Видимость(глДоступ("Просматривать оклад сотрудника"));

Теперь редактировать наборы для доступа станет проще...
Но сам так и не сделал, все то лень то некогда. Вот и тыкаюсь постоянно в модули форм.
Надеюсь идея не умрет и топикстартер ее реализует:)
MaxDavid; dicwork; +2 Ответить
3. uriah 18 01.03.12 17:58 Сейчас в теме
На уровне интерфейсов этого не сделать, только
Если ИмяПользователя <> Пупкик Тогда
ИмяРевизита.Видимость(0)
КонцЕсли;
5. pvase 404 05.03.12 16:59 Сейчас в теме
Реквизиты делятся на закладки, все что касается ЗП скидывается на отдельные закладки, и в ПриОткрытии смотрятся права (НазваниеНабораПрав()), если у прав есть доступ на ЗП - Закладка добавляется, если прав нет - закладка не добавляется.
6. dicwork 05.03.12 21:06 Сейчас в теме
(5) pvase
В общем-то это было первым пришедшим на ум решением. Но мне не очень нравиться идея прописывания прямо в коде названий наборов прав. Мне понравилась идея dusha0020 с хранением видов доступа в виде справочника, но не знаю успею ли я ее реализовать - сроки завершения объединения баз поджимают. Если не буду успевать реализую пока вариант с закладками.
7. dicwork 06.03.12 15:38 Сейчас в теме
Кто встречал решения расширенного управления доступами на Infostart. Для семерки я пока нашел три публикации
http://infostart.ru/public/85364/
http://infostart.ru/public/20129/
http://infostart.ru/public/14886/
Может кто найдет больше :-)))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот