Работа с формами в 1С:Предприятие — одна из самых востребованных задач среди разработчиков и администраторов.hether вы настраиваете интерфейс под нужды пользователей, исправляете ошибки отображения или переносите изменения между базами, без понимания, где и как хранятся настройки форм, не обойтись. Проблема в том, что механизмы хранения отличаются в зависимости от типа формы (управляемая/обычная), версии платформы и даже способа модификации (через конфигуратор или в режиме предприятия).

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

Особое внимание уделим трём ключевым аспектам:

  • 📁 Физическое хранение — где именно лежат данные (файловая база vs SQL, системные таблицы vs пользовательские настройки).
  • 🔧 Логическая структура — как настройки привязаны к объектам конфигурации (формы, реквизиты, команды).
  • ⚙️ Практические методы доступа — как программно читать/изменять настройки (включая примеры кода на встроенном языке).
📊 С какой целью вы ищете информацию о хранении форм в 1С?
Перенос настроек между базами
Отладка ошибок отображения
Разработка кастомных форм
Оптимизация производительности
Другое

1. Типы форм в 1С и их отличие по механизму хранения

Прежде чем искать настройки, нужно чётко понимать, с каким типом формы вы работаете. В 1С:Предприятие 8 выделяют два основных вида:

Управляемые формы (введены в 8.2) хранят настройки принципиально иначе, чем обычные формы (унаследованные из 8.1). Разница заключается не только в визуальном отображении, но и в механизме сохранения пользовательских предпочтений:

  • 📌 Управляемые формы используют UserSettingsStorage — специализированное хранилище, которое может работать как в файловом, так и в SQL-варианте. Настройки здесь привязаны к идентификатору формы и пользователю.
  • 📌 Обычные формы сохраняют параметры непосредственно в конфигурации (если изменены через конфигуратор) или в регистре сведений "Настройки пользователей" (если изменены в пользовательском режиме).

Кроме того, с версии 8.3.10 появилась поддержка динамических форм, которые генерируются на лету и могут не иметь постоянного хранилища настроек. Их параметры часто хранятся в оперативной памяти и сбрасываются при закрытии сеанса.

⚠️ Внимание: В 1С:Предприятие 8.3.20+ изменился механизм хранения некоторых настроек управляемых форм для веб-клиента. Если вы работаете с веб-версией, проверьте актуальность методов в документации к вашей версии платформы.

2. Где хранятся настройки управляемых форм

Управляемые формы — самый распространённый тип в современных конфигурациях (УТ 11, БП 3.0, ЗУП 3.1 и др.). Их настройки делятся на три уровня:

  1. Настройки по умолчанию — хранятся в конфигурации (в метаданных формы).
  2. Пользовательские настройки — сохраняются в UserSettingsStorage.
  3. Системные параметры — могут храниться в служебных таблицах SQL (например, v8users для привязки к пользователям).

Основное хранилище пользовательских настроек — UserSettingsStorage. Это специальный объект платформы, который может работать в двух режимах:

  • 💾 Файловый вариант — настройки хранятся в файлах *.usr в каталоге базы (для файлового варианта ).
  • 🗃️ SQL-вариант — настройки пишутся в таблицу UserSettingsStorage в базе данных (для клиент-серверного варианта).

Чтобы программно получить доступ к этим настройкам, используйте метод ПолучитьНастройки():

Настройки = ПользовательскиеНастройки.ПолучитьНастройки(

ИдентификаторФормы,

ИмяПользователя,

ИмяКомпьютера

);

Где:

  • ИдентификаторФормы — уникальный GUID формы (можно получить через Метаданные.Формы.ВашаФорма.Ид()).
  • ИмяПользователя и ИмяКомпьютера — используются для привязки настроек к конкретному рабочему месту.
💡

Если вы разрабатываете расширение для конфигурации, избегайте прямого изменения настроек в UserSettingsStorage через SQL-запросы. Это может привести к несовместимости при обновлении платформы. Вместо этого используйте штатные методы работы с пользовательскими настройками.

3. Хранение настроек обычных форм

Обычные формы (унаследованные из 1С:Предприятие 8.1) хранят настройки иначе. Здесь нет UserSettingsStorage, зато есть:

