Администрирование · 12 мин
Где 1С сохраняет значения: настройки, хранилища и способы восстановления
Разбираем, где 1С сохраняет значения: хранилище значений, СохранитьЗначение, настройки пользователей. Где искать сохранённые данные и как их восстановить.
Пользователи 1С регулярно сталкиваются с ситуацией: программа «помнит» какие-то значения — последние отборы отчётов, настройки форм, введённые параметры — но где именно они хранятся, непонятно. Вопрос «1С сохранить значения — где» возникает и у разработчиков, использующих функции СохранитьЗначение и ВосстановитьЗначение, и у администраторов, которым нужно найти или сбросить пользовательские настройки.
В 1С:Предприятии существует несколько независимых механизмов сохранения значений, и у каждого своё физическое расположение. Часть данных лежит в таблицах информационной базы, часть — в файлах на диске, часть — в специальных системных хранилищах настроек. Путаница между ними — главная причина, почему «сохранённое» значение не находится или, наоборот, не сбрасывается.
Дальше разберём каждый механизм: где физически хранятся данные, как их найти, проверить и при необходимости очистить, а также какие ошибки чаще всего мешают восстановить сохранённые значения.
Какие механизмы сохранения значений существуют в 1С
Прежде чем искать сохранённое значение, нужно понять, каким способом оно было записано. Платформа 1С:Предприятие предлагает несколько принципиально разных механизмов, и они не взаимозаменяемы.
Основные варианты:
- СохранитьЗначение / ВосстановитьЗначение — встроенные функции для сохранения произвольных значений между сеансами;
- Хранилища настроек (общее, пользовательское, системное, вариантов отчётов, данных форм) — стандартные хранилища платформы;
- Реквизиты с типом ХранилищеЗначения — поля в справочниках, документах, регистрах, где значение сериализуется и пишется прямо в таблицу базы;
- Константы и регистры сведений — когда разработчик хранит значения как обычные данные;
- Файлы настроек пользователя — служебные файлы в каталоге базы или профиле пользователя.
У каждого механизма своё физическое расположение, свои права доступа и свой способ очистки. Ошибка в выборе механизма приводит к типичным проблемам: настройки «теряются» при переносе базы, значения недоступны другому пользователю или, наоборот, видны всем, хотя должны быть личными.
Где хранятся значения, записанные через СохранитьЗначение
Функция СохранитьЗначение имеет два варианта работы в зависимости от переданных параметров, и именно от этого зависит, где искать данные.
Сохранение в хранилище общих настроек
Если при вызове указаны имя объекта и настройки, значение записывается в хранилище общих настроек. По умолчанию это системная таблица внутри информационной базы (в клиент-серверном варианте — таблица на SQL-сервере, в файловом — внутри файла 1Cv8.1CD). Физического файла, который можно открыть вручную, нет.
Ключевой момент: сохранение выполняется для конкретного пользователя. Значение, записанное под одним пользователем, не будет прочитано под другим — ВосстановитьЗначение вернёт пустоту. Это самая частая причина «пропавших» настроек.
Сохранение в файл
Если в параметрах указан путь к файлу, значение сериализуется и записывается в указанный файл на диске. Такой файл можно скопировать, перенести на другой компьютер и прочитать там через ВосстановитьЗначение с тем же путём. Ограничение: в веб-клиенте и при ограниченных правах доступ к файловой системе может быть запрещён, и сохранение молча не сработает.
// Сохранение в хранилище общих настроек (для текущего пользователя)
СохранитьЗначение("МоиНастройки_ОтборПоСкладу", ВыбранныйСклад);
// Сохранение в файл на диске
СохранитьЗначение("C:\Настройки\Отборы.dat", ВыбранныйСклад);
// Восстановление
Склад = Неопределено;
ВосстановитьЗначение("МоиНастройки_ОтборПоСкладу", Склад);Где находятся хранилища настроек и как их посмотреть
Платформа автоматически сохраняет массу пользовательских данных: настройки отчётов, варианты отборов, параметры форм, историю ввода. Всё это лежит в системных хранилищах настроек.
В типовых конфигурациях посмотреть и очистить эти данные можно через раздел администрирования. В конфигурациях на БСП (Библиотека стандартных подсистем) есть обработка управления настройками пользователей: «Администрирование → Пользователи и права → Персональные настройки пользователей» либо аналогичный пункт в зависимости от версии. Там видно, какие настройки сохранены у каждого пользователя, их можно скопировать другому пользователю или удалить.
Программно доступ к хранилищам выполняется через объекты ХранилищеОбщихНастроек, ХранилищеПользовательскихНастроекОтчетов, ХранилищеНастроекДанныхФорм и ХранилищеСистемныхНастроек. У каждого есть методы Сохранить, Загрузить, Удалить и ПолучитьСписок — последний покажет все ключи сохранённых настроек.
Проверьте список настроек через ХранилищеОбщихНастроек.ПолучитьСписок() или штатную обработку настроек пользователей
Проверьте, не сохранялись ли данные в файл на диске или в каталог пользователя, который не переносился
Откройте объект и прочитайте реквизит программно через метод Получить()
Проверьте, не изменился ли ключ формы или имя объекта настроек после обновления
ХранилищеЗначения в реквизитах объектов
Отдельный случай — реквизиты справочников, документов и регистров с типом ХранилищеЗначения. Так разработчики сохраняют сложные данные: таблицы значений, картинки, результаты обменов, произвольные структуры. Физически это двоичные данные внутри таблицы базы, и в пользовательском режиме их содержимое обычно не видно.
Чтобы прочитать такое значение, нужен программный доступ: открыть объект, обратиться к реквизиту и вызвать метод Получить(). В консоли кода или через внешнюю обработку это делается за пару строк. Обратная операция — запись — выполняется через конструктор Новый ХранилищеЗначения(Значение).
Важное ограничение: данные в ХранилищеЗначения не участвуют в запросах — нельзя отобрать объекты по содержимому упакованного значения. Если нужен поиск или отбор по данным, их следует хранить в обычных реквизитах, а не в хранилище.
Файлы настроек в каталоге базы и профиле пользователя
Часть настроек платформа хранит вне таблиц информационной базы — в служебных файлах. Для файловой базы это файлы в каталоге базы (например, файлы с расширением .cfl и служебные подкаталоги), для клиентского приложения — файлы в профиле пользователя операционной системы (каталоги вида AppData\Roaming\1C\1cv8).
Там лежат, в частности, списки информационных баз, параметры окон, настройки толстого и тонкого клиента. Эти файлы привязаны к компьютеру и учётной записи Windows, поэтому при переходе пользователя на другое рабочее место они не переносятся — настройки придётся выполнять заново или копировать файлы вручную.
Удаление служебных файлов профиля — рабочий способ сбросить «залипшие» настройки клиента, когда программа ведёт себя странно: не открывает окна, показывает устаревшие списки баз. Перед удалением каталог лучше переименовать, а не стирать — это позволит откатиться.
Как восстановить или сбросить сохранённые значения
Задача «вернуть сохранённое» обычно сводится к одному из трёх сценариев: восстановить значение программно, найти настройку и скопировать её другому пользователю, либо полностью сбросить настройки, которые мешают работе.
Как проверить, что значение действительно сохранено и восстановлено
Тихая неудача — главная проблема механизмов сохранения: функции не всегда сообщают об ошибке, значение просто не записывается или не читается. Поэтому проверка обязательна.
Как проверить результат
Значение присвоено переменной и имеет ожидаемый тип
Переменная осталась Неопределено — ключ не найден, другой пользователь или файл недоступен
Ключ настройки присутствует в ПолучитьСписок() или в штатной обработке настроек
Ключа нет — сохранение не выполнилось или было удалено
Файл существует, имеет ненулевой размер и актуальную дату изменения
Файл отсутствует или устарел — сохранение не сработало, проверьте путь и права
Настройки подхватываются в новом сеансе
Всё сбрасывается — значение сохранялось только в памяти сеанса, а не в хранилище
Дополнительная практическая рекомендация: при разработке всегда обрабатывайте случай, когда восстановленное значение пустое — задавайте значение по умолчанию. Это защитит от ошибок у новых пользователей, у которых настроек ещё нет.
Что важно запомнить
В 1С нет единого места, где сохраняются значения: хранилища настроек лежат в системных таблицах базы и привязаны к пользователю, ХранилищеЗначения — в реквизитах объектов и читается только программно, файловое сохранение — по указанному пути на диске, а часть настроек клиента — в профиле пользователя ОС. Сначала определите механизм сохранения, затем ищите значение в соответствующем месте, а любую очистку выполняйте штатными средствами после резервного копирования.
Частые вопросы
Почему настройки отчёта есть у одного пользователя и пропали у другого?
Настройки отчётов и форм хранятся в пользовательских хранилищах и привязаны к конкретному пользователю базы. Чтобы передать настройки, используйте штатную обработку копирования настроек пользователей в разделе администрирования или программное копирование через объекты хранилищ.
Можно ли посмотреть содержимое реквизита с типом ХранилищеЗначения без программирования?
Штатного просмотра в пользовательском режиме обычно нет — данные хранятся в двоичном виде. Содержимое можно увидеть только программно через метод Получить(), например в консоли кода или специальной обработкой, если конфигурация её предоставляет.
Перенесутся ли настройки при выгрузке и загрузке базы через dt?
Да, выгрузка в файл dt включает системные таблицы хранилищ настроек, поэтому пользовательские настройки сохраняются. А вот обмены данными и типовые синхронизации настройки, как правило, не переносят.
Как полностью сбросить все настройки конкретного пользователя?
В типовых конфигурациях на БСП используйте обработку управления персональными настройками в разделе «Администрирование». Программно можно пройти по списку настроек через ПолучитьСписок и удалить каждую методом Удалить с указанием имени пользователя. Предварительно сделайте копию базы.
Почему СохранитьЗначение не выдаёт ошибку, но значение потом не находится?
Чаще всего причины три: восстановление выполняется под другим пользователем, используется другой ключ (имя) настройки, либо при файловом сохранении путь недоступен и запись молча не выполнилась. Проверьте имя пользователя, точное совпадение ключа и наличие файла по указанному пути.
Где хранятся настройки в клиент-серверном варианте работы?
В клиент-серверном варианте хранилища настроек находятся в таблицах базы данных на сервере СУБД (MS SQL, PostgreSQL и др.). Напрямую работать с этими таблицами не рекомендуется — используйте программные объекты хранилищ или штатные обработки конфигурации.