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

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

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

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

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

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

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

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

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

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

Как посмотреть настройки через интерфейс

В типовых конфигурациях (Бухгалтерия, Управление торговлей, ЗУП) часть настроек доступна пользователю напрямую. Например, настройки отчёта открываются кнопкой «Настройки» в форме отчёта, а варианты отчётов сохраняются через «Ещё — Сохранить вариант отчёта». Персональные настройки программы обычно находятся в разделе «Администрирование — Персональные настройки» или в меню пользователя.

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

Внешний вид начальной страницы и панелей настраивается через «Вид — Настройка начальной страницы» и «Вид — Панели». Эти параметры также сохраняются в системное хранилище и привязаны к конкретному пользователю.

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

Основной сценарий разработчика — прочитать конкретную настройку в коде. Для этого у каждого системного хранилища есть метод Загрузить, принимающий ключ объекта, ключ настройки и имя пользователя. Если настройка не найдена, метод вернёт Неопределено — это нужно обрабатывать, иначе код упадёт с ошибкой при обращении к свойству результата.

bsl
// Чтение произвольной настройки пользователя
КлючОбъекта = "Обработка.ЗагрузкаДанных";
КлючНастройки = "КаталогОбмена";
ИмяПользователя = ИмяПользователя(); // текущий пользователь ИБ

Значение = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастройки, , ИмяПользователя);
Если Значение = Неопределено Тогда
    Значение = ""; // значение по умолчанию
КонецЕсли;

Для сохранения настройки используется метод Сохранить с теми же параметрами. Важно, чтобы ключи объекта и настройки совпадали при записи и чтении — платформа не проверяет их осмысленность, и опечатка в строке ключа создаст «вторую» настройку, которую никто не читает.

Список всех настроек хранилища можно получить методом Выбрать с отбором по пользователю. Он возвращает выборку, которую перебирают в цикле. Это удобно для аудита: например, чтобы найти пользователей с устаревшими значениями параметров.

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

Получение настроек отчётов и форм

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

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

Как сбросить настройки формы пользователю
  1. 1
    Определите ключ объекта: полное имя формы, например Документ.Заказ.Форма.ФормаСписка
  2. 2
    Откройте консоль кода или обработку с правами администратора
  3. 3
    Выполните ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, ИмяПользователя)
  4. 4
    Попросите пользователя закрыть и заново открыть форму
  5. 5
    Проверьте, что форма открылась с настройками по умолчанию

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

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

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

Типовые ошибки и ограничения

Типичные ошибки
01
Чтение настройки без проверки на Неопределено — код падает у пользователей, которые ещё ни разу не сохраняли параметр
02
Поиск настройки не в том хранилище: настройки отчёта ищут в ХранилищеОбщихНастроек и получают пустое значение
03
Несовпадение ключей при сохранении и загрузке — платформа молча создаёт отдельную запись, и настройка «не читается»
04
Указание представления пользователя вместо имени: методы ждут именно Имя пользователя информационной базы, а не ФИО из справочника
05
Очистка настроек у пользователя, который сейчас работает в сеансе, — изменения могут перезаписаться при выходе

Отдельное ограничение — права. Читать и изменять чужие настройки может только пользователь с правами администратора (роль «АдминистраторСистемы» или полные права). Обычный пользователь программно получает только собственные настройки, и попытка указать чужое имя завершится ошибкой доступа.

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

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

Значение, возвращённое методом Загрузить
Норма

Получено ожидаемое значение или Неопределено для ещё не заданной настройки

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

Ошибка выполнения или значение из другого ключа

Поведение формы после сброса настроек
Норма

Форма открылась с составом колонок по умолчанию

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

Форма выглядит как раньше — удалён не тот ключ или пользователь не переоткрыл сеанс

Копирование настроек другому пользователю
Норма

У приёмника отчёты и списки выглядят как у источника

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

Настройки применились частично — часть хранится в другом хранилище

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

Итог

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

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

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

Используйте функцию ИмяПользователя() — она возвращает имя пользователя информационной базы текущего сеанса. Если нужен объект справочника «Пользователи», в типовых конфигурациях есть функция Пользователи.ТекущийПользователь(), но для хранилищ настроек требуется именно строковое имя.

Почему метод Загрузить возвращает Неопределено, хотя настройка есть?

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

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

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

Куда пропадают настройки отчётов после обновления конфигурации?

Если при обновлении изменилось имя отчёта или ключ варианта, старые настройки остаются в хранилище под прежним ключом и перестают подхватываться. Лечится копированием настроек на новый ключ программно либо повторным сохранением вариантов пользователями.

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

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