Тип настройки Место хранения Как получить доступ
Настройки по умолчанию В метаданных конфигурации (в описании формы) Через конфигуратор: Конфигурация → Формы → ВашаФорма
Пользовательские настройки (изменённые в режиме 1С:Предприятие) Регистр сведений "Настройки пользователей" Через запрос:
Выбрать * Из РегистрСведений.НастройкиПользователей
Системные параметры (размеры, позиции окон) Файл 1CV8.usr (для файловой базы) или таблица Params (для SQL) Через ПараметрыСеанса или прямым чтением файла

Для работы с настройками обычных форм часто используется регистр сведений "Настройки пользователей". Например, чтобы сохранить положение окна:

Регистр = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи();

Регистр.Пользователь = ТекущийПользователь();

Регистр.ИмяНастройки = "ПозицияОкна_ВашаФорма";

Регистр.Значение = Новый Структура("X,Y,Width,Height", 100, 100, 800, 600);

Регистр.Записать();

Все реквизиты и команды должны быть заданы заранее в конфигураторе.

⚠️ Внимание: В конфигурациях на основе БСП (Библиотека Стандартных Подсистем) может использоваться собственный механизм хранения настроек форм через подсистему "Настройки и администрирование". Проверьте, не переопределён ли стандартный функционал в вашей конфигурации.

4. Особенности хранения в файловом и SQL-вариантах

Механизм хранения настроек форм зависит от типа информационной базы:

В файловом варианте все пользовательские настройки (как для управляемых, так и для обычных форм) хранятся в файлах с расширением .usr. Эти файлы располагаются в каталоге базы и имеют имена вида:

  • 📄 1CV8.usr — общие настройки сеанса.
  • 📄 UserSettingsStorage.usd — настройки управляемых форм (для 8.3).
  • 📄 НазваниеБазы.usr — индивидуальные настройки пользователей.

В клиент-серверном варианте (SQL) картина иная:

  • 🗃️ Настройки управляемых форм хранятся в таблице UserSettingsStorage (в схеме dbo).
  • 🗃️ Настройки обычных форм — в таблице Params или в регистре сведений "Настройки пользователей" (если он используется).
  • 🗃️ Системные параметры сеанса — в таблице v8users (привязка к пользователям).

Для анализа SQL-хранилища можно использовать следующий запрос (пример для Microsoft SQL Server):

SELECT TOP 100 *

FROM UserSettingsStorage

WHERE UserName = 'ВашПользователь'

ORDER BY LastWrite DESC;

Если вы работаете с PostgreSQL, учтите, что структура таблиц может отличаться. Например, в PostgreSQL-варианте таблица UserSettingsStorage может называться "user_settings_storage" (с учётом регистра!).

Как восстановить настройки форм после сбоя SQL-сервера?

Если база данных была повреждена, но у вас есть резервная копия файлов .usr (для файлового варианта) или дамп SQL-таблиц, вы можете восстановить настройки вручную. Для этого:

1. Остановите службу 1С.

2. Восстановите таблицы UserSettingsStorage и Params из бэкапа.

3. Перезапустите службу.

В случае файлового варианта просто скопируйте сохранённые .usr-файлы в каталог базы.

5. Программное управление настройками форм

Для автоматизации работы с настройками форм в предусмотрены специализированные методы. Рассмотрим основные сценарии:

5.1. Чтение и запись настроек управляемых форм

Используйте объект ПользовательскиеНастройки:

// Получение настроек

Настройки = ПользовательскиеНастройки.ПолучитьНастройки(

Форма.Ид(),

Пользователь,

Компьютер

);

// Изменение и сохранение

Если Настройки = Неопределено Тогда

Настройки = ПользовательскиеНастройки.СоздатьНастройки(Форма.Ид());

КонецЕсли;

Настройки.Вставить("ШиринаКолонки_Товар", 200);

ПользовательскиеНастройки.СохранитьНастройки(

Настройки,

Пользователь,

Компьютер

);

5.2. Работа с настройками обычных форм через регистр сведений

Пример записи параметров:

Запись = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи();

Запись.Пользователь = Пользователи.ТекущийПользователь();

Запись.ИмяНастройки = "ВашаФорма_ПозицияОкна";

Запись.Значение = Новый Структура("X,Y", 50, 50);

Запись.Записать();

5.3. Сброс настроек к значениям по умолчанию

Чтобы сбросить настройки формы для текущего пользователя:

ПользовательскиеНастройки.ОчиститьНастройки(

Форма.Ид(),

Пользователь,

Компьютер

);

