Способ хранения пользовательских и общих настроек для расширений 1С 8.3
Иногда требуется в доработках типовых конфигураций хранить пользовательские или общесистемные настройки. Обычно добавляют в расширение или основную конфигурацию новый регистр, куда и записывают свои настройки. Недостатки данного подхода:
- при создании регистров происходит реструктуризация таблиц СУБД, что иногда нежелательно или затруднительно выполнить, особенно на высоконагруженных системах;
- данные настроек уничтожаются при случайном или вынужденном удалении расширения;
- требуется написать относительно много кода для работы с регистрами.
Платформа 1С предлагает более простой способ выполнения этой задачи без вышеописанных недостатков. Для этого нужно использовать объект конфигурации ХранилищеОбщихНастроек:
Процедура ЗаписатьНастройку(Ключ, Значение) Экспорт
ХранилищеОбщихНастроек.Сохранить("РазработкаВасяна", Ключ, Значение,, "#ФейковыйЮзерНеСуществует");
КонецПроцедуры
Функция ПолучитьНастройку(Ключ) Экспорт
УстановитьПривилегированныйРежим(Истина);
Возврат ХранилищеОбщихНастроек.Загрузить("РазработкаВасяна", Ключ,, "#ФейковыйЮзерНеСуществует");
КонецФункции
Пояснение: настройки в виде любого произвольного значения записываются для пользователя #ФейковыйЮзерНеСуществует, из наименования которого следует что такого пользователя создавать не нужно. Это текстовый параметр функций "Загрузить" и "Сохранить" и трюк состоит в том, что платформа не производит проверку существования такого пользователя.
Если имя пользователя совпадает с текущим пользователем, то имеется полный доступ к хранилищу, этим можно воспользоваться для индивидуальных настроек. Но для общесистемных настроек нужно записывать для заведомо не существующего пользователя. В этом случае имена пользователей различаются и требуется полный доступ для чтения и записи, поэтому для чтения настроек устанавливается привилегированный режим. Записывать же настройки в моём примере сможет только пользователь с полными правами.