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

28.05.09

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
-
.1243521224 17,41Kb
163
163 Скачать (1 SM) Купить за 1 850 руб.

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

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 Имя подписки "ПриУдалИзПроведенияДокумента" - событие "ОбработкаУдаленияПроведения" - объект  "ДокументОбъект" - обробник "МодульПравДоступа.ПриУдалИзПроведенияДокументаОбработкаПроведения"


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

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


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




См. также

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

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30187    10    1    

11

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

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6846    kamisov    18    

61

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

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

27.02.2024    8622    PROSTO-1C    10    

39

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

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

1 стартмани

27.10.2023    2608    platonov.e    1    

23

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

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

5 стартмани

24.04.2023    6448    21    soulner    8    

33

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

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

2 стартмани

08.12.2022    7592    53    Silenser    12    

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

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

Процедура ПриУдаленииДокументаПередУдалением(Источник, Отказ) Экспорт
ОбектВвода = "Видаляти";
РаботаСправами(ОбектВвода,Источник,Отказ);
КонецПроцедуры
(2) Это по-русски чтоли ?
4. ROM_1C 692 29.05.09 13:51 Сейчас в теме
(3) по-видимому, 1С не умеет читать украиского.. А кому "Записувати" или "Видаляти" не нравиться - прошу сюда http://pereklad.online.ua/
5. artbear 1565 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 692 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 692 27.02.10 11:57 Сейчас в теме
(11) Спеціально для Вас, mawr41, напишу, що для москалів!
13. Jane_R 27.12.12 13:00 Сейчас в теме
Вы меня извините, но я тоже из Украины. Но читать это не смогла. Тут же ошибка на ошибке! Вы выкладываете статью на русский сайт, не сделав пометки о том, что это решение подходит для Украины - это раз. И два - да загоните хотя бы в ворд текст для исправления ошибок - и то в два раза меньше их станет...
Если мы из Украины, то это не дает нам права не уважать русский язык.
14. Vigor06 15.06.13 18:46 Сейчас в теме
Перевел,поправил, перепилил под "Группы пользователей" - все отлично))Спасибо!
Оставьте свое сообщение