В наличии конфигурация Комплексная Автоматизация 2.5.17.128.
В своем расширении сохраняю путь к файлу выгрузки в строковом реквизите в общем хранилище. При открытии читаю, при закрытии пишу туда.
При полных правах - работает прекрасно. А вот попробовал запустить под обычным пользователем - дает ошибку...
Ошибка при вызове метода контекста (Загрузить)
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(36)}: РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка",, "РасчетчикЗП");
{икВыгрузкаЗПвБанк Документ.ВедомостьНаВыплатуЗарплатыВБанк.Форма.ФормаДокумента.Форма(7)}: ИмяФайлаВыгрузкиБанк = ВосстановитьИмяФайлаВыгрузкиНаСервере();
по причине:
Нарушение прав доступа!
Какие права надо дать пользователю, чтобы можно было использовать хранилище?

Вот кусочек кода, где ошибка поселилась.

```1c
    &НаКлиенте
    Процедура Расш_икВыгрузитьВБанкПосле(Команда)

    // 1. Надо вспомнить имя файла предыдущего сохранения.
    //
    ИмяФайлаВыгрузкиБанк = ВосстановитьИмяФайлаВыгрузкиНаСервере();

    // 2. Выдать диалог выбора файла для записи.
    //
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогВыбора.Заголовок = "Надо задать имя файла выгрузки для банка";
    ДиалогВыбора.Фильтр = "Файлы выгрузки(*.csv)|*.csv";
    ДиалогВыбора.ИндексФильтра = 0;
    ДиалогВыбора.ПредварительныйПросмотр = Ложь;
    ДиалогВыбора.ПроверятьСуществованиеФайла = Истина;
    ДиалогВыбора.МножественныйВыбор = Ложь;
    ДиалогВыбора.Каталог = Лев(ИмяФайлаВыгрузкиБанк, стрНайти(ИмяФайлаВыгрузкиБанк, "\", НаправлениеПоиска.СКонца));
    ДиалогВыбора.ПолноеИмяФайла = Сред(ИмяФайлаВыгрузкиБанк, стрНайти(ИмяФайлаВыгрузкиБанк, "\", НаправлениеПоиска.СКонца) + 1);

    // 3. Отдаем имя файла на сервер и там формируем и сохраняем файл.
    //
    Если ДиалогВыбора.Выбрать() Тогда
    ИмяФайлаВыгрузкиБанк = ДиалогВыбора.ПолноеИмяФайла;
    ВыгрузитьФайлВедомостьВБанк(ИмяФайлаВыгрузкиБанк);
    Сообщить("Файл " + ИмяФайлаВыгрузкиБанк + " записан.");
    КонецЕсли;

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

    &НаСервере
    Функция ВосстановитьИмяФайлаВыгрузкиНаСервере()

    РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка",, "РасчетчикЗП");
    Если ТипЗнч(РезультатИзХранилища) = Тип("Структура") Тогда
    Если РезультатИзХранилища.Свойство("ИмяФайлаВыгрузки") Тогда
    Возврат РезультатИзХранилища.ИмяФайлаВыгрузки;
    Иначе
    Возврат ";
    КонецЕсли;
    Иначе
    Возврат ";
    КонецЕсли;

    КонецФункции
```
---
Если это делается не под пользователем РасчетчикЗП, то нужно право АдминистрированиеДанных, см. синтакс-помощник:

Если указан пользователь, не являющийся текущим пользователем, т.е. делается попытка обратиться к настройкам, не принадлежащим текущему пользователю, то требуется наличие у текущего пользователя права АдминистрированиеДанных.
---
В конфигурациях на БСП нельзя менять пользователям состав ролей в конфигураторе.
Права настраиваются в пользовательском режиме.
---
Если это делается не под пользователем РасчетчикЗП, то нужно право АдминистрированиеДанных, см. синтакс-помощник:

Если указан пользователь, не являющийся текущим пользователем, т.е. делается попытка обратиться к настройкам, не принадлежащим текущему пользователю, то требуется наличие у текущего пользователя права АдминистрированиеДанных.
---
Такого права не нашел в Комплексной... Установил право "Администрирование" - взлетело.
Сделал запись настроек под РасчетчикомЗП. Прочитал - проверил, все ОК.
Вышел, убрал право Администрирование. Пробую снова Расчетчиком - дает ошибку.
Вывод - в синтакс-помощнике написано неверно. Не проверяется кем была проведена запись в хранилище. Всегда проверяется право Администрирование.
Спасибо за наводку. Сам бы я это право не стал бы проверять...
---
Вывод - в синтакс-помощнике написано неверно.А мужики-то не знают...
---
Заметил еще одну неприятную особенность. Эта самая роль "Администрирование" время от времени у пользователя слетает. Когда это происходит - не могу отследить. Но, как правило, утро начинается с сообщения в Ватсапе - "Я опять не могу сделать выгрузку в банк". Проверяю роли пользователя - галочки уже нет.
Зачем и кем убирается эта роль? И как сделать так, чтобы галочка стояла попрочнее? Возможно, еще какая-то роль должна быть разрешена...
---
1. Роль и Право - это разные вещи.
2. БСП, Управление доступом.
---
1. Согласен. В данном случае речь идет о ролях.
2. Это подсказка?
---
В конфигурациях на БСП нельзя менять пользователям состав ролей в конфигураторе.
Права настраиваются в пользовательском режиме.
---
Спасибо. Теперь разобрался.
---
А все равно не так...
Дал в пользовательском режиме права на "Открытие внешних отчетов и обработок" - все равно выдает "Нарушение прав доступа" при попытке обратиться к хранилищу настроек.
У меня больше нет подходящих прав...
Вы уж простите, может я ерунду какую-то спрашиваю... Всю жизнь на УПП работал, а тут вот это...
---
Перепиши уже внешнюю обработку так, чтобы она сохраняла и читала настройки для текущего пользователя (у каждого свои настройки будут). Или используй при сохранении/чтении настроек пустого пользователя (пустая строка) - тогда все настройки будут общими, и никаких прав на них проверяться не будет.

И не парь мозг. Всем.
---
Попробовал по-разному, заработало только вот в такой конфигурации - пользователя вообще не указываешь
```1c
    РезультатИзХранилища = ХранилищеОбщихНастроек.Загрузить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка");
    ХранилищеОбщихНастроек.Сохранить("Расширение_икВыгрузкаЗПвБанк", "ИмяФайлаВыгрузкиДляБанка", Новый Структура("ИмяФайлаВыгрузки", ИмяФайла));
```

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