К статье
Практический материал

Администрирование · 10 мин

1С: хранилище общих настроек — где хранится и как с ним работать

Где физически хранятся данные хранилища общих настроек в 1С: системные таблицы, файловые и клиент-серверные базы, чтение и очистка настроек пользователей.

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

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

Где физически хранятся общие настройки

Общие настройки не выносятся платформой в отдельные файлы или реестр. Они записываются в служебные системные таблицы информационной базы. В файловом варианте это внутренние таблицы файла 1Cv8.1CD — открыть их штатными средствами СУБД нельзя, структура формата не документирована. В клиент-серверном варианте данные размещаются в служебных таблицах базы на MS SQL Server, PostgreSQL, Oracle или IBM DB2.

В клиент-серверных базах настройки различных видов хранилищ (пользовательские настройки отчётов, общие настройки, системные настройки) распределяются по нескольким системным таблицам. Прямой просмотр этих таблиц средствами СУБД технически возможен, но данные внутри хранятся в сериализованном виде — человекочитаемого представления там нет.

Важно отличать хранилище общих настроек от смежных механизмов: пользовательские настройки отчётов и варианты отчётов хранятся отдельно (в типовых конфигурациях — в справочниках и регистрах подсистемы вариантов отчётов), а настройки толстого клиента и списки баз — в файлах профиля пользователя операционной системы, например 1cestart.cfg и ibases.v8i. Это разные хранилища с разным назначением.

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

Платформа предоставляет несколько стандартных хранилищ, и путаница между ними — частая причина того, что администратор «не находит» нужные данные:

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

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

Как программно читать и записывать общие настройки

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

// Сохранение настройки

ХранилищеОбщихНастроек.Сохранить(

"МойОтчет", // ключ объекта

"ПериодПоУмолчанию", // ключ настройки

ТекущаяДатаСеанса(), // значение

, // описание

"ИвановИИ"); // пользователь (пусто — текущий)

// Чтение настройки

Значение = ХранилищеОбщихНастроек.Загрузить(

"МойОтчет", "ПериодПоУмолчанию", , "ИвановИИ");

Если пользователь не указан, операция выполняется для текущего пользователя сеанса. Если ключ настройки не указан при удалении — удаляются все настройки объекта. Метод ПолучитьСписок позволяет получить перечень сохранённых ключей настроек по объекту — это удобно для диагностики, когда неизвестно, что именно записано.

bsl
СписокНастроек = ХранилищеОбщихНастроек.ПолучитьСписок("МойОбъект", "ИвановИИ");
Для Каждого Элемент Из СписокНастроек Цикл
    Сообщить(Элемент.Значение);
КонецЦикла;

Как очистить настройки пользователя без программирования

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

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

Порядок очистки настроек пользователя
  1. 1
    Сделайте резервную копию базы или хотя бы убедитесь в наличии свежей выгрузки
  2. 2
    Определите, какое хранилище затронуто: формы, отчёты или общие настройки
  3. 3
    В типовой конфигурации откройте администрирование и найдите раздел персональных настроек пользователей
  4. 4
    Выберите пользователя и очистите только проблемные настройки, а не все подряд
  5. 5
    Попросите пользователя перезайти в базу и проверить результат

Когда настройки нужно чистить и какие риски есть

Типовые сценарии очистки: форма не открывается или открывается с ошибкой после обновления конфигурации; пользователь «сломал» настройку отчёта и не может вернуть рабочий вариант; после копирования базы настройки тестового пользователя конфликтуют с реальными данными. Во всех этих случаях удаление настроек возвращает поведение по умолчанию — платформа просто применит стандартные значения.

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

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

Перенос настроек между базами и пользователями

При обновлении через выгрузку-загрузку базы целиком (файл .dt) настройки переносятся автоматически — они часть информационной базы. А вот при переносе данных через XML-обмены (конвертация данных, универсальный обмен) системные хранилища, как правило, не переносятся: обменники работают с прикладными объектами, а не со служебными таблицами платформы.

Если нужно перенести настройки выборочно, варианты такие: штатное копирование настроек между пользователями в БСП; собственная обработка, выгружающая значения через Загрузить и записывающая через Сохранить в другой базе; для настроек отчётов в типовых — механизм обмена вариантами отчётов.

Типичные ошибки
01
Искать настройки в файлах профиля ОС — общие настройки хранятся в базе, а не рядом с 1cestart.cfg
02
Чистить хранилище общих настроек, когда проблема в настройках форм — это разные хранилища
03
Удалять настройки всех пользователей вместо одного проблемного — необратимая потеря персональных настроек
04
Править системные таблицы СУБД напрямую — потеря поддержки и риск повреждения базы
05
Хранить в общих настройках большие объёмы данных — рост базы и замедление сеансов

Ограничения и рекомендации по использованию

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

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

Контрольные точки

Как проверить результат

Настройка сохранена
Норма

Метод Загрузить с теми же ключами возвращает записанное значение

Тревожный признак

Возвращается Неопределено — проверьте ключи и имя пользователя

Очистка настроек формы
Норма

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

Тревожный признак

Вид не изменился — чистилось не то хранилище

Размер базы
Норма

Системные таблицы не входят в число самых крупных

Тревожный признак

Служебные таблицы настроек аномально велики — ищите источник массовой записи

Частые вопросы

Можно ли открыть файл хранилища общих настроек отдельно от базы?

Нет. Отдельного файла не существует: данные находятся внутри информационной базы — в файле 1Cv8.1CD для файлового режима или в служебных таблицах СУБД для клиент-серверного. Доступ возможен только через платформу.

Куда пропали настройки пользователя после переноса базы через обмен XML?

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

Как сбросить настройки формы, если она открывается с ошибкой?

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

Что будет, если удалить все общие настройки пользователя?

Критичного ничего: платформа и конфигурация применят значения по умолчанию. Но пользователь потеряет сохранённые параметры, и восстановить их без резервной копии невозможно.

Подходит ли хранилище общих настроек для хранения паролей?

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

Итог

Что важно запомнить

Хранилище общих настроек живёт внутри информационной базы, а не в файлах профиля. Работайте с ним только методами платформы (Сохранить, Загрузить, Удалить) или штатными обработками, различайте виды хранилищ, а перед массовой очисткой делайте резервную копию.