Нарушение прав доступа к ХранилищеОбщихНастроек

1. Azzkijhacker 28.11.17 17:53 Сейчас в теме
Есть самописный рег отчет. В этом отчете при создании на сервере срабатывает ф-ция получения Организации по умолчанию.
Так вот, при попытке пользователем создать новый отчет выдает: "Нарушение прав доступа" на метод Загрузить в строке:
ОсновнаяОрганизация = ХранилищеОбщихНастроек.Загрузить("ОсновнаяОрганизация",,,Пользователь).

Причем эта ошибка не возникает при запуске предприятия, когда этот пользователь заходит в 1с и норм возвращает организацию. А когда след раз при попытке создать новый отчет - на этой же строке уже ошибка. Где прокол? Журнал регистации показывает ошибку доступа на Право.АдминистрированиеДанных.
Найденные решения
8. Azzkijhacker 28.11.17 20:40 Сейчас в теме
Разобрался, но какой-то бред нестыковочный. Если не передавать в параметр явно пользователя, то никакой проверки на его право администрирования не будет И........ метод вернет значение для ТОГО ЖЕ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ. А если указать
Пользователь = Пользователи.ТекущийПользователь()
и это значение передать в
ОснОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация",Пользователь),
то сразу будет проверка на Право.АдминистрированиеДанных, а не указать -
ОснОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация") -
то все покажет также для текущего пользователя без проверки его права на администрирование.
Где логика?
Somarushka; ResetAtreides; user1114234; voneska7; metis76; Zaletov; markw; Revachol; nanik; alex-l19041; Good_Smile; Jesdva; Megaiff; erazh; GonziK_KIV; Гриффин; ring_andrey; XOCTEP; user705522_constantin_h; +19 Ответить
14. gustpa 12.03.20 15:22 Сейчас в теме
(8)Обратите внимание, что Пользователь в метод Загрузить передается строкой. Если не указать пользователя, то 1с сама поставит ИМЯ текущего пользователя и вернет настройки без административных прав. А "Пользователи.ТекущийПользователь()" после преобразования в строку может оказаться совершенно не именем текущего пользователя, например если возвращается элемент справочника "Пользователи" с наименованием отличным от имени пользователя информационной базы.
Somarushka; ResetAtreides; user1114234; 1Pawel; Zaletov; Merkalov; bav_itritm; Azzkijhacker; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user705522_constantin_h 36 28.11.17 18:46 Сейчас в теме
А у пользователя есть Право Администрирование данных?
3. Azzkijhacker 28.11.17 18:53 Сейчас в теме
Да нет конечно. Это простой бухгалтер. Имеется ввиду это право на всю базу целиком?
4. user705522_constantin_h 36 28.11.17 19:01 Сейчас в теме
(3) Для возможности сохранения/восстановления настроек необходимо право Администрирование данных.
5. Azzkijhacker 28.11.17 19:40 Сейчас в теме
То-есть простой рядовой пользователь без этого права не может использовать отчеты, в которых используется метод БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация",,,Пользователи.ТекущийПользователь()), потому как дальше по стандартному коду есть конструкция
ОсновнаяОрганизация = ХранилищеОбщихНастроек.Загрузить("ОсновнаяОрганизация",,,Пользователь). ???
6. user705522_constantin_h 36 28.11.17 19:59 Сейчас в теме
(5)Да. Откажитесь от сохранения/восстановления настроек, и всё будет нормально.
Попробуйте так:
Справочники.Организации.ОрганизацияПоУмолчанию()
7. Xershi 1496 28.11.17 20:15 Сейчас в теме
(5) или ты можешь прописать привилегированный режим и тогда для этой строки кода такое право не потребуется!
9. Azzkijhacker 28.11.17 20:41 Сейчас в теме
(7)Да с привилег режимом понятно, но это ж не камильфо
8. Azzkijhacker 28.11.17 20:40 Сейчас в теме
Разобрался, но какой-то бред нестыковочный. Если не передавать в параметр явно пользователя, то никакой проверки на его право администрирования не будет И........ метод вернет значение для ТОГО ЖЕ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ. А если указать
Пользователь = Пользователи.ТекущийПользователь()
и это значение передать в
ОснОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация",Пользователь),
то сразу будет проверка на Право.АдминистрированиеДанных, а не указать -
ОснОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация") -
то все покажет также для текущего пользователя без проверки его права на администрирование.
Где логика?
Somarushka; ResetAtreides; user1114234; voneska7; metis76; Zaletov; markw; Revachol; nanik; alex-l19041; Good_Smile; Jesdva; Megaiff; erazh; GonziK_KIV; Гриффин; ring_andrey; XOCTEP; user705522_constantin_h; +19 Ответить
10. Xershi 1496 28.11.17 21:16 Сейчас в теме
11. Kuzmin_A 18.06.19 17:48 Сейчас в теме
(8)
СтандартноеХранилищеНастроекМенеджер (StandardSettingsStorageManager)
Загрузить (Load)
Синтаксис:

Загрузить(<КлючОбъекта>, <КлючНастроек>, <ОписаниеНастроек>, <ИмяПользователя>)
Параметры:

<КлючОбъекта> (обязательный)

Тип: Строка.
Ключ объекта настройки.
Подробнее см. в Настройки, автоматически сохраняемые в системном хранилище.
<КлючНастроек> (необязательный)

Тип: Строка.
Ключ загружаемых настроек.
Значение по умолчанию: Пустая строка.
<ОписаниеНастроек> (необязательный)

Тип: ОписаниеНастроек.
Описание настроек.
Если не указан, то описание настройки не загружается.
<ИмяПользователя> (необязательный)

Тип: Строка.
Имя пользователя, настройки которого загружаются.
Если не указан, то загружаются настройки текущего пользователя.
В случае переименования пользователя прежние настройки не загружаются.
Если будет создан пользователь, имя которого совпадает с именем прежнего пользователя, для него будут использованы существующие настройки.
Если указан пользователь, не являющийся текущим пользователем, т.е. делается попытка обратиться к настройкам, не принадлежащим текущему пользователю, то требуется наличие у текущего пользователя права АдминистрированиеДанных.
maksa2005; user1114234; +2 Ответить
14. gustpa 12.03.20 15:22 Сейчас в теме
(8)Обратите внимание, что Пользователь в метод Загрузить передается строкой. Если не указать пользователя, то 1с сама поставит ИМЯ текущего пользователя и вернет настройки без административных прав. А "Пользователи.ТекущийПользователь()" после преобразования в строку может оказаться совершенно не именем текущего пользователя, например если возвращается элемент справочника "Пользователи" с наименованием отличным от имени пользователя информационной базы.
Somarushka; ResetAtreides; user1114234; 1Pawel; Zaletov; Merkalov; bav_itritm; Azzkijhacker; +8 Ответить
15. Azzkijhacker 12.03.20 17:29 Сейчас в теме
(14) Спасибо, в этом и была проблема
(14)
А "Пользователи.ТекущийПользователь()" после преобразования в строку может оказаться совершенно не именем текущего пользователя
12. den_vrn 12 15.08.19 16:45 Сейчас в теме
Платформа 8.3.12.1790 такой же прикол при использовании аутентификации операционной системой, выключаешь и никаких тебе ОТКАЗОВ ))))))))))))))))))
13. triviumfan 94 05.09.19 09:40 Сейчас в теме
Обошёл сию ситуацию с помощью привилегированного модуля.
16. aleksey2 87 11.12.20 08:06 Сейчас в теме
подскажите как решили проблему.
1с сыпется при запуске:
Нарушение прав доступа!
{ОбщийМодуль.БухгалтерскийУчетПереопределяемый.Модуль(1718)}: ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить(НастройкаВРег,,, ИмяПользователяИБ);
{Обработка.Форма(31)}: ТекущееПодразделение = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации", ТекущийПользователь.Наименование);
17. Xershi 1496 11.12.20 15:44 Сейчас в теме
18. Merkalov 9 26.05.21 04:38 Сейчас в теме
Передавать имя пользователя нужно методом:
"ПользователиИнформационнойБазы.ТекущийПользователь().Имя"
И никаких костылей с привилегированным режимом или выдачей админиских прав...
maksa2005; _Sasha_; baronzelan; evgeni-red; +4 Ответить
20. maksa2005 536 10.04.24 13:41 Сейчас в теме
(18)
ПользователиИнформационнойБазы.ТекущийПользователь().Имя

Благодарю
19. AgeevVG 06.06.22 12:56 Сейчас в теме
Работа с пользовательскими настройками

https://its.1c.ru/db/v8std/content/557/hdoc

Для работы с пользовательскими настройками требуется, чтобы для пользователя было доступно право СохранениеДанныхПользователя.
ital; itcorpru; FREEZZEE; metis76; Steelvan; hasan582; mkeeper; +7 Ответить
Оставьте свое сообщение

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