Для массового сброса (например, при обновлении конфигурации) можно использовать обработку, которая очищает UserSettingsStorage для всех пользователей. Однако будьте осторожны — это приведёт к потере всех кастомизаций интерфейса!

Убедитесь, что у вас есть резервная копия базы|Проверьте права доступа (требуются права администратора)|Протестируйте изменения на копии базы|Согласуйте изменения с пользователями|Задокументируйте внесённые правки-->

6. Перенос настроек форм между базами

Одна из самых частых задач — перенос пользовательских настроек форм из одной базы в другую. Это актуально при:

  • 🔄 Миграции на новую версию конфигурации.
  • 🖥️ Переносе данных на другой сервер.
  • 👥 Объединении нескольких баз в одну.

Для переноса можно использовать следующие методы:

6.1. Экспорт/импорт через UserSettingsStorage

Скопируйте данные из таблицы UserSettingsStorage старой базы в новую. Для этого:

  1. Сделайте дамп таблицы в SQL-формате.
  2. Импортируйте дамп в целевую базу.
  3. Обновите ссылки на пользователей (если имена пользователей отличаются).

6.2. Использование обработки "Выгрузка/загрузка данных"

В стандартной поставке есть обработка "ВыгрузкаЗагрузкаДанныхXML.epf", которая позволяет выгружать настройки форм в XML-файл. Алгоритм:

  1. Выгрузите настройки из исходной базы в файл.
  2. Загрузите файл в целевую базу.

6.3. Ручной перенос файлов .usr (для файлового варианта)

Просто скопируйте файлы из каталога исходной базы в каталог новой базы. Убедитесь, что:

  • Версии платформы совпадают.
  • Имена пользователей и компьютеров идентичны.

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

// Получаем все настройки из исходной базы

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Пользователь КАК Пользователь,

| ИмяНастройки КАК ИмяНастройки,

| Значение КАК Значение

|ИЗ

| РегистрСведений.НастройкиПользователей";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

// Сохраняем в целевую базу

Пока Выборка.Следующий() Цикл

Запись = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи();

Запись.Пользователь = Выборка.Пользователь;

Запись.ИмяНастройки = Выборка.ИмяНастройки;

Запись.Значение = Выборка.Значение;

Запись.Записать();

КонецЦикла;

⚠️ Внимание: При переносе настроек между базами с разными версиями конфигурации (например, УТ 10.3 → УТ 11) может потребоваться адаптация идентификаторов форм. Используйте метод Метаданные.Формы.НайтиПоИмени(), чтобы корректно сопоставить формы.

7. Поиск и устранение проблем с настройками форм

Если формы отображаются некорректно или настройки "слетают", причины могут быть следующими:

Симптом Возможная причина Решение
Форма открывается с настройками по умолчанию, хотя пользователь их менял Повреждение UserSettingsStorage или отсутствие прав на запись Проверьте права пользователя в SQL или восстановите файл .usr
Настройки сбрасываются после обновления конфигурации Изменился Ид() формы в новой версии Перенесите настройки вручную, сопоставив формы по именам
Медленное открытие форм с большим количеством настроек Раздутый UserSettingsStorage (тысячи записей) Очистите устаревшие настройки через SQL-запрос
Настройки не сохраняются в веб-клиенте Ошибки синхронизации с сервером или куки браузера Очистите кэш браузера или проверьте настройки IIS/Apache

Для диагностики проблем полезно использовать:

  • 🔍 Журнал регистрации 1С — ищите ошибки при сохранении настроек.
  • 📊 SQL Profiler — отслеживайте запросы к UserSettingsStorage.
  • 🖥️ Тестовый полигон — воспроизведите проблему на копии базы.

Если настройки форм "слетают" после обновления платформы, проверьте совместимость версий. Например, при переходе с 8.3.18 на 8.3.20 структура UserSettingsStorage могла измениться. В этом случае поможет:

  1. Создание резервной копии текущих настроек.
  2. Обновление платформы.
  3. Ручной перенос настроек через скрипт (см. раздел 6).
💡

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

8. Оптимизация работы с настройками форм

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

Советы по оптимизации:

  • 🧹 Регулярная очистка — удаляйте настройки для несуществующих форм или уволенных пользователей.
  • 📦 Архивирование — выгружайте редко используемые настройки в отдельный файл.
  • 🔄 Кэширование — для часто используемых форм кэшируйте настройки в памяти.
  • 🛠️ Индексирование — в SQL-варианте убедитесь, что на таблице UserSettingsStorage есть индексы по UserName и SettingID.

