Каталог решений - Сохранение настроек

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

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

В наличии

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

Категория:

Описание

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

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

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

 

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

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

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

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

 

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

 

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

 

 

has been added to your cart:
Оформление заказа