Хранилище настроек в 1С:Предприятие — это мощный, но часто недооценённый инструмент, который позволяет сохранять пользовательские параметры, настройки интерфейса, формы отчётов и другие критичные данные между сеансами работы. Без правильной настройки этого механизма администраторам приходится вручную восстанавливать предпочтения пользователей после обновлений или сбоев, а разработчики теряют часы на отладку "непредсказуемого" поведения системы. В этой статье разберём, как хранилище работает на уровне платформы, какие данные в нём хранятся, и — главное — как им управлять эффективно, избегая типичных ошибок.
Особенность хранилища настроек в том, что оно не является частью базы данных. Это отдельный файл (или набор файлов), который платформа 1С автоматически создаёт для каждого пользователя. В зависимости от версии и конфигурации, хранилище может располагаться как на сервере, так и на локальных машинах клиентов. Именно эта "распылённость" часто становится причиной проблем: от потери персональных настроек до конфликтов при групповой работе. Мы покажем, как централизовать управление хранилищем, резервировать его и восстанавливать в критических ситуациях.
Что такое хранилище настроек 1С и зачем оно нужно
Хранилище настроек — это механизм платформы 1С:Предприятие 8, предназначенный для сохранения индивидуальных параметров пользователей между сеансами. Сюда входят:
- 📌 Настройки интерфейса: расположение панелей, размеры окон, выбранные колонки в списках.
- 📊 Параметры отчётов и обработок: сохранённые варианты отборов, сортировки, группировки.
- ⚙️ Персональные настройки конфигурации: например, выбранный склад по умолчанию или валюта цен.
- 🔧 Данные форм: последние введённые значения в полях ввода, история выбора справочников.
Без хранилища все эти настройки сбрасывались бы после каждого выхода из программы. Однако его наличие создаёт и новые вызовы:
- 🔄 Синхронизация: при работе с терминальным сервером или веб-клиентом настройки могут "разъезжаться" между устройствами.
- 💾 Резервное копирование: файлы хранилища часто забывают включать в бэкапы, что приводит к потере данных.
- 🐞 Конфликты: при обновлении конфигурации старые настройки могут мешать работе новых функций.
Важно понимать, что хранилище не является частью информационной базы. Оно хранится отдельно — в файлах с расширением .usr (для пользовательских настроек) и .st (для системных параметров). Путь к этим файлам зависит от режима работы:
| Режим работы | Путь к хранилищу | Примечания |
|---|---|---|
| Файловый | %APPDATA%\1C\1Cv8\<ИмяБазы>\ |
Для каждого пользователя Windows создаётся отдельная папка. |
| Клиент-сервер (тонкий клиент) | \\<Сервер>\1Cv8\<ИмяБазы>\Users\ |
Централизованное хранилище на сервере, общий доступ. |
| Веб-клиент | /var/1C/users/ (Linux) или C:\inetpub\wwwroot\1c\users\ (Windows) |
Зависит от настроек веб-сервера. |
⚠️ Внимание: В последних версиях платформы (начиная с 8.3.20) изменился формат хранения некоторых параметров. Если вы используете старые скрипты для резервного копирования, проверьте их актуальность в документации к вашей версии.
Где физически хранится хранилище настроек и как его найти
Один из самых частых вопросов администраторов — "где искать файлы хранилища?". Ответ зависит от трёх факторов: версии платформы, режима работы (файловый/клиент-сервер) и типа клиента (толстый/тонкий/веб). Рассмотрим основные сценарии.
Для файлового варианта работы путь строится по шаблону:
%APPDATA%\1C\1Cv8\<УникальныйИдентификаторБазы>\
Где %APPDATA% — это системная переменная, ведущая в папку C:\Users\<ИмяПользователя>\AppData\Roaming\. Уникальный идентификатор базы можно узнать из файла 1Cv8.1CD (для файловой базы) или из списка баз в конфигураторе.
Для клиент-серверного варианта (тонкий клиент) путь обычно выглядит так:
\\<ИмяСервера>\1Cv8\<ИмяБазы>\Users\<ИмяПользователя1С>\
Здесь важно не путать имя пользователя Windows и имя пользователя 1С — файлы хранилища привязаны к учётной записи в базе, а не к ОС.
Особняком стоит веб-клиент. Здесь путь зависит от настроек веб-сервера:
- 🖥️ IIS (Windows): обычно
C:\inetpub\wwwroot\1c\users\. - 🐧 Apache/Nginx (Linux): часто
/var/1C/users/или/opt/1C/v8/users/.
Чтобы точно определить путь, можно воспользоваться встроенным механизмом платформы. Запустите 1С:Предприятие в режиме отладки (1cv8.exe /Debug) и выполните следующий код в отладчике:
Сообщить(ПолучитьПутьКХранилищуНастроек());
⚠️ Внимание: В многопользовательских системах (терминальные серверы, RDS) хранилище может дублироваться для каждого сеанса. Это приводит к "раздвоению" настроек. Чтобы избежать проблем, настройте централизованное хранилище через параметр запуска /UserSettingsStoragePath.
Как создать резервную копию хранилища настроек
Резервное копирование хранилища — критически важная процедура, которую часто упускают из виду. В отличие от базы данных, файлы настроек не восстанавливаются из бэкапа .dt или .cf. Их потеря означает, что все пользователи потеряют свои персональные настройки: от расположения панелей до сохранённых отчётов.
Существует три основных способа резервирования:
- 📂 Ручное копирование: подходит для небольших систем. Достаточно скопировать папку с файлами
.usrи.stв безопасное место. - 🤖 Автоматизированный скрипт: для Windows можно использовать
robocopy, для Linux —rsync. Пример команды для Windows:robocopy "C:\Users\Public\1C\Users\" "D:\Backup\1C_Settings\" /MIR /Z /R:3 /W:5 - 🔄 Интеграция с системой бэкапов: современные решения (например, Veeam или Acronis) позволяют включать папки хранилища в общий план резервного копирования.
Для клиент-серверных систем рекомендуется использовать централизованное хранилище, расположенное на сервере. Это упрощает бэкап: вместо копирования файлов с каждого рабочего места достаточно резервировать одну папку. Чтобы настроить централизованное хранилище:
- Откройте файл запуска клиента (
1cv8.cfgили ярлык). - Добавьте параметр:
/UserSettingsStoragePath=\\Server\1C_Settings\ - Убедитесь, что у пользователей есть права на запись в эту папку.
Создать отдельную папку для бэкапов настроек|
Проверить права доступа к папке хранилища|
Настроить автоматическое копирование (через Планировщик задач или cron)|
Протестировать восстановление из бэкапа-->
Особое внимание уделите веб-клиенту. Здесь файлы хранилища могут обновляться чаще из-за особенностей работы браузеров. Рекомендуется:
- 🔒 Настроить
chmodдля папки/var/1C/users/так, чтобы веб-сервер (apache или nginx) имел права на запись. - 📅 Автоматизировать бэкап через
cron:0 3 * tar -czf /backup/1c_settings_$(date +\%Y\%m\%d).tar.gz /var/1C/users/
⚠️ Внимание: Если вы используете 1С:Fresh или облачные решения, хранилище настроек может располагаться на стороне провайдера. В этом случае резервное копирование лежит на плечах поставщика услуг — уточните детали в договоре.
Как восстановить хранилище настроек после сбоя
Восстановление хранилища — процедура, с которой рано или поздно сталкивается каждый администратор. Причины потери настроек могут быть разными: от случайного удаления файлов до сбоя жёсткого диска. Главное правило: не паниковать и не пытаться "восстановить" файлы вручную без предварительного бэкапа.
Алгоритм действий зависит от scenarios:
| Сценарий | Действия | Риски |
|---|---|---|
| Файлы удалены, но есть бэкап | Восстановите файлы .usr и .st из резервной копии в исходную папку. Перезапустите клиенты 1С. |
Если бэкап устарел, пользователи потеряют настройки, сделанные после его создания. |
| Файлы повреждены | Удалите повреждённые файлы. При следующем запуске 1С создаст новые с настройками по умолчанию. | Все персональные настройки будут сброшены. |
| Сбой сервера (Raid, HDD) | Восстановите папку хранилища из образа диска или резервной копии сервера. | Возможны конфликты, если пользователи работали с другими клиентами (например, веб-версией). |
| Обновление конфигурации | Сравните версии хранилища и конфигурации. При необходимости перенесите настройки вручную через Конфигуратор → Администрирование → Настройки пользователей. |
Некоторые настройки могут быть несовместимы с новой версией. |
Если бэкапа нет, можно попытаться восстановить файлы с помощью специализированных утилит (например, Recuva или R-Studio). Однако шансы на успех невысоки: файлы .usr часто фрагментированы, а их структура зашифрована. В этом случае проще:
- Создать нового пользователя в 1С с теми же правами.
- Скопировать его файлы настроек (
.usr) в папку проблемного пользователя. - Вручную восстановить критичные настройки (например, варианты отчётов).
Для клиент-серверных систем с большим числом пользователей восстановление вручную нереально. Здесь поможет скрипт на 1С:Предприятие, который экспортирует настройки из бэкапа и применяет их к текущим пользователям:
// Пример кода для восстановления вариантов отчётов
Процедура ВосстановитьВариантыОтчетов(ПутьКБэкапу)
КаталогНастроек = Новый Файл(ПутьКБэкапу);
Для Каждого ФайлНастройки Из КаталогНастроек.НайтиФайлы("*.usr") Цикл
ИмяПользователя = Сред(ФайлНастройки.Имя, 1, Найти(ФайлНастройки.Имя, ".") - 1);
Попытка
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Если Не Пользователь = Неопределено Тогда
// Код восстановления настроек для конкретного пользователя
КонецЕсли;
Исключение
ЗаписатьВЛог("Ошибка восстановления для " + ИмяПользователя + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Если вы восстанавливаете хранилище после обновления конфигурации, сначала проверьте совместимость версий. Некоторые настройки (например, для удалённых форм) могут стать неактуальными и вызвать ошибки при открытии.
Типичные ошибки при работе с хранилищем настроек и как их избежать
Даже опытные администраторы сталкиваются с проблемами, связанными с хранилищем настроек. Чаще всего ошибки возникают из-за непонимания механизма работы платформы или несоблюдения лучших практик. Разберём самые распространённые случаи и способы их решения.
1. "Настройки сбрасываются после обновления"
Причина: При обновлении конфигурации платформа может сбросить настройки, если их структура изменилась. Например, если в новой версии удалили поле из формы, все сохранённые варианты с этим полем станут невалидными.
Решение: Перед обновлением экспортируйте критичные настройки через Конфигуратор → Администрирование → Настройки пользователей → Экспорт. После обновления импортируйте их обратно.
2. "Пользователи видят чужие настройки"
Причина: В терминальных системах (RDS, Citrix) или при использовании общих профилей Windows файлы .usr могут перезаписываться. Это происходит, если несколько пользователей работают под одной учётной записью ОС.
Решение: Настройте централизованное хранилище с привязкой к именам пользователей 1С, а не Windows. Используйте параметр /UserSettingsStoragePath с уникальными подпапками для каждого пользователя.
3. "Хранилище разрастается до гигантских размеров"
Причина: Платформа не очищает старые или неиспользуемые настройки автоматически. Со временем файлы .usr могут достигать сотен мегабайт, что замедляет загрузку клиента.
Решение: Периодически чистите хранилище с помощью скрипта:
// Удаление устаревших настроек (старше 180 дней)
Процедура ОчиститьСтарыеНастройки(ПутьКХранилищу, ДнейХранения = 180)
Каталог = Новый Файл(ПутьКХранилищу);
ТекущаяДата = ТекущаяДата();
Для Каждого Файл Из Каталог.НайтиФайлы("*.usr") Цикл
ДатаИзменения = Файл.ДатаМодификации();
Если (ТекущаяДата - ДатаИзменения) > ДнейХранения Тогда
Файл.Удалить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
4. "Настройки не синхронизируются между устройствами"
Причина: В смешанных средах (например, тонкий клиент + веб-клиент) хранилища могут дублироваться. Платформа не синхронизирует их автоматически.
Решение: Используйте единое централизованное хранилище для всех типов клиентов. Для веб-клиента настройте символические ссылки (symlink) на общую папку:
mklink /D "C:\inetpub\wwwroot\1c\users" "\\server\1C_Settings\"
Почему не работает параметр /UserSettingsStoragePath?
Если параметр /UserSettingsStoragePath не срабатывает, проверьте:
1. Правильность пути (должен существовать и быть доступен для записи).
2. Отсутствие пробелов или специальных символов в пути (используйте короткие имена типа 8.3, если необходимо).
3. Версию платформы: в старых версиях (до 8.3.10) этот параметр мог игнорироваться.
4. Права доступа: пользователь, под которым запущен 1С, должен иметь полные права на папку.
⚠️ Внимание: В многопользовательских системах никогда не настраивайте хранилище на сетевой диск с кэшированием (например, Offline Files в Windows). Это приводит к конфликтам и потере данных при отключении сети.
Оптимизация работы с хранилищем: советы для администраторов
Хранилище настроек может стать "узким местом" в производительности, если им не управлять. Особенно это заметно в крупных системах с сотнями пользователей. Вот несколько проверенных способов оптимизации:
1. Разделение хранилища по группам пользователей
Вместо одного общего хранилища создайте отдельные папки для разных departments (бухгалтерия, склад, продажи). Это уменьшит фрагментацию файлов и ускорит доступ. Пример структуры:
\\server\1C_Settings\
├── Бухгалтерия\
├── Склад\
├── Продажи\
└── Администраторы\
2. Ограничение размера хранилища
Настройте автоматическую очистку старых файлов через Планировщик задач (Windows) или cron (Linux). Например, этот скрипт для PowerShell удаляет файлы старше 90 дней:
$Path = "\\server\1C_Settings\"
$Days = 90
$Now = Get-Date
Get-ChildItem -Path $Path -Recurse -Include "*.usr" | Where-Object {
$_.LastWriteTime -lt $Now.AddDays(-$Days)
} | Remove-Item -Force
3. Использование SSD для хранилища
Файлы .usr читаются/пишутся при каждом запуске клиента. Размещение хранилища на SSD-диске может сократить время загрузки на 30-40%. Особенно актуально для терминальных серверов.
4. Отключение сохранения ненужных параметров
Некоторые настройки (например, положение окон) можно отключить от сохранения. Для этого в конфигураторе найдите модуль управляемого приложения и добавьте:
#Если Клиент Тогда
ПараметрыСеанса.СохранятьПоложениеОкон = Ложь;
#КонецЕсли
5. Мониторинг роста хранилища
Настройте оповещения о превышении размера папки. Например, в Zabbix или Nagios можно создать триггер:
# Пример условия для Zabbix
{template_app_1c_settings:vfs.fs.size[/1C_Settings].last()} > 1G
Централизованное хранилище на SSD с автоматической очисткой — оптимальное решение для систем с 50+ пользователями. Это сокращает время загрузки клиента и упрощает администрирование.
Программное управление хранилищем: методы и примеры кода
Платформа 1С:Предприятие предоставляет разработчикам API для работы с хранилищем настроек. Это позволяет автоматизировать резервное копирование, миграцию и очистку. Рассмотрим ключевые методы и примеры их применения.
1. Получение пути к хранилищу
Чтобы узнать текущий путь к хранилищу из кода, используйте:
ПутьКХранилищу = КаталогПользовательскихНастроек();
Сообщить(ПутьКХранилищу);
2. Экспорт и импорт настроек
Для переноса настроек между базами или пользователями:
// Экспорт настроек пользователя
ЭкспортироватьНастройкиПользователя("ИвановИИ", "C:\Backup\ivanov_settings.xml");
// Импорт настроек
ИмпортироватьНастройкиПользователя("ПетровПП", "C:\Backup\ivanov_settings.xml");
3. Работа с вариантами отчётов
Чтобы скопировать варианты отчётов между пользователями:
// Получаем все варианты отчёта "ПродажиПоНоменклатуре"
Отчет = Отчеты.ПродажиПоНоменклатуре.Создать();
Варианты = Отчет.ВариантыОтчета();
// Копируем варианты от Иванова к Петрову
Для Каждого Вариант Из Варианты Цикл
Если Вариант.Владелец.Имя = "ИвановИИ" Тогда
НовыйВариант = Отчет.ВариантыОтчета.Добавить();
НовыйВариант.Заполнить(Вариант);
НовыйВариант.Владелец = Пользователи.НайтиПоИмени("ПетровПП");
КонецЕсли;
КонецЦикла;
4. Очистка хранилища через код
Для удаления устаревших файлов:
Процедура ОчиститьХранилище(ДнейХранения = 30)
Путь = КаталогПользовательскихНастроек();
Каталог = Новый Файл(Путь);
ТекущаяДата = ТекущаяДата();
Для Каждого Файл Из Каталог.НайтиФайлы("*.usr") Цикл
РазницаДней = (ТекущаяДата - Файл.ДатаМодификации()) / 86400;
Если РазницаДней > ДнейХранения Тогда
Файл.Удалить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
5. Перенос хранилища на другой сервер
При миграции системы используйте этот скрипт для копирования всех настроек:
Процедура ПеренестиХранилище(ИсходныйПуть, ЦелевойПуть)
ИсходныйКаталог = Новый Файл(ИсходныйПуть);
ЦелевойКаталог = Новый Файл(ЦелевойПуть);
Если Не ЦелевойКаталог.Существует() Тогда
ЦелевойКаталог.Создать();
КонецЕсли;
Для Каждого Файл Из ИсходныйКаталог.НайтиФайлы(".") Цикл
ЦелевойФайл = Новый Файл(ЦелевойКаталог.ПолноеИмя + "\" + Файл.Имя);
Файл.Копировать(ЦелевойФайл.ПолноеИмя);
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: При программной работе с хранилищем всегда оборачивайте операции в блокиПопытка...Исключение. Файлы.usrмогут быть заблокированы, если пользователь работает в системе.
FAQ: Частые вопросы по работе с хранилищем настроек 1С
Можно ли отключить хранилище настроек совсем?
Технически да, но это не рекомендуется. Хранилище — неотъемлемая часть платформы, и его отключение приведёт к потере всех персональных параметров. Однако можно ограничить сохраняемые данные. Например, в конфигураторе отключите сохранение положения окон:
#Если Клиент Тогда
ПараметрыСеанса.СохранятьПоложениеОкон = Ложь;
ПараметрыСеанса.СохранятьРазмерыОкон = Ложь;
#КонецЕсли
Это уменьшит размер файлов .usr, но не отключит хранилище полностью.
Как перенести настройки с одного компьютера на другой?
Скопируйте файлы <ИмяПользователя>.usr и <ИмяПользователя>.st из папки хранилища старого компьютера в папку на новом. Убедитесь, что:
- Имена пользователей в 1С совпадают.
- Версии платформы идентичны (или совместимы).
- Права доступа на новые файлы разрешают запись.
Если переносите настройки между разными базами, используйте экспорт/импорт через конфигуратор.
Почему после обновления 1С сбросились все настройки?
Это типичная ситуация, если:
- Структура конфигурации изменилась (удалены формы, отчёты, реквизиты).
- Обновилась версия платформы, и формат хранилища стал несовместим.
- При обновлении был сброшен флаг "Сохранять настройки пользователей" в конфигураторе.
Чтобы избежать потерь:
- Перед обновлением экспортируйте настройки через
Администрирование → Настройки пользователей. - Сравните версии хранилища и конфигурации с помощью утилиты chdbfl.exe.
- После обновления импортируйте сохранённые настройки.
Как восстановить настройки, если файлы .usr повреждены?
Если файлы повреждены (например, размер 0 байт или ошибки чтения):
- Удалите повреждённые файлы. 1С создаст новые при следующем запуске.
- Если есть бэкап — восстановите файлы из него.
- Для критичных настроек (варианты отчётов) воспользуйтесь журналом изменений в конфигураторе (
Администрирование → Журнал изменений).
Если бэкапа нет, попробуйте восстановить данные с помощью утилит вроде 1Cv8UsrTool (стороннее ПО, используйте на свой страх и риск).
Можно ли хранить хранилище настроек в базе данных?
Нет, платформа 1С не поддерживает хранение пользовательских настроек непосредственно в базе данных SQL. Файловый формат (.usr) жёстко зашит в архитектуру системы. Однако можно: