Администрирование · 10 мин
1С: хранилище общих настроек — где хранится и как с ним работать
Где физически хранятся данные хранилища общих настроек в 1С: системные таблицы, файловые и клиент-серверные базы, чтение и очистка настроек пользователей.
Хранилище общих настроек в 1С — это системный механизм платформы, через который сохраняются пользовательские настройки: состав колонок динамических списков, параметры отчётов, значения отборов, настройки форм и другие данные, привязанные к конкретному пользователю или ко всей информационной базе. Программный доступ к нему осуществляется через объект ХранилищеОбщихНастроек, а физически данные лежат внутри самой информационной базы, а не в отдельных файлах на диске.
Понимание того, где хранятся эти данные, нужно администраторам и разработчикам в типовых ситуациях: очистка «проблемных» настроек пользователя, перенос настроек между базами, поиск причины роста базы, восстановление стандартного вида формы после некорректного изменения. Ниже разобрано, где именно располагается хранилище в файловом и клиент-серверном режимах, как прочитать и удалить настройки штатными средствами и какие ограничения стоит учитывать.
Где физически хранятся общие настройки
Общие настройки не выносятся платформой в отдельные файлы или реестр. Они записываются в служебные системные таблицы информационной базы. В файловом варианте это внутренние таблицы файла 1Cv8.1CD — открыть их штатными средствами СУБД нельзя, структура формата не документирована. В клиент-серверном варианте данные размещаются в служебных таблицах базы на MS SQL Server, PostgreSQL, Oracle или IBM DB2.
В клиент-серверных базах настройки различных видов хранилищ (пользовательские настройки отчётов, общие настройки, системные настройки) распределяются по нескольким системным таблицам. Прямой просмотр этих таблиц средствами СУБД технически возможен, но данные внутри хранятся в сериализованном виде — человекочитаемого представления там нет.
Важно отличать хранилище общих настроек от смежных механизмов: пользовательские настройки отчётов и варианты отчётов хранятся отдельно (в типовых конфигурациях — в справочниках и регистрах подсистемы вариантов отчётов), а настройки толстого клиента и списки баз — в файлах профиля пользователя операционной системы, например 1cestart.cfg и ibases.v8i. Это разные хранилища с разным назначением.
Виды системных хранилищ настроек в платформе
Платформа предоставляет несколько стандартных хранилищ, и путаница между ними — частая причина того, что администратор «не находит» нужные данные:
- ХранилищеОбщихНастроек — произвольные настройки, которые конфигурация сохраняет программно: параметры обменов, значения по умолчанию, служебные флаги.
- ХранилищеПользовательскихНастроекОтчетов — настройки, которые пользователь сохранил в отчётах на СКД.
- ХранилищеВариантовОтчетов — сами варианты отчётов.
- ХранилищеНастроекДанныхФорм — настройки форм: состав и порядок колонок, размеры, видимость элементов.
- ХранилищеСистемныхНастроек — системные параметры клиентского приложения (история ввода, последние значения и т. п.).
Все перечисленные хранилища физически находятся внутри информационной базы. Разница между ними — только в назначении и в том, какой программный интерфейс используется для доступа.
Как программно читать и записывать общие настройки
Работа с хранилищем выполняется через методы объекта ХранилищеОбщихНастроек: Сохранить, Загрузить, Удалить, ПолучитьСписок. Каждое значение идентифицируется тремя параметрами: ключом объекта, ключом настройки и именем пользователя.
// Сохранение настройки
ХранилищеОбщихНастроек.Сохранить(
"МойОтчет", // ключ объекта
"ПериодПоУмолчанию", // ключ настройки
ТекущаяДатаСеанса(), // значение
, // описание
"ИвановИИ"); // пользователь (пусто — текущий)
// Чтение настройки
Значение = ХранилищеОбщихНастроек.Загрузить(
"МойОтчет", "ПериодПоУмолчанию", , "ИвановИИ");
Если пользователь не указан, операция выполняется для текущего пользователя сеанса. Если ключ настройки не указан при удалении — удаляются все настройки объекта. Метод ПолучитьСписок позволяет получить перечень сохранённых ключей настроек по объекту — это удобно для диагностики, когда неизвестно, что именно записано.
СписокНастроек = ХранилищеОбщихНастроек.ПолучитьСписок("МойОбъект", "ИвановИИ");
Для Каждого Элемент Из СписокНастроек Цикл
Сообщить(Элемент.Значение);
КонецЦикла;Как очистить настройки пользователя без программирования
В типовых конфигурациях (БСП) есть штатный механизм управления настройками: раздел администрирования, пункт «Пользователи и права» — «Персональные настройки пользователей» или аналогичный (название зависит от версии конфигурации). Там можно скопировать настройки одного пользователя другому либо очистить их выборочно.
В конфигурациях без БСП или в тонких сценариях используют внешние обработки очистки настроек, которые перебирают системные хранилища методами платформы. Такие обработки должны работать только через документированные методы — прямое обращение к системным таблицам СУБД платформой не поддерживается.
- 1Сделайте резервную копию базы или хотя бы убедитесь в наличии свежей выгрузки
- 2Определите, какое хранилище затронуто: формы, отчёты или общие настройки
- 3В типовой конфигурации откройте администрирование и найдите раздел персональных настроек пользователей
- 4Выберите пользователя и очистите только проблемные настройки, а не все подряд
- 5Попросите пользователя перезайти в базу и проверить результат
Когда настройки нужно чистить и какие риски есть
Типовые сценарии очистки: форма не открывается или открывается с ошибкой после обновления конфигурации; пользователь «сломал» настройку отчёта и не может вернуть рабочий вариант; после копирования базы настройки тестового пользователя конфликтуют с реальными данными. Во всех этих случаях удаление настроек возвращает поведение по умолчанию — платформа просто применит стандартные значения.
Риск очистки в том, что удалённые настройки не восстанавливаются: пользователь потеряет сохранённые варианты отборов, привычный вид форм, заполненные параметры. Поэтому массовую очистку по всем пользователям стоит делать только при крайней необходимости и после резервного копирования.
Отдельный риск — рост базы. Если конфигурация активно пишет в хранилище общих настроек (например, сохраняет туда большие структуры данных при каждом сеансе), системные таблицы раздуваются. Диагностируется это анализом размера таблиц на стороне СУБД, а лечится пересмотром логики сохранения и периодической чисткой устаревших ключей.
Перенос настроек между базами и пользователями
При обновлении через выгрузку-загрузку базы целиком (файл .dt) настройки переносятся автоматически — они часть информационной базы. А вот при переносе данных через XML-обмены (конвертация данных, универсальный обмен) системные хранилища, как правило, не переносятся: обменники работают с прикладными объектами, а не со служебными таблицами платформы.
Если нужно перенести настройки выборочно, варианты такие: штатное копирование настроек между пользователями в БСП; собственная обработка, выгружающая значения через Загрузить и записывающая через Сохранить в другой базе; для настроек отчётов в типовых — механизм обмена вариантами отчётов.
Ограничения и рекомендации по использованию
Хранилище общих настроек предназначено именно для настроек — небольших значений, привязанных к пользователю. Использовать его как хранилище прикладных данных (документы, файлы, историю операций) нельзя: нет нормальных средств поиска, версионирования и контроля размера. Для прикладных данных нужны регистры сведений или справочники.
Практические рекомендации: давайте ключам объектов и настроек осмысленные уникальные имена с префиксом конфигурации или подсистемы; при обновлении конфигурации предусматривайте миграцию или очистку устаревших ключей; периодически проверяйте, не пишет ли какой-то механизм настройки в цикле при каждом сеансе.
Как проверить результат
Метод Загрузить с теми же ключами возвращает записанное значение
Возвращается Неопределено — проверьте ключи и имя пользователя
После перезахода форма открывается с видом по умолчанию
Вид не изменился — чистилось не то хранилище
Системные таблицы не входят в число самых крупных
Служебные таблицы настроек аномально велики — ищите источник массовой записи
Частые вопросы
Можно ли открыть файл хранилища общих настроек отдельно от базы?
Нет. Отдельного файла не существует: данные находятся внутри информационной базы — в файле 1Cv8.1CD для файлового режима или в служебных таблицах СУБД для клиент-серверного. Доступ возможен только через платформу.
Куда пропали настройки пользователя после переноса базы через обмен XML?
Обмены переносят прикладные данные, но не системные хранилища. Настройки остались в исходной базе. Переносите их обработкой через методы Сохранить/Загрузить или штатным копированием в типовых конфигурациях.
Как сбросить настройки формы, если она открывается с ошибкой?
Нужно удалить соответствующие записи из ХранилищеНастроекДанныхФорм для этого пользователя. В типовых конфигурациях это делается через раздел персональных настроек в администрировании, либо обработкой очистки настроек.
Что будет, если удалить все общие настройки пользователя?
Критичного ничего: платформа и конфигурация применят значения по умолчанию. Но пользователь потеряет сохранённые параметры, и восстановить их без резервной копии невозможно.
Подходит ли хранилище общих настроек для хранения паролей?
Нет. Данные там не зашифрованы, и чтение возможно программно. Для секретов в БСП есть методы безопасного хранения (ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище), используйте их.
Что важно запомнить
Хранилище общих настроек живёт внутри информационной базы, а не в файлах профиля. Работайте с ним только методами платформы (Сохранить, Загрузить, Удалить) или штатными обработками, различайте виды хранилищ, а перед массовой очисткой делайте резервную копию.