Пример SQL-запроса для очистки устаревших настроек:

DELETE FROM UserSettingsStorage

WHERE LastWrite < DATEADD(month, -6, GETDATE())

AND UserName NOT IN (

SELECT Name FROM v8users WHERE Active = 1

);

Для крупных баз (1000+ пользователей) рассмотрите возможность разделения хранилища настроек по подсистемам. Например, настройки форм ЗУП и Бухгалтерии можно хранить в отдельных таблицах. Это потребует доработки конфигурации, но значительно ускорит работу.

Если вы разрабатываете расширение для 1С, избегайте частого сохранения настроек в UserSettingsStorage. Вместо этого:

  • Используйте ПараметрыСеанса для временных данных.
  • Храните часто изменяемые параметры в РегистреСведений с периодической выгрузкой.
💡

Для ускорения загрузки форм с большим количеством настроек (например, отчёты с десятками параметров) используйте метод ОтложеннаяЗагрузка. Это позволит форме открыться быстрее, а настройки подгрузятся в фоновом режиме.

FAQ: Частые вопросы о хранении настроек форм в 1С

Можно ли перенести настройки форм между разными конфигурациями (например, из УТ 10.3 в УТ 11)?

Да, но с оговорками. Основная проблема — разные идентификаторы форм (Ид()) в новых версиях конфигураций. Чтобы перенести настройки:

  1. Выгрузите настройки из старой базы в XML или SQL-дамп.
  2. Сопоставьте Ид() форм по их Имени (например, "Документ.ЗаказКлиента.ФормаОбъекта").
  3. Импортируйте настройки в новую базу, подменив идентификаторы.

Для автоматизации можно написать обработку, которая будет динамически находить соответствия между формами.

Почему после обновления платформы 1С пропали настройки форм?

Это типичная проблема при переходе на новую версию платформы (например, с 8.3.16 на 8.3.20). Причины:

  • Изменилась структура UserSettingsStorage.
  • Обновились алгоритмы шифрования или сжатия данных.
  • Сбросились права доступа к таблицам в SQL.

Решение:

  1. Восстановите настройки из резервной копии.
  2. Используйте штатный механизм миграции данных (если предусмотрен в новой версии).
  3. Обратитесь в поддержку 1С за патчем совместимости.
Как найти, какая именно настройка формы вызывает ошибку?

Для диагностики:

  1. Включите режим отладки в конфигураторе (Сервис → Параметры → Отладка).
  2. Откройте проблемную форму и посмотрите журнал регистрации (Администрирование → Журнал регистрации).
  3. Ищите ошибки с упоминанием UserSettingsStorage или НастройкиПользователей.
  4. Для SQL-варианта используйте SQL Profiler, чтобы отследить, какие настройки считываются при открытии формы.

Если ошибка возникает только у одного пользователя, сравните его настройки с рабочими (через ПользовательскиеНастройки.ПолучитьНастройки()).

Можно ли отключить сохранение настроек форм для всех пользователей?

Да, но это требует изменений в конфигурации. Варианты:

  • Для управляемых форм переопределите метод ПриЗакрытии() и удалите вызов сохранения настроек.
  • Для обычных форм отключите запись в регистр "Настройки пользователей".
  • Глобально отключите сохранение через параметр запуска /DisableUserSettings (не рекомендуется для рабочих баз).

Пример кода для управляемой формы:

Процедура ПриЗакрытии(Отказ)

// Отменяем стандартное сохранение настроек

СохранятьНастройки = Ложь;

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

Учтите, что это приведёт к потере всех пользовательских кастомизаций интерфейса!

Где хранятся настройки отчётов и обработок (например, пользовательские варианты)?

Настройки отчётов и обработок хранятся отдельно от форм:

  • 📊 Пользовательские варианты отчётов — в регистре сведений "ВариантыОтчетов".
  • ⚙️ Настройки обработок — в UserSettingsStorage (аналогично управляемым формам) или в регистре "НастройкиПользователей".
  • 📄 Параметры вывода (например, сортировка в отчёте) — могут храниться в Temp-таблицах сеанса.

Чтобы перенести варианты отчётов между базами, используйте стандартную обработку "ВыгрузкаЗагрузкаДанныхXML.epf" с галочкой "Варианты отчётов".