Хранилища настроек - это общие объекты конфигурации . Они позволяют разработчику создавать собственные механизмы хранения настроек, в тех случаях, когда возможности стандартного механизма хранения настроек недостаточны.
В процессе работы пользователь выполняет различные настройки в системе: создает варианты отчетов, сохраняет настройки отчетов, вводит какие-то данные в формы и т.д. Кроме этого в конкретном прикладном решении могут существовать собственные настройки, определяемые логикой работы этого решения, которые делают работу пользователя более удобной. Эти настройки сохраняются платформой в системных таблицах информационной базы.
Однако не во всех случаях системные механизмы сохранения настроек могут на 100% удовлетворить потребности разработчика. Хранилища настроек как раз позволяют разработчику хранить пользовательские настройки не в системных таблицах, а в объектах конфигурации (например, в специальных справочниках, в регистрах сведений). Благодаря этому разработчик может реализовать собственный формат хранения этих настроек и собственные алгоритмы работы с этими настройками. Например, когда требуется особенная структура хранения настроек, когда необходимо обеспечить передачу настроек в пределах распределенной информационной базы, когда существуют особенные требования к администрированию настроек и т.д.
Объект 1С "ХранилищеСистемныхНастроек" я называю "внутренним кэшем" 1С, он содержит объект менеджера стандартного хранилища настроек , предназначенный для доступа к системным настройкам.
При модицикации конфигурации иногда не достаточно очистить внешний кэш 1С, т.е. файлы созданные платформой 1С на жестком диске для хранения настроек пользователя, и требуется дополнительно очистить "внутренний кэш" 1С с чем и справится представленная разработка!
Обработка «Хранилище системных настроек» представляет собой полностью автономное решение, с точки зрения встраивания в любую конфигурацию, как на обычных, так и на управляемых формах! А версия платформы начиная с 8.2 не играет роли! В коде не используются синхронные и модальные вызовы!
Обработка показывает работу с методами типа данных:
СтандартноеХранилищеНастроекМенеджер
СтандартноеХранилищеНастроекМенеджер (StandardSettingsStorageManager)
Методы:
Выбрать (Select)
Загрузить (Load)
ПолучитьОписание (GetDescription)
ПолучитьСписок (GetList)
Сохранить (Save)
Удалить (Delete)
УстановитьОписание (SetDescription)
Описание:
Объекты этого типа предназначены для доступа к настройкам, хранящимся в стандартном хранилище.
Для доступа к настройкам вариантов отчетов объект этого типа должен быть получен из свойства глобального контекста ХранилищеВариантовОтчетов.
Для доступа к пользовательским настройкам отчетов объект этого типа должен быть получен из свойства глобального контекста ХранилищеПользовательскихНастроекОтчетов.
Для доступа к пользовательским настройкам данных форм объект этого типа должен быть получен из свойства глобального контекста ХранилищеНастроекДанныхФорм.
Для доступа к общим настройкам объект этого типа должен быть получен из свойства глобального контекста ХранилищеОбщихНастроек.
Для доступа к системным настройкам объект этого типа должен быть получен из свойства глобального контекста ХранилищеСистемныхНастроек.
Для доступа к пользовательским настройкам динамических списков объект этого типа должен быть получен из свойства глобального контекста ХранилищеПользовательскихНастроекДинамическихСписков.
Доступность:
Сервер, толстый клиент, внешнее соединение.
См. также:
Глобальный контекст, свойство ХранилищеСистемныхНастроек
Весь функционал проиллюстрирован в скриншотах.
Внимание! Имя пользователя должно совпадать с именем пользователя ИБ! Иначе кнопка "Получить настройки пользователя" будет работать не корректно и часть функционала не сработает. Но если переименовывать пользователей проблематично просто используйте только кнопку "Получить настройки всех пользователей"!
P.S. Если материал вам помог, поблагодарите автора, поставив звездочку!
Для сохранения информации о настройках пользователя, которая должна сохраняться между сеансами работы, в платформе реализованы хранилища настроек.
Существует два вида хранилищ настроек:
Например, в этом объекте может быть описана работа с настройками, которые хранятся в справочнике.
Платформа использует пять хранилищ:
1. Системное хранилище – в данное хранилище система сохраняет все возможные настройки, которые нужны для работы платформы. К данным настройкам относятся настройки размеров форм, настройки печати табличного документа и т. п. Полный перечень настроек, сохраняемых в системном хранилище, перечислен в Приложении В. В качестве системного хранилища настроек всегда используется стандартное хранилище настроек. Т. е. данные системного хранилища всегда сохраняются в системной таблице информационной базы.
2. Хранилище общих настроек – данное хранилище предназначено для хранения различных настроек прикладного решения. Платформа самостоятельно не записывает в данное хранилище никаких настроек. Данное хранилище должен использовать разработчик из встроенного языка, для того чтобы выполнять сохранение/восстановление прикладных настроек пользователя.
3. Хранилище пользовательских настроек отчетов – в данное хранилище помещаются пользовательские настройки отчетов.
4. Хранилище вариантов отчетов – в данное хранилище помещаются варианты отчетов.
5. Хранилище настроек данных форм – в это хранилище сохраняются данные форм. Этим хранилищем можно пользоваться, например, для сохранения реквизитов обработок. При этом можно выбрать индивидуальное хранилище для каждого отчета и обработки.
При разработке конфигурации имеется возможность определить собственные хранилища настроек для всех хранилищ (кроме системного хранилища). Для этого необходимо создать объект хранилище настроек в соответствующей ветке дерева метаданных и затем указать его в нужном свойстве конфигурации. Свойства объекта Конфигурация имеют те же имена, что и вышеперечисленные хранилища.
Таким образом, данные хранилищ могут храниться как в системной таблице информационной базы, так и в некотором специальном объекте информационной базы, например, в справочнике или регистре сведений. Например, можно создать в конфигурации объект хранилище настроек и указать в свойстве конфигурации, что данное хранилище следует использовать для хранения настроек отчетов. Таким образом, настройки отчетов будут сохраняться не в системной таблице, а в некотором объекте, например, в справочнике, что дает возможность организовать работу с едиными настройками отчетов, реализовать систему прав, обмен настройками и т.п.
Объект метаданных ХранилищеНастроек предназначен для обеспечения хранения прикладных настроек конфигурации. За счет реализации обработчиков событий и создания формы объекта выполняется модификация механизма работы с настройками таким образом, что изменяется место хранения настроек (вместо системных таблиц используются специальные объекты конфигурации, которые создал разработчик) и визуальные механизмы работы с настройками.
В конфигурации может быть определено произвольное количество хранилищ настроек.
У объекта ХранилищеНастроекМенеджер имеется ряд методов, которые вызывают соответствующие события. Таким образом, определением обработчиков событий описывается логика сохранения/загрузки настроек.
В методах хранилища и обработчиках используются следующие параметры:
В процессе разработки хранилища, разработчик самостоятельно определяет, каким образом будет идентифицироваться объект хранилища, тем самым, определяя тип параметра.
Например, если настройки сохраняются в справочнике, то в качестве ключа настройки можно использовать поле Код или значение Ссылка (элемента справочника).
Объект ХранилищеНастроек предоставляет следующие методы:
Вызывает событие ОбработкаСохранения. Если обработчик события не реализован или пустой, то действие не будет выполнено.
Вызывает событие ОбработкаЗагрузки. Если обработчик события не реализован или пустой, то действие не будет выполнено.
Вызывает событие ОбработкаПолученияОписания. Если обработчик события не реализован или пустой, то действие не будет выполнено.
Вызывает событие ОбработкаУстановкиОписания. Если обработчик события не реализован или пустой, то действие не будет выполнено.
Подробнее про параметры методов можно посмотреть во встроенной справке.
В модуле менеджера объекта должны находится обработчики следующих событий:
Подробнее про параметры обработчиков можно посмотреть во встроенной справке.
Кроме описания обработчиков в хранилище настроек необходимо определить формы, которые будут использоваться при сохранении и выборе настроек пользователем.
Когда пользователь применяет команды сохранения или загрузки настроек, система получает соответствующую форму объекта хранилища настроек, и отображает ее на экране.
Например, при сохранении настроек отчета система будет использовать форму сохранения того объекта метаданных, который указан в качестве хранилища настроек отчетов (непосредственно у самого отчета или у всей конфигурации). При этом форме будут переданы следующие параметры:
При создании формы с помощью конструктора, вышеописанные параметры будут автоматически добавлены в список параметров формы.
В формах следует использовать переданные параметры и соответствующим образом фильтровать список настроек. Так, следует отображать только настройки для указанного в параметре КлючОбъекта объекта настройки (например, отчета).
Если пользователь выбрал настройку, то результатом работы формы должно быть значение типа ВыборНастроек. В этом значении, в свойстве КлючНастроек, должен находиться ключ выбранной настройки (например, код элемента справочника или другой, идентифицирующий настройку параметр), а в свойстве ДополнительныеСвойства – дополнительная информация, которую пользователь мог указать в форме.
Стандартное хранилище настроек представляется во встроенном языке объектом СтандартноеХранилищеНастроекМенеджер. Данный объект реализует тот же набор методов, что и объект ХранилищеНастроекМенеджер, и дополнительно реализует методы:
Стандартное хранилище сохраняет настройки в системных таблицах информационной базы.
В качестве ключа объекта настройки и в качестве ключа настройки системное хранилище настроек принимает строку.
В качестве настроек системное хранилище принимает любое значение, которое может быть помещено в хранилище значений.
Разработчик может управлять сохранением данных управляемых форм в настройках. Для этого при разработке формы ему необходимо воспользоваться следующими свойствами формы:
Если для формы установлена возможность сохранения данных, то необходимо указать, какие реквизиты формы должны сохраняться (колонка Сохранение на закладке Реквизиты редактора формы).
При сохранении настроек в качестве ключа объекта используется полное имя формы. В настройках сохраняется объект типа Соответствие, в котором в качестве ключей находятся пути к сохраняемым реквизитам, а в качестве значений – их (реквизитов) значения.
Для дополнительной обработки сохранения и загрузки в форме имеются следующие обработчики:
У объектов отчет и внешний отчет имеется свойства метаданных ХранилищеВариантов и ХранилищеНастроек. В данных свойствах указывается, в какие хранилища нужно сохранять варианты и настройки отчета соответственно. Если хранилища не указаны, то используются хранилища, указанные в свойствах конфигурации.
Форма отчета предоставляет команды сохранения и загрузки вариантов и настроек отчетов.
Для дополнительной обработки сохранения и загрузки настроек и вариантов отчета в расширении формы отчета имеются следующие обработчики:
При необходимости сохранять в настройках компоновки данных или пользовательских настройках компоновки данных некоторую дополнительную информацию можно воспользоваться свойствами ДополнительныеСвойства объектов НастройкиКомпоновкиДанных и ПользовательскиеНастройкиКомпоновкиДанных. Свойство ДополнительныеСвойства представляет собой объект типа Структура.
1. Определяется, какое хранилище (см. начало главы) будет использоваться. Например, будем реализовывать хранилище настроек данных форм конфигурации.
2. Определяется перечень объектов метаданных, которые будут использовать это хранилище, и определяется перечень хранимой информации, ее структура и типы. Эта информация поможет нам правильно выбрать объект метаданных, в данных которого будут храниться наши настройки.
3. На основании информации из п. 2 создается объект (и его структура), который будет хранить настройки. Пусть наши настройки хранятся в элементах справочника. Т. к. в нашем случае структура сохраняемых данных крайне разнородна, то нет смысла реализовывать отдельный набор реквизитов для хранения настроек каждой формы, поэтому настройки будут храниться в реквизите справочника типа ХранилищеЗначения.
4. Создается объект типа ХранилищеНастроек и для него выполняется реализация форм сохранения и загрузки. Тем самым мы обеспечиваем интерактивность при сохранении и восстановлении настроек.
5. Для созданного объекта ХранилищеНастроек выполняется реализация обработчиков событий, связанных с сохранением и восстановлением настроек. Если не выполнить эту операцию, то не будут происходить собственно операции чтения/записи настроек. Для решения этой задачи нужно реализовать обработчики событий ОбработкаСохранения и ОбработкаЗагрузки в модуле созданного объекта типа ХранилищеНастроек.
6. В объектах, выделенных в п. 2 (или в свойствах конфигурации), заполняются соответствующие свойства, тем самым указывая объектам, в каких хранилищах будут храниться настройки. В нашем примере необходимо заполнить свойство конфигурации Хранилище настроек данных форм ссылкой на объект, созданный на шаге 4.
7. При необходимости выполняется реализация обработчиков событий, связанных с сохранением и восстановлением настроек в тех прикладных объектах, где это необходимо.
Приложение описывает настройки, которые автоматически сохраняются платформой в системном хранилище.
меню Справка/Содержание справки/1С предприятие/Встроенный язык/Глобальный контекст/Свойства/Хранилища настроек
меню Справка/Содержание справки/1С предприятие/Встроенный язык/Прикладные объекты/Хранилища настроек
Глобальный контекст содержит ряд свойств (глобальных объектов), используемых для работы с настройками.
Использование: Только чтение.
Тип: СтандартноеХранилищеНастроекМенеджер; ХранилищеНастроекМенеджер.
Свойства глобального контекста:
В разделе описываются прикладные объекты, используемые для работы с хранилищем настроек.
Описание: Хранилище настроек, хранящее настройки в системных таблицах.
Доступность: клиент, сервер, внешнее соединение.
См. также: Глобальный контекст, свойство ХранилищеСистемныхНастроек
Элементы коллекции: ХранилищеНастроекМенеджер
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются хранилища настроек.
Возможно обращение к хранилищу настроек посредством оператора [...]. В качестве аргумента передается имя хранилища, как оно задано в конфигурации.
Свойства:
Описание: Коллекция хранилищ настроек, определенных в конфигурации.
Доступность: клиент, сервер, внешнее соединение.
См. также: Глобальный контекст, свойство ХранилищаНастроек
Описание: Объект, предоставляющий доступ к хранилищу настроек определенного типа.
Доступность: клиент, сервер, внешнее соединение.
См. также: ХранилищаНастроекМенеджер, свойство <Имя хранилища>
Свойства:
Конструкторы:
Описание: Содержит информацию о выбранной пользователем настройке.
Доступность: клиент, сервер, внешнее соединение, тонкий клиент, веб-клиент.
Свойства:
Описание: Содержит информацию об описании настройки.
Доступность: клиент, сервер, внешнее соединение.
См. также:
В разделе описываются механизмы использования форм сохранения и загрузки.
Параметры формы:
Описание: Форма, используемая для сохранения настроек. Результатом работы формы должно быть значение типа ВыборНастроек или значение Неопределено в случае, если пользователь отказался от сохранения настройки.
Доступность: клиент.
Параметры формы:
Описание:
Форма, используемая для загрузки настроек.
Результатом работы формы (значение, передаваемое в метод Закрыть()) должно быть значение типа ВыборНастроек или значение Неопределено в случае, если пользователь отказался от загрузки настройки.
Доступность: клиент.
Насколько можно понять из описания, можно выделить две части механизма:
Не очень понятно зачем нужен механизм переопределения стандартных хранилищ, но, наверное, можно что-то придумать... Типа контекстной чувствительности настроек.
В глобальном контексте всегда существует набор объектов-менеджеров хранилищ различного рода настроек, которые и используются системой и/или разработчиками.
Вместо СохранитьЗначение: Вместо ВосстановитьЗначение:
Назначение объекта конфигурации «Хранилище настроек» понятно из названия — хранить различные пользовательские настройки. Область применения данного объекта широка — в любой, хоть сколь-нибудь серьезной конфигурации требуется хранить какие-либо пользовательские настройки.
Для удобства программистов в каждой конфигурации существует несколько стандартных хранилищ настроек, кроме этого есть возможность создать столько дополнительных хранилищ настроек, сколько будет нужно.
Сначала разберемся со стандартными хранилищами настроек, которые присутствуют в любой конфигурации 1С начиная с версии 8.2.
Итак, по умолчанию, в конфигурации имеются следующие хранилища настроек:
К каждому из этих хранилищ можно обратиться как к свойству глобального контекста.
Стандартные хранилище программист может использовать для своих нужд, сохраняя различные настройки в разрезе пользователя, объекта и самой настройки.
Для работы с хранилищами настроек (как со стандартными, так и с добавленными программистом) используются следующие методы.
Запись и получение настройки:
ХранилищеОбщихНастроек.Сохранить(НазваниеОбъекта, НазваниеНастройки, ЗначениеНастройки, ОписаниеНастройки, ИмяПользователя); ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить(НазваниеОбъекта, НазваниеНастройки, ОписаниеНастройки, ИмяПользователя);
Удаление лишней/ненужной настройки:
ХранилищеОбщихНастроек.Удалить(НазваниеОбъекта, НазваниеНастройки, ИмяПользователя);
Получение списка настроек:
СписокЗначенийНастроек = ХранилищеОбщихНастроек.ПолучитьСписок(ИмяОбъекта, ИмяПользователя);
Параметры «НазваниеОбъекта», «НазваниеНастройки» и «ИмяПользователя» должны строковой тип.
В базе данных, все настройки хранятся в отдельно таблице.
Теперь поговорим о тех хранилищах настроек, что создаются программистом. Вообще, программист ничем не ограничен в своем желании создать новое хранилище настроек, но обычно отдельные хранилища настроек создают по следующим причинам:
Хранилища настроек добавляют в соответствующем разделе конфигурации.
Ключевой особенностью хранилищ настроек, созданных программистом является необходимость ручной реализации методов записи и получения значений (Сохранить() и Загрузить()). В этих методах программист должен описать сохранение (в регистры сведений, файлы, справочники и тд.) и загрузку настроек при помощи встроенного языка.
В остальном же, принципы работы с созданным хранилищем практически не отличается от работы со стандартными хранилищами настроек.
Доступ к созданному хранилищу можно получить таким образом:
ХранилищаНастроек.НазваниеХранилища.Загрузить();
Кроме этого, созданными хранилищами можно заменять стандартные в различных объектах конфигурации и в самой конфигурации.
Управляемые формы имеют два свойства:
На этом все, надеюсь данная статья Вам помогла.
Настройки пользователя в 1С обычно разделены на три части.
Во-первых, платформа 1С позволяет каждому пользователю делать свои собственные настройки 1С для удобства. Например, настройки 1С отчетов СКД.
Во-вторых, в каждой типовой и не типовой конфигурации обычно есть много обработок, которые выполняют сервисные действия. Обработки требуют настройки. Жалко терять время, заново вводя настройки при каждом открытии обработки.
И наконец в-третьих, самому программисту, чтобы программа была универсальна, некоторые значения по-умолчанию лучше не прописывать в коде программы, а хранить в каких-либо настройках.
Где хранить все эти настройки в 1С?
Как настройки 1С сохраняли раньше
В платформа предлагала следующий стандартный вариант:
Соответственно программист создает кнопки сохранения и восстановления настроек 1С, а пользователь использует этот механизм (ну или программист сохраняет их автоматически).
В качестве значения можно использовать не только число или строку, но и например Структуру – тип, который позволяет хранить в себе множество значений с их наименованиями, например:
Настройки = Новый Структура();
Настройки.Вставить(«ИмяНастройки», Значение);
Значение = Настройки.ИмяНастройки;
Настройка 1С сохраняется для того пользователя, который нажал разработанную программистом кнопку сохранения настроек 1С (или под которым эти действия выполнились автоматически). Настройки 1С хранятся при этом в текстом файле в папке с базой данных (при использовании файловой базы данных).
Также программист был волен разрабатывать свои произвольные методы хранения настроек 1С с использованием обычных методов – например, с помощью работы с текстовыми и XML файлами – сохранять настройки 1С произвольным образом в файл.
В типовых конфигурациях настройки 1С отчетов сохранялись в регистр сведений. А настройки 1С отчетов СКД можно сохранить в файл XML.
Стандартное хранилище настроек 1С
Все эти возможности остались и в новой платформе 8.2, но появился наконец некий «стандартный метод» сохранения настроек – Хранилище настроек 1С.
Механизм делится на две части – стандартные и пользовательские хранилища настроек 1С. Стандартное реализовано в платформе 1С, пользовательские – это объект 1С, который создает и программирует программист.
Стандартное хранилище настроек 1С используется платформой по умолчанию в тонком клиенте для сохранения настроек 1С пользователя в следующих механизмах платформы:
Программист может использовать стандартное хранилище настроек 1С из кода программ на языке 1С способом, подобным тому, что был раньше:
Настройки 1С сохраняются непосредственно в базе данных, в специальных таблицах.
Как видно, по сравнению со старым механизмом, добавился дополнительный разрез – имя объекта. Платформа, при автоматическом сохранении используется имя объекта 1С в метаданных с указанием вида, например:
Отчет.Продажи
Также появилась возможность управлять именем пользователя, для которого будут сохранены настройки 1С, указав его последним параметром.
Существуют следующие стандартные хранилища настроек 1С:
Хранилище настроек 1С
Программист может создать собственные хранилища настроек – в конфигураторе.
Это предполагается делать в следующих случаях:
Для создания собственного хранилища настроек 1С – необходимо добавить таковое в конфигураторе в окне конфигурации в ветке Общие/Хранилища настроек 1С.
Переопределить стандартные хранилища настроек 1С, используемые платформой можно в свойствах конфигурации (корневой ветки конфигурации, которую программисты обычно называют Корень или Голова).
Если в свойствах пустая строка – используется стандартное хранилище настроек 1С, иначе – используется выбранное, а стандартное не используется.
В использование хранилища возможно автоматически:
В толстом клиенте для использования требуется в коде на языке 1С прописывать непосредственный вызов сохранения настроек 1С:
ХранилищаНастроек.ИмяХранилища.Сохранить();
При добавлении в конфигурацию собственного хранилища настроек 1С требуется на языке 1С прописать обработчики загрузки и сохранения значений, иначе хранилище работать не будет.
Собственно в этих функциях Вы самостоятельно пишете код сохранения значения (в стандартное хранилище или в файл или в справочник или в регистр сведений и т.п.), и загрузки значения.