Нарушение прав доступа при обращении к хранилищу общих настроек
В наличии конфигурация Комплексная Автоматизация 2.5.17.128.
В своем расширении сохраняю путь к файлу выгрузки в строковом реквизите в общем хранилище. При открытии читаю, при закрытии пишу туда.
При полных правах - работает прекрасно. А вот попробовал запустить под обычным пользователем - дает ошибку...
Какие права надо дать пользователю, чтобы можно было использовать хранилище?
Вот кусочек кода, где ошибка поселилась.
В своем расширении сохраняю путь к файлу выгрузки в строковом реквизите в общем хранилище. При открытии читаю, при закрытии пишу туда.
При полных правах - работает прекрасно. А вот попробовал запустить под обычным пользователем - дает ошибку...
Ошибка при вызове метода контекста (Загрузить)
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(36)}: РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка",, "РасчетчикЗП");
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(7)}: ИмяФайлаВыгрузкиБанк = ВосстановитьИмяФайлаВыгрузкиНаСервере();
по причине:
Нарушение прав доступа!
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(36)}: РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка",, "РасчетчикЗП");
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(7)}: ИмяФайлаВыгрузкиБанк = ВосстановитьИмяФайлаВыгрузкиНаСервере();
по причине:
Нарушение прав доступа!
Какие права надо дать пользователю, чтобы можно было использовать хранилище?
Вот кусочек кода, где ошибка поселилась.
&НаКлиенте
Процедура Расш_икВыгрузитьВБанкПосле(Команда)
// 1. Надо вспомнить имя файла предыдущего сохранения.
//
ИмяФайлаВыгрузкиБанк = ВосстановитьИмяФайлаВыгрузкиНаСервере();
// 2. Выдать диалог выбора файла для записи.
//
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогВыбора.Заголовок = "Надо задать имя файла выгрузки для банка";
ДиалогВыбора.Фильтр = "Файлы выгрузки(*.csv)|*.csv";
ДиалогВыбора.ИндексФильтра = 0;
ДиалогВыбора.ПредварительныйПросмотр = Ложь;
ДиалогВыбора.ПроверятьСуществованиеФайла = Истина;
ДиалогВыбора.МножественныйВыбор = Ложь;
ДиалогВыбора.Каталог = Лев(ИмяФайлаВыгрузкиБанк, стрНайти(ИмяФайлаВыгрузкиБанк, "\", НаправлениеПоиска.СКонца));
ДиалогВыбора.ПолноеИмяФайла = Сред(ИмяФайлаВыгрузкиБанк, стрНайти(ИмяФайлаВыгрузкиБанк, "\", НаправлениеПоиска.СКонца) + 1);
// 3. Отдаем имя файла на сервер и там формируем и сохраняем файл.
//
Если ДиалогВыбора.Выбрать() Тогда
ИмяФайлаВыгрузкиБанк = ДиалогВыбора.ПолноеИмяФайла;
ВыгрузитьФайлВедомостьВБанк(ИмяФайлаВыгрузкиБанк);
Сообщить("Файл " + ИмяФайлаВыгрузкиБанк + " записан.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВосстановитьИмяФайлаВыгрузкиНаСервере()
РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка",, "РасчетчикЗП");
Если ТипЗнч(РезультатИзХранилища) = Тип("Структура") Тогда
Если РезультатИзХранилища.Свойство("ИмяФайлаВыгрузки") Тогда
Возврат РезультатИзХранилища.ИмяФайлаВыгрузки;
Иначе
Возврат "";
КонецЕсли;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
Если это делается не под пользователем РасчетчикЗП, то нужно право АдминистрированиеДанных, см. синтакс-помощник:
Если указан пользователь, не являющийся текущим пользователем, т.е. делается попытка обратиться к настройкам, не принадлежащим текущему пользователю, то требуется наличие у текущего пользователя права АдминистрированиеДанных.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если это делается не под пользователем РасчетчикЗП, то нужно право АдминистрированиеДанных, см. синтакс-помощник:
Если указан пользователь, не являющийся текущим пользователем, т.е. делается попытка обратиться к настройкам, не принадлежащим текущему пользователю, то требуется наличие у текущего пользователя права АдминистрированиеДанных.
(2) Такого права не нашел в Комплексной... Установил право "Администрирование" - взлетело.
Сделал запись настроек под РасчетчикомЗП. Прочитал - проверил, все ОК.
Вышел, убрал право Администрирование. Пробую снова Расчетчиком - дает ошибку.
Вывод - в синтакс-помощнике написано неверно. Не проверяется кем была проведена запись в хранилище. Всегда проверяется право Администрирование.
Спасибо за наводку. Сам бы я это право не стал бы проверять...
Сделал запись настроек под РасчетчикомЗП. Прочитал - проверил, все ОК.
Вышел, убрал право Администрирование. Пробую снова Расчетчиком - дает ошибку.
Вывод - в синтакс-помощнике написано неверно. Не проверяется кем была проведена запись в хранилище. Всегда проверяется право Администрирование.
Спасибо за наводку. Сам бы я это право не стал бы проверять...
Заметил еще одну неприятную особенность. Эта самая роль "Администрирование" время от времени у пользователя слетает. Когда это происходит - не могу отследить. Но, как правило, утро начинается с сообщения в Ватсапе - "Я опять не могу сделать выгрузку в банк". Проверяю роли пользователя - галочки уже нет.
Зачем и кем убирается эта роль? И как сделать так, чтобы галочка стояла попрочнее? Возможно, еще какая-то роль должна быть разрешена...
Зачем и кем убирается эта роль? И как сделать так, чтобы галочка стояла попрочнее? Возможно, еще какая-то роль должна быть разрешена...
А все равно не так...
Дал в пользовательском режиме права на "Открытие внешних отчетов и обработок" - все равно выдает "Нарушение прав доступа" при попытке обратиться к хранилищу настроек.
У меня больше нет подходящих прав...
Вы уж простите, может я ерунду какую-то спрашиваю... Всю жизнь на УПП работал, а тут вот это...
Дал в пользовательском режиме права на "Открытие внешних отчетов и обработок" - все равно выдает "Нарушение прав доступа" при попытке обратиться к хранилищу настроек.
У меня больше нет подходящих прав...
Вы уж простите, может я ерунду какую-то спрашиваю... Всю жизнь на УПП работал, а тут вот это...
(10) Перепиши уже внешнюю обработку так, чтобы она сохраняла и читала настройки для текущего пользователя (у каждого свои настройки будут). Или используй при сохранении/чтении настроек пустого пользователя (пустая строка) - тогда все настройки будут общими, и никаких прав на них проверяться не будет.
И не парь мозг. Всем.
И не парь мозг. Всем.
(11) Попробовал по-разному, заработало только вот в такой конфигурации - пользователя вообще не указываешь
Тогда работает. При пустом пользователе - снова ошибка доступа.
РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка");
ХранилищеОбщихНастроек.Сохранить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка", Новый Структура("ИмяФайлаВыгрузки", ИмяФайла));
Тогда работает. При пустом пользователе - снова ошибка доступа.
(16) Чтобы прочитать что-то ненужное - надо сначала сохранить что-то ненужное.
Естественно, ты настройки сохраненные под другим пользователем не прочитаешь с пустым ключом.
Или ты думал, что наличие пустого ключа дает какие-то безграничные права? Так нет - безгранично пользоваться можно только тем, что выложили именно для безграничного пользования.
Естественно, ты настройки сохраненные под другим пользователем не прочитаешь с пустым ключом.
Или ты думал, что наличие пустого ключа дает какие-то безграничные права? Так нет - безгранично пользоваться можно только тем, что выложили именно для безграничного пользования.
(17) Может Вы не всё прочитали...
Запускаю под пользователем с полными правами, сохраняю. В сохранении указываю пользователя "РасчетчикЗП" (напомню, что это строковый реквизит и смысл его, как его позиционирует 1С, - пользователь)
Запускаю второй раз - прекрасно всё читается.
Теперь запускаю под другим пользователем без полных прав. В чтении и сохранении указан тот же пользователь. И происходит ошибка доступа.
И, наконец, запускаю под полными правами, записываю без указания пользователя. Запускаю без полных прав - читается без указания пользователя и без ошибок.
И вот тут у меня непонятки - этот параметр "Пользователь" - он для чего? Какова его смысловая нагрузка? И почему он строковый?
Запускаю под пользователем с полными правами, сохраняю. В сохранении указываю пользователя "РасчетчикЗП" (напомню, что это строковый реквизит и смысл его, как его позиционирует 1С, - пользователь)
Запускаю второй раз - прекрасно всё читается.
Теперь запускаю под другим пользователем без полных прав. В чтении и сохранении указан тот же пользователь. И происходит ошибка доступа.
И, наконец, запускаю под полными правами, записываю без указания пользователя. Запускаю без полных прав - читается без указания пользователя и без ошибок.
И вот тут у меня непонятки - этот параметр "Пользователь" - он для чего? Какова его смысловая нагрузка? И почему он строковый?
(10) Не сохранять под чужим пользователем настройки. Это плохое решение.
Каждому пользователю сохранять настройки под собой.
При первом открытии обработки, можете явно присвоить в коде значение по умолчанию.
Далее, если настройки были под этим пользователем сохранены - они загрузятся.
Каждому пользователю сохранять настройки под собой.
При первом открытии обработки, можете явно присвоить в коде значение по умолчанию.
Далее, если настройки были под этим пользователем сохранены - они загрузятся.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот