Сохранение настроек

12.09.23

Разработка - Универсальные функции

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

Платформа 1с8 предлагает неплохой функционал хранения настроек пользователя - хранилище настроек. Оно прекрасно справляется с сохранением данных настроек в автоматическом режиме. Пока это касается данных конкретного пользователя. Но что, если нужно хранить общие для всех пользователей настройки? Например дополнительные настройки номенклатуры, сотрудников, видов расчета? Тут у хранилища включается ограничение прав - прочитать настройки других пользователей можно лишь обладая правами "АдминистрированиеДанных". Даже включение привилегированного режима не поможет.

Можно воспользоваться функционалом дополнительных реквизитов и сведений. Или создавать свои объекты для хранения, например регистры сведений, благо с расширениями это стало гораздо проще. Или сохранять данные во внешние источники, файлы или таблицы. Все это работает, но не всегда возможно.

Я обычно использую иной путь. Он опробован на нескольких проектах, и несколько лет работает без единого сбоя как в файловых базах, так и клиент-серверных, как в среде Windows, так и Linux.

 

Что предлагается?

В конфигурациях на базе БСП есть отличная подсистема - "Варианты отчетов". Вот ее я и предлагаю использовать.

Создаем служебный элемент в справочнике "ВариантыОтчетов". В реквизит КлючВарианта помещаем строковый идентификатор нашей настройки. В дальнейшем по этому идентификатору будем читать сохраненные настройки. В реквизит Настройки помещаем наши настройки в виде хранилища значений. Записываем элемент в базу, предварительно сняв пометку удаления (если она есть), чтобы особо ретивые админы не удалили наши данные. При следующем обращении к элементу ищем его по ключу варианта.

Данные настроек я разбил на два раздела - общие и персональные. Персональные по идее можно хранить по старому, пусть платформа этим занимается. Но раз уж я взялся, чтобы два раза не вставать, пишу сюда и персональные тоже. Для сохранения настроек передаёте их функции СохранитьНастройки в любом удобном для вас виде (в теле функции разделаете их, как бог черепаху, уже сами) и идентификатор настройки (необязательно, если у вас только один объект настройки). Для чтения необходим только идентификатор, опять же необязательный. Если в процессе работы над проектом структура настроек претерпела изменения, можно их скорректировать после чтения в функции ПереопределитьНастройкиНовымиЗначениями.

 

Весь код под спойлером. Его можно вынести в общий модуль, можно в модуль отчета/обработки. Выполняется весь код на сервере. Метод зарекомендовал себя отлично, решил поделиться с сообществом.

 

Всем удачного кодинга!

 

 
 Код

 

На тему БСП и смежные темы см. также публикации:

Получение контактной информации из отбора

СКД. Использование Менеджера временных таблиц в системе компоновки

Вступайте в нашу телеграмм-группу Инфостарт

ХранилищеОбщихНастроек ВариантыОтчетов настройки

См. также

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    8777    41    24    

45

БСП (Библиотека стандартных подсистем) Роли и права Программист 1С v8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Наткнулся на костыль по работе с ролями. Хочу поделиться, как не попасть на это странное поведение БСП.

07.05.2025    6838    dsdred    32    

88

Универсальные функции Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    40574    dimanich70    83    

157

БСП (Библиотека стандартных подсистем) Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    13749    John_d    15    

103

Универсальные функции Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    48463    atdonya    30    

65

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    9224    mrXoxot    11    

114
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1445 23.11.20 09:22 Сейчас в теме
прочитать настройки других пользователей можно лишь обладая правами "АдминистрированиеДанных". Даже включение привилегированного режима не поможет.

Почему же не поможет? Все прекрасно в привилегированном режиме читается. А вот с установкой привилегированного режима в безопасном режиме да, есть свои "заморочки"
2. ixijixi 2044 23.11.20 09:48 Сейчас в теме
(1) С разных сторон заходил, ни разу не получилось, возможно дело было и правда в безопасном режиме. Буду признателен доп. информации
4. RocKeR_13 1445 23.11.20 09:51 Сейчас в теме
(2) Можно начать с того, что проверить, а устанавливается ли привилегированный режим у вас? У вас это происходит в рамках расширения, внешней обработки?
3. ABudnikov 3 23.11.20 09:48 Сейчас в теме
(1) Может поделитесь этими "заморочками" ?
5. RocKeR_13 1445 23.11.20 09:54 Сейчас в теме
(3) Для внешней обработки можно, например, тут почитать:
https://1cfresh.com/articles/so_addprocess_fastaudit

3.5. Запрос разрешений для дополнительных отчетов и обработок

