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

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

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

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

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

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

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

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

Эти настройки сохраняются при копировании такой ссылки автоматически в Хранилище внешних данных навигационных ссылок, где ключ объекта будет ссылка на объект без «e1cib/list/», а представлением указанное имя ссылки.
Хранилище системных настроек
Предназначено для хранения всевозможных настроек, нужных для работы платформы (настройки размеров форм, настройки печати табличного документа и т. д). Настройки сохраняются автоматически платформой. Переопределить данное хранилище с помощью Хранилища настроек нельзя.
Основную информацию по этим хранилищам можно представить в виде таблицы:
Хранилище | Назначение | Тип значения по умолчанию | Возможность переопределения | Когда платформа записывает туда данные | Необходимые права для работы | Поведение с РИБ | Физическая таблица БД (по-умолчанию) |
|---|---|---|---|---|---|---|---|
Хранилище общих настроек | Хранение персональных настроек пользователя по работе прикладного решения | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически туда значения НЕ помещает. Запись значений ДОЛЖНА БЫТЬ ПРЕДУСМОТРЕНА при разработке прикладного решения. | СохранениеДанныхПользователя | Не мигрируют | CommonSettings |
Хранилище пользовательских настроек отчетов | Хранение настроек отчетов, выполненных в пользовательском режиме | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически помещает пользовательские настройки отчетов в хранилище при сохранении | СохранениеДанныхПользователя | Не мигрируют | RepSettings |
Хранилище вариантов отчетов | Хранение вариантов отчетов | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически помещает настройки вариантов отчетов в хранилище при сохранении | СохранениеДанныхПользователя | Не мигрируют | RepVarSettings |
Хранилище настроек данных форм | Хранение значений реквизитов форм | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически помещает сохраняемые данные формы в хранилище при сохранении | СохранениеДанныхПользователя | Не мигрируют | FrmDtSettings |
Хранилище пользовательских настроек динамических списков | Хранение настроек динамических списков | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически помещает сохраняемые настройки динамических списков в хранилище при сохранении | СохранениеДанныхПользователя | Не мигрируют | DynListSettings |
Хранилище внешних данных навигационных ссылок | Встроенный системный кэш БД | СтандартноеХр��нилищеНастроекМенеджер, ХранилищеНастроекМенеджер | + | Платформа автоматически помещает настройки навигационных ссылок при получении их с настройками | СохранениеДанныхПользователя | Не мигрируют | URLExternalData |
Хранилище системных настроек | Встроенный системный кэш БД | СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер | - | Платформа автоматически помещает настройки | СохранениеДанныхПользователя | Не мигрируют | SystemSettings |
II. Хранилища, которые не являются хранилищами данных
Теперь рассмотрим хранилища, которые хоть и называются хранилищами, но не являются непосредственно объектами для хранения данных. Это скорее настройки для переопределения хранения информации.
Хранилище настроек
Для того, чтобы иметь возможность изменять и просматривать сохраняемые пользовательские настройки, а также дополнять их произвольными данными, есть возможность использовать прикладные объекты БД.
Для этого хранение и чтение данных хранилищ пользовательских данных (кроме Хранилища системных настроек) можно переопределить в другие объекты конфигурации с помощью Хранилища настроек.
Само Хранилище настроек не является объектом хранения данных. Этот объект конфигурации представляет собой своеобразную настройку «перенаправления» работы с Хранилищем.
Хранилище настроек имеет модуль менеджера. Для реализации логики сохранения и чтения данных в прикладных объектах конфигурации, необходимо прописать в этом модуле процедуры событий загрузки и сохранения данных. Также есть возможность создания формы для интерактивной работы с данными этого Хранилища.
Хранилище двоичных данных
Этот механизм платформы появился не так давно. В платформе есть возможность хранить файлы используя тип ХранилищеЗначения.
Эти файлы могут быть большими, что приводит к «распуханию» базы.
В связи с этим и появилось ХранилищеДвоичныхДанных. Теперь хранить большие двоичные данные (Binary Large Objects, BLOB) можно будет не в базе данных, а в специализированном хранилище.

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

Зоя Хромова
Разработчик 1С ООО КРОН
