Почему 1С 8.3 не запоминает настройки пользователя и как это исправить
Содержание
«Сохранение данных пользователя» в 1С 8.3 — это право в роли, без которого платформа не записывает личные настройки: ширину колонок, отборы списков, варианты отчётов, состав панелей, историю ввода. Если у пользователя нет ни одной роли с этим правом, после каждого перезапуска интерфейс возвращается к стандартному виду. Проверка занимает минуту: роль в конфигураторе, вкладка прав, флажок на уровне конфигурации.
Типичная история: бухгалтер настроила журнал проводок под себя, на следующий день открыла 1С — всё сбросилось. Администратор недавно собрал для неё новый профиль доступа и забыл роль, которая разрешает сохранять настройки. Пока роль не вернули в профиль, каждое утро начиналось с повторной настройки колонок и отборов. После исправления профиля и одного перезапуска программы проблема ушла и больше не возвращалась.
Как 1С 8.3 хранит персональные настройки пользователя
Личные настройки живут в самой информационной базе, а не на компьютере пользователя. Поэтому они «переезжают» вместе с человеком: зашёл с другого рабочего места или через веб-клиент — увидел свой привычный интерфейс.
Платформа раскладывает настройки по нескольким хранилищам. Каждое доступно и из встроенного языка:
| Хранилище (свойство глобального контекста) | Что в нём лежит |
|---|---|
ХранилищеСистемныхНастроек | Положение окон, состав панелей, настройки командного интерфейса, история |
ХранилищеОбщихНастроек | Произвольные настройки, которые сохраняет прикладной код конфигурации |
ХранилищеНастроекДанныхФорм | Значения реквизитов форм, помеченных как сохраняемые |
ХранилищеВариантовОтчетов | Варианты отчётов, созданные пользователями |
ХранилищеПользовательскихНастроекОтчетов | Отборы, группировки и оформление в отчётах |
ХранилищеПользовательскихНастроекДинамическихСписков | Отборы, сортировка, колонки списков |
В клиент-серверном варианте этим хранилищам соответствуют служебные таблицы СУБД — _SystemSettings, _CommonSettings, _FrmDtSettings, _RepSettings, _RepVarSettings, _DynListSettings. В файловой базе всё находится внутри 1Cv8.1CD.
Не правьте и не очищайте эти таблицы запросами к SQL. Структуру поддерживает платформа, ручное вмешательство приводит к ошибкам при открытии форм. Для управления настройками есть штатные средства, о них ниже.
Ключ каждой записи — имя пользователя информационной базы, ключ объекта (например, имя формы) и ключ настроек. Отсюда два следствия:
- 👤 у разных пользователей одной базы настройки независимы;
- 🔁 если человек работает под общей учётной записью, все, кто под ней входит, перезаписывают настройки друг друга.
Отдельно от базы на компьютере хранится только локальная служебная информация: кэш конфигурации в %APPDATA%\1C\1cv8\ и %LOCALAPPDATA%\1C\1cv8\, список баз в ibases.v8i. Очистка кэша через параметр запуска /ClearCache личные настройки форм и отчётов не удаляет.
Право «Сохранение данных пользователя» в ролях
Право находится в свойствах роли на уровне всей конфигурации, а не отдельного объекта. Чтобы проверить его в конфигураторе:
- Откройте
Конфигурация → Открыть конфигурацию. - В дереве метаданных разверните
Общие → Роли, откройте нужную роль. - В левом списке объектов выделите самую верхнюю строку — корень конфигурации.
- В правом списке прав найдите «Сохранение данных пользователя» и посмотрите, стоит ли флажок.
Роли объединяются по принципу «разрешено хотя бы в одной». Достаточно, чтобы право было включено в любой из ролей пользователя.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) для этого есть отдельная роль «Сохранение данных пользователя». Её включают в профили групп доступа. Когда администратор создаёт свой профиль с нуля или копирует профиль и удаляет «лишнее», эта роль часто пропадает.
Роль «Сохранение данных пользователя» в БСП несёт только это право и не открывает доступ к данным учёта. Включать её можно в любой профиль без риска расширить права.
Рядом с ним в том же списке есть похожие по смыслу права, которые путают:
- 🗂 «Сохранение данных пользователя» — запись личных настроек;
- 📊 «Вывод» — печать, сохранение в файл и копирование в буфер табличных документов;
- 🔐 «Администрирование» — в том числе работа с настройками других пользователей через хранилища.
Без «Вывода» пользователь не сохранит отчёт в Excel, но настройки отчёта у него сохранятся. Без «Сохранения данных пользователя» — наоборот.
Профили и настройки пользователей в режиме «Предприятие»
В конфигурациях на БСП права раздают не в конфигураторе, а в пользовательском режиме. Путь общий для БП 3.0, ЗУП 3.1 и УТ 11:
Администрирование → Настройки пользователей и прав
Там три нужных инструмента:
- 🧩 Профили групп доступа — откройте профиль, на вкладке ролей найдите «Сохранение данных пользователя» поиском по списку и отметьте её. Поставляемые профили менять нельзя: скопируйте профиль и правьте копию.
- 👥 Группы доступа — проверьте, что пользователь входит в группу с исправленным профилем.
- ⚙️ Настройки пользователей — обработка, которая показывает, копирует и очищает личные настройки выбранного человека.
Обработка «Настройки пользователей» решает почти все задачи без программиста:
- Выберите пользователя-источника.
- Отметьте виды настроек: внешний вид, настройки отчётов, прочие.
- Нажмите команду копирования и укажите, кому передать настройки. Можно выбрать нескольких получателей или целую группу.
- Для сброса выберите пользователя и выполните очистку отмеченных настроек.
Так удобно готовить рабочее место новому сотруднику: настроить один «эталонный» профиль кассира или кладовщика и разнести его на всех.
Копирование заменяет настройки получателя без запроса на слияние. Если у получателя есть свои варианты отчётов, сначала скопируйте их отдельно либо предупредите человека.
Сам пользователь может вернуть стандартный вид без администратора. Для одной формы — через Ещё → Изменить форму и кнопку стандартных настроек. Для отчёта — через меню настроек отчёта. Это локальный сброс, остальные формы не трогаются.
Перенос настроек между базами и выгрузка в XML
Обработка «Настройки пользователей» работает только внутри одной базы. Для переноса в другую базу (например, из копии в рабочую) нужен код. Самый надёжный путь — прочитать настройку из хранилища, сериализовать в XML, затем записать в другой базе.
Пример выгрузки общей настройки текущего пользователя в файл. Выполнять на сервере, например во внешней обработке:
&НаСервереБезКонтекста
Процедура ВыгрузитьНастройкуНаСервере(КлючОбъекта, КлючНастроек, ИмяФайла)
Настройка = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек);
Если Настройка = Неопределено Тогда
ВызватьИсключение "Настройка не найдена";
КонецЕсли;
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла);
СериализаторXDTO.ЗаписатьXML(Запись, Настройка, НазначениеТипаXML.Явное);
Запись.Закрыть();
КонецПроцедуры
Загрузка в другой базе — обратная операция:
&НаСервереБезКонтекста
Процедура ЗагрузитьНастройкуНаСервере(КлючОбъекта, КлючНастроек, ИмяФайла)
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ИмяФайла);
Настройка = СериализаторXDTO.ПрочитатьXML(Чтение);
Чтение.Закрыть();
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройка);
КонецПроцедуры
Что важно знать о таком переносе:
- 📌 не каждое значение сериализуется в XDTO. Простые типы, структуры, массивы,
НастройкиКомпоновкиДанныхпроходят; объекты с внутренними ссылками на данные базы могут не загрузиться, если в целевой базе нет тех же элементов справочников; - 📌 чтобы выгрузить настройки другого пользователя, у методов
ЗагрузитьиСохранитьесть параметр с именем пользователя. Работать с чужими настройками может только пользователь с правом «Администрирование»; - 📌 ключи объектов совпадают только между базами одной конфигурации. Между БП и УТ формы называются по-разному.
Для полного переноса базы целиком настройки уходят вместе с ней: выгрузка .dt содержит хранилища настроек. Если восстановить базу из старого .dt, у всех пользователей вернутся настройки на дату выгрузки.
Параметры сеанса и что в них сохранять нельзя
Параметры сеанса часто путают с сохранением данных пользователя. Это разные механизмы.
| Параметры сеанса | Хранилища настроек | |
|---|---|---|
| Где живут | В памяти сеанса на сервере | В таблицах информационной базы |
| Срок жизни | До завершения сеанса | Пока их не удалят |
| Кто задаёт | Код в модуле сеанса, процедура УстановкаПараметровСеанса | Платформа при закрытии форм и код конфигурации |
| Нужно ли право «Сохранение данных пользователя» | Нет | Да |
| Зачем нужны | Текущий пользователь, организация по умолчанию, параметры для RLS | Внешний вид и личные предпочтения |
Параметр сеанса пропадает при выходе из программы. Если доработка хранит в нём, например, выбранный склад, то после перезапуска склад сбросится, и никакие права это не исправят. Для таких значений нужен ХранилищеОбщихНастроек или регистр сведений
с измерением «Пользователь».
Обратная ситуация тоже встречается. Ограничение доступа на уровне записей (RLS) читает параметры сеанса. Если программист в модуле сеанса заполняет их из личных настроек, а сохранение запрещено, пользователь получит пустые значения и, как следствие, пустые списки или ошибки доступа.
Правило для доработок: всё, что должно пережить перезапуск, — в хранилище или регистр. Всё, что нужно только в текущем сеансе и для ограничений доступа, — в параметры сеанса.
Диагностика: почему сбрасываются настройки интерфейса
Ниже — причины, которые встречаются на практике, от частой к редкой. Проверяйте по порядку.
Если причина в правах, после исправления профиля пользователь должен перезапустить 1С: состав ролей применяется при входе в программу.
Если права в порядке, а настройки всё равно сбрасываются у всех сразу, проверьте журнал регистрации за последние сутки. Ищите события обновления конфигурации и загрузки информационной базы — это покажет, не откатывал ли кто-то базу.
Перед массовой очисткой настроек через обработку сделайте резервную копию базы . Удалённые варианты отчётов не восстанавливаются иначе как из копии.
Если ничего не помогло
Когда права есть, пользователь один, а интерфейс всё равно не запоминается, остаются редкие случаи:
- 🧪 Доработка, которая сбрасывает настройки. В конфигурации может быть код, очищающий хранилища при входе. Поищите глобальным поиском в конфигураторе вызовы
ХранилищеСистемныхНастроек.УдалитьиХранилищеОбщихНастроек.Удалить. - 🧱 Расширение со своей ролью. Если расширение подменяет роли пользователя или формы, сохранённые настройки исходных форм перестают подходить. Отключите расширение на копии базы и проверьте.
- 🗃 Переопределённые хранилища. Конфигурация может подменять стандартные хранилища своими объектами «Хранилище настроек» (свойства конфигурации в конфигураторе). Если там указан собственный объект, логика записи определяется его модулем.
- 🛠 Повреждение таблиц. Для файловой базы — тестирование и исправление через
Администрирование → Тестирование и исправлениев конфигураторе. Режим требует монопольного доступа: все пользователи должны выйти из базы, сеансы будут прерваны. Запускайте вне рабочего времени и только после резервной копии.