Разработка и Конфигурация · 11 мин
Хранилище настроек 1С: как с ним работать
Как устроено хранилище настроек 1С: стандартное и произвольное хранилище, сохранение и восстановление настроек отчётов, типовые ошибки и способы очистки.
Когда пользователь настраивает отчёт, меняет порядок колонок в списке документов или сохраняет отбор динамического списка, платформа 1С запоминает эти параметры. За это отвечает механизм хранилища настроек — отдельная подсистема, которая работает незаметно, пока настройки не «ломаются»: отчёт перестаёт открываться, форма выдаёт ошибку, а отбор показывает устаревшие поля.
Понимание устройства хранилища настроек нужно и администраторам, и разработчикам. Администратору — чтобы очищать повреждённые настройки и переносить их между пользователями. Разработчику — чтобы программно сохранять и загружать параметры, например значения по умолчанию для обработок.
Механизм единый для всех конфигураций на платформе 8.3, но у него есть два режима: стандартное хранилище и хранилище, определённое разработчиком конфигурации. Ниже разберём, где физически лежат настройки, как ими управлять и что делать при типовых проблемах.
Что такое хранилище настроек и где физически лежат данные
Хранилище настроек — это слой между прикладным объектом (отчётом, обработкой, формой) и постоянным хранилищем данных. Платформа сериализует настройки в специальный формат и сохраняет их с ключом, который однозначно определяет объект, пользователя и вид настройки.
В стандартном варианте настройки сохраняются в служебную таблицу информационной базы. В файловой базе это часть файла 1Cv8.1CD, в клиент-серверном варианте — таблица на SQL-сервере. Прямой доступ к этой таблице не предполагается: работа идёт только через программный интерфейс платформы.
Отдельно стоит различать хранилище настроек и хранилище вариантов отчётов. В типовых конфигурациях на БСП (библиотека стандартных подсистем) варианты отчётов часто сохраняются не в стандартное хранилище, а в специальный справочник конфигурации. Это позволяет делиться вариантами между пользователями и переносить их между базами.
Стандартное и произвольное хранилище: в чём разница
Стандартное хранилище настроек встроено в платформу и работает без какой-либо настройки. Именно оно используется по умолчанию для отчётов, внешних обработок, динамических списков и настроек форм. Разработчику не нужно ничего делать — платформа сама сохраняет и загружает параметры.
Произвольное хранилище — это объект метаданных «Хранилище настроек», который создаёт разработчик конфигурации. Для него пишутся обработчики сохранения, загрузки и получения описания. Такой подход нужен, когда настройки должны храниться в прикладных данных: например, в справочнике, чтобы их можно было редактировать вручную, выгружать вместе с данными и раздавать ролям.
В свойствах конфигурации и отдельных объектов можно указать, какое хранилище использовать. Если свойство не заполнено, применяется стандартное. Смешанный режим — нормальная практика: варианты отчётов в собственном хранилище, а настройки форм — в стандартном.
Сравнение вариантов хранения
Работает из коробки, не требует кода. Ограничение: настройки недоступны как прикладные данные, сложно переносить между базами и делиться между пользователями.
Варианты отчётов хранятся в справочнике, их можно раздавать группам пользователей и переносить. Подходит для типовых конфигураций на библиотеке стандартных подсистем.
Полный контроль над форматом и местом хранения. Требует написания обработчиков и сопровождения, оправдано только при нестандартных требованиях.
Программная работа с хранилищем: сохранение и загрузка
Для программного доступа платформа предоставляет глобальный контекст ХранилищеНастроекМенеджер, а также менеджеры конкретных хранилищ: СтандартноеХранилищеНастроекМенеджер и ХранилищеНастроекМенеджер.<ИмяХранилища>. Основные методы — Сохранить, Загрузить, Удалить, ПолучитьСписок.
Типовой приём для обработки: при закрытии формы сохранить значения реквизитов в структуру и записать её в хранилище, при открытии — загрузить и восстановить. Ключ объекта обычно совпадает с именем обработки или отчёта, ключ настроек позволяет хранить несколько именованных наборов.
// Сохранение
Настройки = Новый Структура;
Настройки.Вставить("Организация", Организация);
Настройки.Вставить("Период", Период);
СтандартноеХранилищеНастроекМенеджер.Сохранить("МояОбработка", "Основные", Настройки);
// Загрузка
Значение = СтандартноеХранилищеНастроекМенеджер.Загрузить("МояОбработка", "Основные");
Если ТипЗнч(Значение) = Тип("Структура") Тогда
Значение.Свойство("Организация", Организация);
КонецЕсли;Важная деталь: в хранилище можно сохранять только сериализуемые значения — примитивные типы, структуры, массивы, соответствия, ссылки. Попытка сохранить несериализуемый объект приведёт к ошибке. Также параметры Загрузить и Сохранить включают имя пользователя: если его не указать, используется текущий пользователь.
Очистка и восстановление повреждённых настроек
Самая частая практическая задача — «сломавшиеся» настройки отчёта или формы. Признаки: отчёт выдаёт ошибку сразу при открытии, форма списка показывает пустые колонки, отбор содержит удалённые из конфигурации поля. Причина почти всегда одна: сохранённые настройки ссылаются на объекты, которых больше нет в конфигурации.
Первый уровень решения — кнопка «Стандартные настройки» в форме настроек отчёта или списка. Она сбрасывает параметры к значениям по умолчанию из конфигурации, при этом сама запись в хранилище обычно перезаписывается корректной.
Если объект не открывается вовсе, настройки удаляют программно. Метод Удалить менеджера хранилища принимает ключ объекта, ключ настроек и имя пользователя. Для массовой очистки перебирают список настроек методом ПолучитьСписок и удаляют проблемные записи. В типовых конфигурациях также встречаются служебные обработки очистки пользовательских настроек.
- 1Попробуйте открыть отчёт и в форме настроек нажать «Стандартные настройки», затем сформировать отчёт заново
- 2Если отчёт не открывается — выполните удаление настроек программно через СтандартноеХранилищеНастроекМенеджер.Удалить с ключом отчёта и именем пользователя
- 3Если конфигурация на БСП — проверьте справочник вариантов отчётов: возможно, повреждён сохранённый вариант, удалите или сбросьте его
- 4После очистки откройте отчёт под тем же пользователем и убедитесь, что он формируется без ошибок
Перенос настроек между пользователями и базами
Настройки в стандартном хранилище жёстко привязаны к имени пользователя информационной базы. Если у пользователя сменилось имя или создана новая учётная запись, старые настройки автоматически не подхватятся. Перенос выполняется программно: настройки загружаются с указанием имени старого пользователя и сохраняются с именем нового.
Между базами стандартное хранилище переносится только вместе с полной копией базы. Если нужно перенести только настройки, их выгружают программно в файл (например, через сериализацию значений) и загружают в целевой базе. Это работает, если конфигурации идентичны по составу объектов — иначе настройки будут ссылаться на несуществующие поля.
Для регулярного обмена настройками между базами надёжнее перевести критичные параметры в прикладные данные: регистры сведений или справочники. Тогда они переносятся стандартными средствами обмена и не зависят от имён пользователей.
Типовые ошибки и ограничения механизма
Ошибки при работе с хранилищем чаще всего связаны не с платформой, а с неосторожным кодом или администрированием. Ниже — ситуации, которые встречаются регулярно.
Ещё одно ограничение: стандартное хранилище не предоставляет штатного интерфейса просмотра всех настроек. Увидеть, что именно сохранено за пользователем, можно только программно через ПолучитьСписок и Загрузить. Для диагностики удобно написать небольшую служебную обработку, выводящую список ключей и размер настроек.
Если после обновления конфигурации у части пользователей «посыпались» отчёты, не спешите чистить всё подряд. Сначала проверьте одного пользователя: сбросьте настройки проблемного отчёта. Часто достаточно точечной очистки по конкретному ключу объекта, а массовая чистка лишит остальных пользователей рабочих настроек без необходимости.
Проверка результата после работы с настройками
После очистки, переноса или изменения кода сохранения настроек результат нужно проверить под конкретным пользователем, а не только под администратором. Настройки персональны, и проблема может проявляться только у одной учётной записи.
Как проверить результат
Объект открывается без ошибок, параметры соответствуют ожиданиям или сброшены на стандартные
Ошибка при открытии, пустые колонки, ссылки на удалённые поля в отборе
После изменения параметров и повторного открытия значения восстанавливаются
Настройки не сохраняются или восстанавливаются устаревшие значения
У остальных пользователей настройки сохранились
Настройки пропали у всех — значит, очистка была выполнена слишком широко
Частые вопросы
Где физически находятся настройки в файловой базе 1С?
Стандартное хранилище настроек — это служебная таблица внутри файла 1Cv8.1CD. Отдельным файлом или каталогом она не существует, извлечь настройки можно только программными средствами платформы через менеджер хранилища.
Почему настройки отчёта пропали после смены имени пользователя?
Настройки в стандартном хранилище привязаны к имени пользователя информационной базы. После переименования или создания новой учётной записи старые записи становятся недоступны. Перенесите их программно: загрузите с именем старого пользователя и сохраните с именем нового.
Можно ли посмотреть все сохранённые настройки пользователя?
Штатного интерфейса для полного просмотра нет. Используйте метод ПолучитьСписок менеджера хранилища с указанием имени пользователя — он вернёт список ключей, по которым можно загрузить сами настройки. Удобно оформить это как служебную внешнюю обработку.
Чем отличается хранилище вариантов отчётов от хранилища настроек?
Хранилище вариантов отчётов в конфигурациях на БСП — это прикладной справочник, где варианты можно редактировать, раздавать группам пользователей и переносить между базами. Стандартное хранилище настроек — платформенный механизм для персональных параметров без таких возможностей.
Опасно ли очищать настройки напрямую в SQL-таблицах?
Да. Прямое изменение служебных таблиц нарушает целостность базы, может привести к ошибкам платформы и лишает базу поддержки. Всегда используйте методы Удалить менеджера хранилища — они корректно работают и в файловом, и в клиент-серверном варианте.
Что важно запомнить
Стандартное хранилище настроек работает без настройки и подходит для персональных параметров форм и отчётов; прикладные хранилища нужны, когда настройки должны быть частью данных. Проблемы с «сломанными» отчётами почти всегда решаются сбросом на стандартные настройки или точечным удалением записи по ключу. Перед массовой очисткой делайте резервную копию — восстановить удалённые настройки штатными средствами нельзя.