В платформе 1С существует несколько типов хранилищ, предназначенных для сохранения различных пользовательских и системных настроек. Несмотря на общее название, это разные объекты платформы с разным назначением и механизмами работы.

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

Рассмотрим:

  • какие хранилища есть в 1С

  • для чего они используются

  • как платформа записывает в них данные

  • какие хранилища можно переопределять

Хранилища в 1С предназначены для хранения настроечной информации, не относящейся к бизнес-логике. Система не несет ответственность за тип и структуру этих данных. При просмотре глобального контекста можно увидеть множество хранилищ.

Какие хранилища есть в 1С

Все хранилища условно можно разделить на две группы:

Хранилища, которые непосредственно хранят информацию
Хранилища, которые являются механизмами настройки хранения

I. Рассмотрим хранилища, которые являются объектами для хранения информации. 

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

Хранилище общих настроек

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

Хранилище пользовательских настроек отчетов

Допустим, пользователь часто использует в отчете одни и те же значения в отборах. Чтобы каждый раз не настраивать их, пользователь может сохранить настройки отчета. При этом такие настройки попадут в Хранилищепользовательских настроек отчетов, где ключом объекта будет значение Отчет.[Имя отчета в конфигураторе]/[имя варианта отчета] и представлением с именем сохраненных настроек.

Хранилище вариантов отчетов

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

Настройки этого варианта поместятся в Хранилище вариантов отчетов, где ключом объекта будет значениеОтчет.[Имя отчета в конфигураторе] и представлением с именем сохраненного варианта.

Хранилище настроек данных форм

При работе с формой обработки иногда требуется запоминать значения реквизитов на форме, чтобы пользователь не заполнял их каждый раз. Для этого в конфигураторе используют свойство формы «Сохранение данных формы в настройках» (СохранениеДанныхВНастройках). Тогда пользователь сможет явно сохранять значения настроенных реквизитов формы.

А если использовать автоматическое сохранение данных формы в настройках, то значения реквизитов будут сохраняться автоматически при закрытии формы
При этом сохраненные данные формы будут помещены в Хранилище настроек данных формы , где ключом объекта будет значение [объект конфигурации: отчет, справочник, обработка].[Имя объекта конфигурации].Форма.[Имя формы] и представлением с именем сохраненных настроек.

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

Такие настройки будут помещены в Хранилище пользовательских настроек динамических списков , где ключом объекта будет значение [объект конфигурации: отчет, справочник, обработка].[Имя объекта конфигурации].[Имя формы].[Имя списка] и представлением с именем сохраненных настроек.

Хранилище внешних данных навигационных ссылок

В платформе есть возможность сохранять настройки наименований навигационных ссылок объектов.

Эти настройки сохраняются при копировании такой ссылки автоматически в Хранилище внешних данных навигационных ссылок, где ключ объекта будет ссылка на объект без «e1cib/list/», а представлением указанное имя ссылки.

Хранилище системных настроек

Предназначено для хранения всевозможных настроек, нужных для работы платформы (настройки размеров форм, настройки печати табличного документа и т. д). Настройки сохраняются автоматически платформой. Переопределить данное хранилище с помощью Хранилища настроек нельзя.

Основную информацию по этим хранилищам можно представить в виде таблицы:

Хранилище

Назначение

Тип значения по умолчанию

Возможность переопределения

Когда платформа записывает туда данные

Необходимые права для работы 

Поведение с РИБ

Физическая таблица БД (по-умолчанию)

Хранилище общих настроек

Хранение персональных  настроек пользователя по работе прикладного решения

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

+

Платформа автоматически туда значения НЕ помещает. Запись значений ДОЛЖНА БЫТЬ ПРЕДУСМОТРЕНА при разработке прикладного решения.

СохранениеДанныхПользователя

Не мигрируют

CommonSettings

Хранилище пользовательских настроек отчетов

Хранение настроек отчетов, выполненных в пользовательском режиме

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер  

+

Платформа автоматически помещает пользовательские настройки отчетов в хранилище при сохранении

СохранениеДанныхПользователя

Не мигрируют

RepSettings

Хранилище вариантов отчетов

Хранение вариантов отчетов

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

+

Платформа автоматически помещает настройки вариантов отчетов в хранилище при сохранении

СохранениеДанныхПользователя

Не мигрируют

RepVarSettings

Хранилище настроек данных форм

Хранение значений  реквизитов форм

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

+

Платформа автоматически помещает сохраняемые данные формы в хранилище при сохранении

СохранениеДанныхПользователя

Не мигрируют

FrmDtSettings

Хранилище пользовательских настроек динамических списков

Хранение настроек динамических списков 

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

+

Платформа автоматически помещает сохраняемые настройки динамических списков в хранилище при сохранении

СохранениеДанныхПользователя

Не мигрируют

DynListSettings

Хранилище внешних данных навигационных ссылок

Встроенный системный кэш БД

СтандартноеХр��нилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

+

Платформа автоматически помещает настройки навигационных ссылок при получении их с настройками

СохранениеДанныхПользователя

Не мигрируют

URLExternalData

Хранилище системных настроек 

Встроенный системный кэш БД

СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер 

-

Платформа автоматически помещает настройки

СохранениеДанныхПользователя

Не мигрируют

SystemSettings

II. Хранилища, которые не являются хранилищами данных

Теперь рассмотрим хранилища, которые хоть и называются хранилищами, но не являются непосредственно объектами для хранения данных. Это скорее настройки для переопределения хранения информации.

Хранилище настроек

Для того, чтобы иметь возможность изменять и просматривать сохраняемые пользовательские настройки, а также дополнять их произвольными данными, есть возможность использовать прикладные объекты БД. 
Для этого хранение и чтение данных хранилищ пользовательских данных (кроме Хранилища системных настроек) можно переопределить в другие объекты конфигурации с помощью Хранилища настроек. 

Само Хранилище настроек не является объектом хранения данных. Этот объект конфигурации представляет собой своеобразную настройку «перенаправления» работы с Хранилищем. 

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

Хранилище двоичных данных

Этот механизм платформы появился не так давно. В платформе есть возможность хранить  файлы используя тип ХранилищеЗначения. 
Эти файлы могут быть большими, что приводит к «распуханию» базы. 

В связи с этим и появилось ХранилищеДвоичныхДанных. Теперь хранить большие двоичные данные (Binary Large Objects, BLOB) можно будет не в базе данных, а в специализированном хранилище. 

При настройке такого хранилища все данные с типом значения ХранилищеЗначения при превышении минимального размера, будут сохраняться в настроенном хранилище. Для работы с этим хранилищем предназначен объект ХранилищеДвоичныхДанных

Итоги

Хранилища в 1С активно используются платформой для хранения пользовательских настроек, параметров отчетов, данных форм и других служебных данных. 

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

Зоя Хромова

Разработчик 1С ООО КРОН