При необходимости использования в дополнительном отчете или обработке операций, не разрешенных в безопасном режиме:

Запрашивайте в функции СведенияОВнешнейОбработке дополнительного отчета или обработки нужные разрешения с помощью вызовов функций:
РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты
РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса

Описания указанных выше функций см. по ссылке. Пример использования вызовов этих функций показан в обработке _ДемоЗагрузкаНоменклатурыИзПрайсЛистаПрофилиБезопасности из Демонстрационной конфигурации «Библиотека стандартных подсистем».
В функции СведенияОВнешнейОбработке дополнительного отчета или обработки указывайте режим работы дополнительного отчета или обработки Безопасный.


Для расширений в клиент-серверном варианте удалось в безопасном режиме установить привилегированный режим только при создании профиля безопасности и указания его для расширения. Код запроса разрешения приводил вот тут: https://forum.infostart.ru/forum29/topic222812/. Для файлового режима установка привилегированного режима в безопасном режиме в контексте расширения, похоже, невозможна, только снимать у расширения признак "Безопасный режим"
ABudnikov; Светлый ум; +2 Ответить
6. 6y6ka_gop 23.11.20 21:11 Сейчас в теме
Если уж завязываться на БСП, то почему бы не использовать безопасное хранилище данных?
Student1C; user811769; Yashazz; +3 Ответить
7. ixijixi 2044 23.11.20 21:56 Сейчас в теме
(6) Это отличный вариант, но столкнулся я с ним намного позже, чем отладил свой механизм)
user811769; +1 Ответить
9. DELOVOYDOM 15.01.24 05:08 Сейчас в теме
(7) Конфы типовые отраслевые 1с хранят общие настройки в константах. Я тоже там храню. Не очень понятно, зачем с Хранилищем мудрить? если сама 1с хранит в константах
10. ixijixi 2044 15.01.24 09:06 Сейчас в теме
(9) А еще в регистрах, в справочниках, в файлах и еще черти где) Чтобы хранить свои настройки в константах, надо сначала завести свои константы, а эта возможность далеко не всегда есть - база на поддержке или вообще в облаке. Поэтому выкручиваемся как кто может)
11. DELOVOYDOM 18.01.24 22:24 Сейчас в теме
(10) Все и везде переписали и переписывается на расширения. Никто уже давненько не правит типовую конфу по живому и не мучается с комплектами кастомных поставок и постановкой на поддержку от двух трех поставщиков. Одни плюсы, никаких минусов. Ну и отладка быстрее в разы иногда в десятки раз. За исключением задач и бизнес-процессов, но их не делают в расширении так как есть штатный объект в любой типовой, а в серьезных конфах карты бизнес-процессов хранятся во внешних источниках, редактируются проектным офисом в красивом веб интерфейсе и подгружаются в одну и ту же карту при визуализации процесса. Тем более задачи в конфе моветон создавать как разные метаданные, достаточно одного. Функция задачи это один клик.
Так что расширения уже с 21 платформы покрывают весь спектр. Создали в расширении константы для общих настроек и норм. Я именно написал про общие настройки, не про пользовательские
12. ixijixi 2044 19.01.24 08:54 Сейчас в теме
(11) Часть про облако Вы успешно проигнорировали) Штош, попробуйте ради разнообразия согласовать добавление во Fresh расширения с константами.

А вообще спор на пустом месте. Каждая задача требует своего подхода, я вовсе не отрицаю возможность сохранения настроек в константах, я просто показал еще одну возможность сохранения настроек, когда например других вариантов нет.
abasovit; 0x00; +2 Ответить
8. mikl79 120 11.12.20 17:31 Сейчас в теме
я тоже использую Безопасное хранилище для общих данных
13. cdiamond 235 22.03.24 08:57 Сейчас в теме
Для общих настроек, производимых админом, нет вообще смысла плодить сущности и тащить багаж БСП, ведь всё делается одной строкой кода:

Процедура ЗаписатьНастройку(Ключ, Значение) Экспорт
    
    ХранилищеОбщихНастроек.Сохранить("РазработкаВасяна", Ключ, Значение,, "#ФейковыйЮзерНеСуществует");

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

Функция ПолучитьНастройку(Ключ) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    Возврат ХранилищеОбщихНастроек.Загрузить("РазработкаВасяна", Ключ,, "#ФейковыйЮзерНеСуществует");
    
КонецФункции
Показать


Плюс в том, что в расширении не нужно добавлять новые регистры и делать реструктуризацию таблиц (если стоит такое требование). Второй плюс - при удалении расширения настройки случайно не пропадут.
Для отправки сообщения требуется регистрация/авторизация