Настройка прав пользователей доступа к объектам с под бухгалтерии

28.05.09

Администрирование - Информационная безопасность

Настройка прав доступа к справочникам и документам можно настройить с под бухгалтерии.

Скачать файлы

Наименование Файл Версия Размер
-
.1243521224 17,41Kb
163
.1243521224 17,41Kb 163 Скачать

Обработка, которая позволяет установить доступ к элементам справочников и документам, а именно:

1.Открытие

2.Ввод нового

3.Сохранение

4.Проводка

5.Снятие с проводки

6.Удаление

Все права настроюються для конкретного пользователя и сохраняються в регистр сведений. Для правильной работы программы нужно сделать несложную коректировку в конфигураторе. А именно:

1.Добавляем новый регистр свединий "ПраваДоступа" с полями: Користувач - тип справочник ссилка Пользователи, Тип, Вид, Обект - типзнач. "строка" и измерения "булево" тип Булево

Регистр переодичен - ДЕНЬ, регистратор - отсутствует!

он нужен для хранения прав.

2.Добавляем общий модуль "МодульПравДоступа". Туда копируем код:

 


Функция ПолучитьПрава(структураПрав)

    Користувач=структураПрав.Користувач;

    Тип=структураПрав.Тип;

    вид=структураПрав.Вид;

    обект=структураПрав.обект;

    Запрос = Новый Запрос;

    Запрос.Текст = ("ВЫБРАТЬ

    |    ПраваДоступаСрезПоследних.Користувач,

    |    ПраваДоступаСрезПоследних.Тип,

    |    ПраваДоступаСрезПоследних.Вид,

    |    ПраваДоступаСрезПоследних.Обект,

    |    ПраваДоступаСрезПоследних.Булево

    |ИЗ

    |    РегистрСведений.ПраваДоступа.СрезПоследних КАК ПраваДоступаСрезПоследних

    |ГДЕ

    |    ПраваДоступаСрезПоследних.Користувач = &текКористувач

    |    И ПраваДоступаСрезПоследних.Тип = &Тип

    |    И ПраваДоступаСрезПоследних.Вид = &Вид

    |    И ПраваДоступаСрезПоследних.Обект = &Обект

    |");

    Запрос.УстановитьПараметр("текКористувач", Користувач); 

    Запрос.УстановитьПараметр("Тип", Тип); 

    Запрос.УстановитьПараметр("Вид", Вид); 

    Запрос.УстановитьПараметр("Обект", Обект); 

    Результат = Запрос.Выполнить(); 

    ТЗ = Результат.Выгрузить(); 

    Возврат ТЗ;

КонецФункции



Процедура ПриУдаленииЭлементаСправочникаПередУдалением(Источник, Отказ) Экспорт 

    СтрокаСтипом =ТипЗнч(Источник);

    Если Найти(ТипЗнч(Источник),"Довідник") >0 Тогда 

        тип ="Довідники";

    КонецЕсли;

    Если Найти(ТипЗнч(Источник),":")>0 Тогда 

        вид=СокрЛП(Сред(ТипЗнч(Источник),Найти(ТипЗнч(Источник),":")+2)); 

    КонецЕсли;

    ОбектВвода = "Видаляти";

    Користувач = ПараметрыСеанса.ТекущийПользователь.Ссылка;

    структураПрав = Новый Структура;

    структураПрав.Вставить("Користувач",Користувач);

    структураПрав.Вставить("Тип",Тип);

    структураПрав.Вставить("Вид",Вид);

    структураПрав.Вставить("Обект",ОбектВвода);

    тз = ПолучитьПрава(структураПрав);

    Если ТЗ.количество() > 0 Тогда 

        Для Каждого стр из ТЗ Цикл 

            Если  стр.тип = структураПрав.Тип и  вид = структураПрав.Вид и стр.Користувач = структураПрав.Користувач Тогда 

                Если стр.Булево = Истина Тогда 

                    Отказ = Ложь;

                    Прервать;

                ИначеЕсли стр.булево = Ложь Тогда 

                        Отказ=Истина;

                    Прервать;

                КонецЕсли;

            КонецЕсли;

        КонецЦикла;

    Иначе 

        Отказ=Истина;

    КонецЕсли;    

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


Процедура ПриЗаписиЭлементаСправочникаПриЗаписи(Источник, Отказ)   Экспорт 

    СтрокаСтипом =ТипЗнч(Источник);

    Если Найти(ТипЗнч(Источник),"Довідник") >0 Тогда 

        тип ="Довідники";

    КонецЕсли;

    Если Найти(ТипЗнч(Источник),":")>0 Тогда 

        вид=СокрЛП(Сред(ТипЗнч(Источник),Найти(ТипЗнч(Источник),":")+2)); 

    КонецЕсли;

        ОбектВвода = "Записувати";

    Користувач = ПараметрыСеанса.ТекущийПользователь.Ссылка;

    структураПрав = Новый Структура;

    структураПрав.Вставить("Користувач",Користувач);

    структураПрав.Вставить("Тип",Тип);

    структураПрав.Вставить("Вид",Вид);

    структураПрав.Вставить("Обект",ОбектВвода);

    тз = ПолучитьПрава(структураПрав);

    Если ТЗ.количество() > 0 Тогда 

        Для Каждого стр из ТЗ Цикл 

            Если  стр.тип = структураПрав.Тип и  вид = структураПрав.Вид и стр.Користувач = структураПрав.Користувач  Тогда 

                Если стр.Булево = Истина Тогда 

                    Отказ = Ложь;

                    Прервать;

                ИначеЕсли стр.булево = Ложь Тогда 

                        Отказ=Истина;

                    Прервать;

                КонецЕсли;

            КонецЕсли;

        КонецЦикла;

    Иначе 

        Отказ=Истина;

    КонецЕсли;    

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


Процедура   ПриОткритииФормиСправочникаПроверитьПраваДоступа(формаспр,новий,отказ) Экспорт

  ФормаОбекта = "Довідник";

  ПроверитьПраваПриОткритииФорми(формаспр,новий,Отказ,ФормаОбекта);

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






Процедура ПриЗаписиДокумента(Источник, Отказ)  Экспорт 

    ОбектВвода = "Записувати";

    РаботаСправами(ОбектВвода,Источник,Отказ);

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


Процедура ПриУдаленииДокументаПередУдалением(Источник, Отказ)  Экспорт 

    ОбектВвода = "Видаляти";

    РаботаСправами(ОбектВвода,Источник,Отказ);

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


Процедура ПриПроведенииДокументаОбработкаПроведения(Источник, Отказ, РежимПроведения)  Экспорт 

    ОбектВвода = "Проводити";

    РаботаСправами(ОбектВвода,Источник,Отказ);

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


Процедура ПриУдалИзПроведенияДокументаОбработкаПроведения(Источник, Отказ, РежимПроведения)  Экспорт 

    ОбектВвода = "Знімати з проводки";

    РаботаСправами(ОбектВвода,Источник,Отказ);

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




Процедура РаботаСправами(ОбектВвода,Источник,Отказ)

       СтрокаСтипом =ТипЗнч(Источник);

    Если Найти(ТипЗнч(Источник),"Документ") >0 Тогда 

        тип ="Документи";

    КонецЕсли;

    Если Найти(ТипЗнч(Источник),":")>0 Тогда 

        вид=СокрЛП(Сред(ТипЗнч(Источник),Найти(ТипЗнч(Источник),":")+2)); 

    КонецЕсли;

        Користувач = ПараметрыСеанса.ТекущийПользователь.Ссылка;

    структураПрав = Новый Структура;

    структураПрав.Вставить("Користувач",Користувач);

    структураПрав.Вставить("Тип",Тип);

    структураПрав.Вставить("Вид",Вид);

    структураПрав.Вставить("Обект",ОбектВвода);

    тз = ПолучитьПрава(структураПрав);

    Если ТЗ.количество() > 0 Тогда 

        Для Каждого стр из ТЗ Цикл 

            Если  стр.тип = структураПрав.Тип и  вид = структураПрав.Вид и стр.Користувач = структураПрав.Користувач  Тогда 

                Если стр.Булево = Истина Тогда 

                    Отказ = Ложь;

                    Прервать;

                ИначеЕсли стр.булево = Ложь Тогда 

                        Отказ=Истина;

                    Прервать;

                КонецЕсли;

            КонецЕсли;

        КонецЦикла;

    Иначе 

        Отказ=Истина;

    КонецЕсли;    

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


Процедура ПриОткритииФормиДокументаПроверитьПрава(формаспр,новий,Отказ) Экспорт 

       ФормаОбекта = "Документ";

       ПроверитьПраваПриОткритииФорми(формаспр,новий,Отказ,ФормаОбекта);

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


Процедура ПроверитьПраваПриОткритииФорми(формаспр,новий,отказ,ФормаОбекта)

     Для аа = 1 По 2 Цикл 

        Если аа =1 Тогда 

            ОбектВвода ="Переглядати";

        ИначеЕсли аа=2 Тогда 

            Если новий = Истина Тогда 

                ОбектВвода ="Створювати новий";

            Иначе 

                Прервать;;

            КонецЕсли;

        КонецЕсли;

        СтрокаСтипом =ТипЗнч(формаСпр);

        Если Найти(ТИпзнч(формаСпр.ЭтотОбъект),ФормаОбекта) >0 Тогда 

            тип =ФормаОбекта+"и";

        КонецЕсли;

        Если Найти(ТИпзнч(формаСпр.ЭтотОбъект),":")>0 Тогда 

            вид=СокрЛП(Сред(ТИпзнч(формаСпр.ЭтотОбъект),Найти(ТИпзнч(формаСпр.ЭтотОбъект),":")+2)); 

        КонецЕсли;

        Користувач = ПараметрыСеанса.ТекущийПользователь.Ссылка;

        структураПрав = Новый Структура;

        структураПрав.Вставить("Користувач",Користувач);

        структураПрав.Вставить("Тип",Тип);

        структураПрав.Вставить("Вид",Вид);

        структураПрав.Вставить("Обект",ОбектВвода);

        тз = ПолучитьПрава(структураПрав);

        Если ТЗ.количество() > 0 Тогда 

            Для Каждого стр из ТЗ Цикл 

                Если стр.тип = структураПрав.Тип и  вид = структураПрав.Вид и стр.Користувач = структураПрав.Користувач Тогда 

                    Если стр.Булево = Истина Тогда 

                        Если аа= 1 или аа=2 Тогда 

                            Отказ = Ложь;

                            Прервать;

                        КонецЕсли;

                    ИначеЕсли стр.булево = Ложь Тогда 

                        Если аа= 1 или аа = 2 Тогда 

                            Отказ=Истина;

                            Прервать;

                        КонецЕсли;

                    КонецЕсли;

                КонецЕсли;

            КонецЦикла;

        Иначе 

            Отказ=Истина;

        КонецЕсли;

        Если отказ = Истина Тогда 

            Прервать;

        КонецЕсли;

    КонецЦикла;

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


 

 


3.На каждое событие, что сбываетсья в документе и справочнике нужно создать подписку на событие.

 3.1 Имя подписки "ПриУдаленииЭлементаСправочника" - событие "ПередУдалением" - объект  "СправочникОбъект" - обробник "МодульПравДоступа.ПриУдаленииЭлементаСправочникаПередУдалением"

3.2. Имя подписки "ПриЗаписиЭлементаСправочника" - событие "ПриЗаписи" - объект  "СправочникОбъект" - обробник "МодульПравДоступа.ПриЗаписиЭлементаСправочникаПриЗаписи"

3,3, Имя подписки "ПриЗаписиДокумента" - событие "ПриЗаписи" - объект  "ДокументОбъект" - обробник "МодульПравДоступа.ПриЗаписиДокумента"

3,4 Имя подписки "ПриУдаленииДокумента" - событие "ПередУдалением" - объект  "ДокументОбъект" - обробник "МодульПравДоступа.ПриУдаленииДокументаПередУдалением"

3,5 Имя подписки "ПриПроведенииДокумента" - событие "ОбработкаПроведения" - объект  "ДокументОбъект" - обробник "МодульПравДоступа.ПриПроведенииДокументаОбработкаПроведения"

3,6 Имя подписки "ПриУдалИзПроведенияДокумента" - событие "ОбработкаУдаленияПроведения" - объект  "ДокументОбъект" - обробник "МодульПравДоступа.ПриУдалИзПроведенияДокументаОбработкаПроведения"


В те формы справочников, гду нудно запретить открытие и т.д нужно вставить в процедуру "ПередОткрытием" глобальну процедуру: МодульПравДоступа.ПриОткритииФормиСправочникаПроверитьПраваДоступа(ЭтаФорма,Этоновый(),Отказ);

В формы тех документов, которые нужно заперетить теже действия нужно вставить в процедуру "ПередОткрытием" глобальну процедуру: МодульПравДоступа.ПриОткритииФормиДокументаПроверитьПрава(ЭтаФорма,Этоновый(),Отказ);


Ну вроде все написал.. Обработка лежит! Строго не судите, пишите коменатарии кто и как применил!




См. также

AUTO VPN (portable)

Информационная безопасность Платные (руб)

Автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    14399    22    32    

33

Настройка аутентификации в 1С с использованием стандарта RFC 7519 (JWT)

Информационная безопасность Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    2608    PROSTO-1C    9    

29

Device flow аутентификация, или туда и обратно

Информационная безопасность Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    1618    platonov.e    1    

23

Анализатор безопасности базы сервера 1С

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Продукты на основе решений 1С уверенной поступью захватывают рынок учётных систем в стране. Широкое распространение программ всегда порождает большой интерес к ним со стороны злоумышленников, а пользователь 1С это одна из дверей в защищённый информационный контур предприятия. Обработка позволяет быстро и комплексно оценить настройки безопасности конкретной базы и возможности пользователя этой базы на сервере. Также можно оценить некоторые аспекты сетевой безопасности предприятия со стороны сервера 1С.

5 стартмани

24.04.2023    5438    14    soulner    7    

29

Двухфакторная аутентификация в 1С через Telegram и Email

Информационная безопасность Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    5968    32    Silenser    12    

23

История одного взлома или проверьте вашу систему на безопасность

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

От клиента клиенту, от одной системы к другой, мы вновь и вновь встречаем одни и те же проблемы и дыры в безопасности. На конференции Infostart Event 2021 Post-Apocalypse Виталий Онянов рассказал о базовых принципах безопасности информационных систем и представил чек-лист, с помощью которого вы сможете проверить свою систему на уязвимость.

26.10.2022    9245    Tavalik    46    

113
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 28.05.09 18:41 Сейчас в теме
>>> гду нудно
>>> ПриОткритииФормиДокумента
Ужоснах. А шо це такэ?
тип ="Довідники"

Укажи в заголовке, только для Украины или перепиши нормально по-русски
2. ROM_1C 691 28.05.09 19:07 Сейчас в теме
(1)Тепер и для России тоже!
"Ужоснах" - это где? может опечатка!
3. artbear 1448 29.05.09 09:30 Сейчас в теме
Процедура ПриЗаписиДокумента(Источник, Отказ) Экспорт
ОбектВвода = "Записувати";
РаботаСправами(ОбектВвода,Источник,Отказ);
КонецПроцедуры

Процедура ПриУдаленииДокументаПередУдалением(Источник, Отказ) Экспорт
ОбектВвода = "Видаляти";
РаботаСправами(ОбектВвода,Источник,Отказ);
КонецПроцедуры
(2) Это по-русски чтоли ?
4. ROM_1C 691 29.05.09 13:51 Сейчас в теме
(3) по-видимому, 1С не умеет читать украиского.. А кому "Записувати" или "Видаляти" не нравиться - прошу сюда http://pereklad.online.ua/
5. artbear 1448 29.05.09 14:53 Сейчас в теме
(4) Ну и поставь в название суффикс/префикс "Укр" или прямо напиши, что на украинском.
Извини, но здесь российский сайт все-таки, и хотелось бы простым и ясным образом различать российские и не российские разработки, хотя бы по названию.
6. igor_gk 49 03.06.09 11:06 Сейчас в теме
Гы... а мне пофиг на каком - я с 5-ти лет и на русском и на украинском читать умею :)
И переписать код для меня не проблема :)) Просто могу.
7. aist 05.06.09 22:48 Сейчас в теме
А есть тоже самое на русском?, если есть то кинте, а то переписывать ломы.
8. ROM_1C 691 05.06.09 23:33 Сейчас в теме
(7) на русском нет.. там переписовать не так уж много.. слов 15 где-то:)
9. inse0f 09.07.09 22:36 Сейчас в теме
10. bva630 4 14.07.09 14:13 Сейчас в теме
11. mawr41 27.02.10 07:47 Сейчас в теме
и я тоже поржал, имейте совесть господин РОМ, вы на российском сайте, то будьте добры написать по русски или указать в шапке что для хохлов. За это большой минус
12. ROM_1C 691 27.02.10 11:57 Сейчас в теме
(11) Спеціально для Вас, mawr41, напишу, що для москалів!
13. Jane_R 27.12.12 13:00 Сейчас в теме
Вы меня извините, но я тоже из Украины. Но читать это не смогла. Тут же ошибка на ошибке! Вы выкладываете статью на русский сайт, не сделав пометки о том, что это решение подходит для Украины - это раз. И два - да загоните хотя бы в ворд текст для исправления ошибок - и то в два раза меньше их станет...
Если мы из Украины, то это не дает нам права не уважать русский язык.
14. Vigor06 15.06.13 18:46 Сейчас в теме
Перевел,поправил, перепилил под "Группы пользователей" - все отлично))Спасибо!
Оставьте свое сообщение