Где 1С хранит пользовательские настройки и как до них добраться

· 9 мин

Содержание

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

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

Что относится к настройкам пользователя и где они хранятся

Под «настройками пользователя» в 1С понимают две разные вещи. Путаница между ними — главная причина, почему поиск в Конфигураторе ничего не даёт.

Параметры учётной записи — то, что задаёт администратор:

  • 👤 имя и полное имя пользователя;
  • 🔑 способ входа: пароль 1С, аутентификация ОС, OpenID;
  • 🛡️ список ролей;
  • 🖥️ основной интерфейс, язык, режим запуска (управляемое или обычное приложение).

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

Вторые платформа складывает в системные хранилища. У каждого своя задача:

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

Каждая запись в хранилище определяется тремя ключами: ключ объекта (обычно полное имя формы или отчёта), ключ настроек и имя пользователя. Именно по имени, а не по идентификатору: это пригодится при переносе.

Право, без которого настройки не сохраняются

Запись в хранилища зависит от права «Сохранение данных пользователя» в ролях. Если его нет, человек может двигать панели и менять отборы, но после перезапуска всё вернётся к стандартному виду.

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

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

Что видно о пользователе в Конфигураторе

Откройте базу в Конфигураторе и выберите Администрирование → Пользователи. Появится список учётных записей. Двойной щелчок по строке открывает окно свойств с двумя вкладками:

  1. Основные — имя, полное имя, флаги «Аутентификация 1С:Предприятия», «Аутентификация операционной системы», пароль, признак «Показывать в списке выбора».
  2. Прочие — роли, основной интерфейс, язык, режим запуска.

Это всё, что Конфигуратор показывает о конкретном пользователе. Содержимое пользовательских настроек — панели, отборы, отчёты — в Конфигураторе не просматривается: отдельного окна для этого в платформе нет.

Что ещё можно посмотреть в Конфигураторе:

  • 🔧 в корне дерева метаданных откройте свойства конфигурации и найдите группу свойств хранилищ. Там видно, какие хранилища переопределены и чем;
  • 📄 через Администрирование → Выгрузить информационную базу получить файл .dt. Он содержит все настройки всех пользователей и пригодится для отката.

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

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

Для чтения хранилищ у стандартных менеджеров есть три метода: Загрузить() для одной записи, ПолучитьВыборку() для перебора и Удалить(). ПолучитьВыборку() работает только на сервере. Чтобы читать чужие настройки, нужны административные права.

Перечень всех настроек конкретного пользователя

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

&НаСервереБезКонтекста
Процедура ПоказатьНастройкиНаСервере(ИмяПользователя)

	Хранилища = Новый Структура;
	Хранилища.Вставить("Системные", ХранилищеСистемныхНастроек);
	Хранилища.Вставить("Общие", ХранилищеОбщихНастроек);
	Хранилища.Вставить("ДанныеФорм", ХранилищеНастроекДанныхФорм);
	Хранилища.Вставить("Отчеты", ХранилищеПользовательскихНастроекОтчетов);

	Отбор = Новый Структура("Пользователь", ИмяПользователя);

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

КонецПроцедуры

Если какое-то хранилище в конфигурации переопределено, у него может не оказаться метода ПолучитьВыборку(). Тогда уберите его из структуры.

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

Когда ключи известны, проще загрузить конкретное значение:

Значение = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, , "Иванова");

Пустой третий параметр — это описание настроек, оно здесь не нужно. Если запись не найдена, метод вернёт Неопределено.

В конфигурациях на БСП для того же есть обёртка с безопасной проверкой прав:

Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, Неопределено);

Третий параметр — значение по умолчанию на случай, если записи нет.

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

Бывает нужно обратное: выяснить, у кого из сотрудников сохранены настройки конкретного отчёта или списка. Тогда в отборе указывают ключ объекта, а имя пользователя не задают:

Отбор = Новый Структура("КлючОбъекта", КлючОбъекта);
Выборка = ХранилищеПользовательскихНастроекОтчетов.ПолучитьВыборку(Отбор);
Пока Выборка.Следующий() Цикл
	Сообщить(Выборка.Пользователь + " | " + Выборка.КлючНастроек);
КонецЦикла;

Точное значение ключа объекта удобно взять из вывода первой процедуры: найдите строку с нужным отчётом и скопируйте его.

Параметры учётной записи

Свойства самой учётной записи читаются через менеджер ПользователиИнформационнойБазы:

&НаСервереБезКонтекста
Процедура ПоказатьУчетнуюЗапись(ИмяПользователя)

	Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
	Если Пользователь = Неопределено Тогда
		Сообщить("Пользователь не найден: " + ИмяПользователя);
		Возврат;
	КонецЕсли;

	Сообщить("Полное имя: " + Пользователь.ПолноеИмя);
	Сообщить("Вход по паролю 1С: " + Пользователь.АутентификацияСтандартная);
	Сообщить("Вход через ОС: " + Пользователь.АутентификацияОС);
	Для Каждого Роль Из Пользователь.Роли Цикл
		Сообщить("Роль: " + Роль.Имя);
	КонецЦикла;

КонецПроцедуры

Для текущего сеанса вместо НайтиПоИмени() используйте ПользователиИнформационнойБазы.ТекущийПользователь().

Что лежит на диске и в таблицах базы

Распространённое заблуждение — искать настройки 8.3 в папке профиля Windows. Начиная с 8.2 их там нет: всё сохраняется в базе.

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

Файловая база. Настройки записаны внутри файла 1Cv8.1CD вместе с данными. Отдельно скопировать их файлом нельзя.

Клиент-серверная база . В СУБД каждому хранилищу соответствует таблица:

Таблица СУБДХранилище
_SystemSettingsсистемные настройки
_CommonSettingsобщие настройки
_FrmDtSettingsнастройки данных форм
_RepSettingsпользовательские настройки отчётов
_RepVarSettingsварианты отчётов

Сами значения в них хранятся в сжатом двоичном виде.

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

Компьютер пользователя. В профиле Windows остаются только данные, которые относятся к рабочему месту, а не к человеку в базе:

  • 📁 %APPDATA%\1C\1CEStart\ibases.v8i — список баз в окне запуска;
  • 📁 %APPDATA%\1C\1cv8\ и %LOCALAPPDATA%\1C\1cv8\ — папки с кешем конфигураций, по подпапке на каждую базу;
  • 📄 файл def.usr в папке базы — имя пользователя, который входил последним.

Удаление этих папок или запуск с ключом /ClearCache чистит кеш. На панели, отборы и отчёты это не влияет.

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

Сброс нужен, когда у человека пропали панели, форма открывается за пределами экрана или отчёт «зависает» на тяжёлом отборе.

Сброс одной формы самим пользователем

В нужной форме нажмите Еще → Изменить форму. В окне настройки формы откройте меню «Ещё» и выберите «Установить стандартные настройки». Сбросится только эта форма, остальное останется.

Для отчёта аналогично: в форме отчёта через «Ещё» есть команда возврата к стандартным настройкам.

Сброс через обработку БСП

  1. Откройте Администрирование → Настройки пользователей и прав.
  2. Перейдите по ссылке «Настройки пользователей».
  3. Выберите пользователя.
  4. На вкладках «Внешний вид», «Настройки отчетов» и «Прочие настройки» отметьте лишнее или выделите всё.
  5. Нажмите «Очистить».

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

Сброс кодом

Когда типовой обработки нет, удалите записи методом Удалить(). Значение Неопределено в первых двух параметрах означает «все ключи»:

ХранилищеСистемныхНастроек.Удалить(Неопределено, Неопределено, "Иванова");

Делайте это, когда пользователь не работает в базе. Если он в сеансе, при выходе платформа сохранит настройки из памяти, и сброс не сработает.

Восстановление

Вернуть стёртые настройки штатно нельзя. Единственный способ — развернуть копию базы из .dt или резервной копии СУБД в отдельную базу и перенести настройки оттуда способом из следующего раздела. Поэтому перед массовой очисткой сделайте выгрузку.

Что нужно сделать с настройками?

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

Внутри одной базы

В обработке «Настройки пользователей» выберите пользователя-образец, отметьте нужные настройки и нажмите «Копировать». Обработка предложит выбрать получателей: одного, нескольких или всех. Удобно, когда в отделе десять бухгалтеров и всем нужен одинаковый набор отчётов.

В другую базу

Если новая база — копия старой через .dt, настройки переезжают автоматически. В остальных случаях выгрузите их в файл и загрузите на стороне приёмника.

Выгрузка общих настроек пользователя:

&НаСервереБезКонтекста
Процедура ВыгрузитьНастройки(ИмяПользователя, ИмяФайла)

	Данные = Новый Массив;
	Отбор = Новый Структура("Пользователь", ИмяПользователя);
	Выборка = ХранилищеОбщихНастроек.ПолучитьВыборку(Отбор);

	Пока Выборка.Следующий() Цикл
		Запись = Новый Структура("КлючОбъекта, КлючНастроек, Представление, Настройки",
			Выборка.КлючОбъекта, Выборка.КлючНастроек, Выборка.Представление, Выборка.Настройки);
		Данные.Добавить(Запись);
	КонецЦикла;

	ЗначениеВФайл(ИмяФайла, Данные);

КонецПроцедуры

Загрузка в базе-приёмнике, в том числе под другим именем пользователя:

&НаСервереБезКонтекста
Процедура ЗагрузитьНастройки(ИмяФайла, НовоеИмяПользователя)

	Данные = ЗначениеИзФайла(ИмяФайла);

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

КонецПроцедуры

Путь к файлу задаётся на стороне сервера 1С. Для остальных хранилищ код тот же, меняется только имя менеджера.

Ограничения, о которых стоит знать заранее:

  • 🔗 Ссылки на данные. Если в настройке сохранена организация или склад, а в приёмнике у этого элемента другой уникальный идентификатор, после загрузки поле окажется пустым или битым.
  • 🧩 Состав метаданных. Настройка формы или отчёта, которого нет в приёмнике, просто не применится.
  • 👤 Имя пользователя. Настройки привязаны к строке имени. Если в новой базе пользователь заведён как Иванова А.С., а не Иванова, загружайте под точным новым именем.
Перед переносом настроек
Выполнено: 0 / 5

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

Можно ли посмотреть настройки пользователя, не заходя под ним?
Да. Администратор видит и меняет чужие настройки через обработку «Настройки пользователей» или кодом с указанием имени пользователя. Пароль сотрудника для этого не нужен.
Почему после очистки настройки вернулись?
Пользователь был в сеансе. При выходе платформа записала настройки из памяти обратно. Завершите его сеанс и повторите очистку.
Сохранятся ли настройки после обновления конфигурации?
Обычно да: обновление не трогает системные хранилища. Слетают только настройки форм, которые разработчик сильно переделал, и отчётов, у которых изменилась схема.
Можно ли запретить пользователю менять свои настройки?
Да. Уберите из его ролей право «Сохранение данных пользователя». Менять вид в течение сеанса он сможет, но при следующем входе всё вернётся к стандартному.
Помогает ли ключ /ClearCache, если «поехал» интерфейс?
Только если причина в повреждённом кеше конфигурации. Расположение панелей и форм хранится в базе, и кеш на него не влияет.