Разработка и Конфигурация · 12 мин
Сохраняемые данные формы в 1С: что это и как с ними работать
Что такое сохраняемые данные формы в 1С, где они хранятся, как включить автосохранение настроек и что делать, если настройки формы сбрасываются.
Открывая одну и ту же форму в 1С, пользователь замечает: колонки таблицы стоят так, как он их расставил, выбранное поле контрагента подставлено автоматически, а размер окна сохранился с прошлого сеанса. За такое «памятливое» поведение отвечает механизм сохраняемых данных формы — платформа 1С:Предприятие умеет запоминать состояние формы между сеансами работы.
Путаница возникает из-за того, что термин употребляется в двух смыслах. Первый — пользовательские настройки формы (положение колонок, сортировка, отборы), которые платформа хранит автоматически. Второй — программный механизм для разработчиков: реквизиты формы и свойства «Сохраняемые данные», позволяющие явно указать, какие значения нужно запоминать между сеансами. В обоих случаях речь идёт о данных, которые не записываются в информационную базу как документы или справочники, а хранятся отдельно — в системном хранилище настроек.
Понимание этого механизма важно и пользователю, которому «слетели» привычные настройки, и разработчику, который проектирует собственную форму. Ниже разобрано, где физически хранятся эти данные, как включить и отключить сохранение, почему настройки иногда теряются и как безопасно их очистить.
Что именно относится к сохраняемым данным формы
К сохраняемым данным формы относятся два разных класса информации. Первый — автоматические пользовательские настройки: ширина и порядок колонок табличных частей и динамических списков, видимость колонок, сортировка, отборы, размер и положение окна формы, развёрнутость групп. Их платформа сохраняет сама, без участия разработчика, если для формы включён соответствующий режим.
Второй класс — значения, которые разработчик явно пометил как сохраняемые. В управляемых формах это реквизиты формы с включённым свойством «Сохраняемые данные», а также параметры, переданные при открытии. Типичный пример — форма обработки, где пользователь выбирает период, организацию и склад: при следующем открытии эти поля уже заполнены прошлыми значениями.
Важно отличать сохраняемые данные формы от данных объекта. Если вы заполнили документ и нажали «Записать», данные ушли в базу — это не настройки формы. Сохраняемые данные формы живут «рядом» с базой: их удаление не затрагивает документы, справочники и регистры.
Где физически хранятся эти данные
Платформа 1С хранит настройки форм в системном хранилище настроек. В файловом варианте базы это служебные таблицы внутри файла 1Cv8.1CD, в клиент-серверном — таблицы на стороне СУБД. Доступ к хранилищу из кода выполняется через объект ХранилищеСистемныхНастроек. Ключ записи формируется из полного имени формы и имени пользователя, поэтому у каждого пользователя свой комплект настроек.
Из-за привязки к пользователю возникает типичная ситуация: один сотрудник видит форму «удобно настроенной», а второй — в виде по умолчанию. Это норма, а не ошибка. Перенос настроек между пользователями возможен, но только специальными средствами — через программное копирование настроек в хранилище или через типовые механизмы обмена настройками, если они предусмотрены конфигурацией.
Как пользователю управлять настройками формы
В типовых конфигурациях на управляемых формах пользовательские настройки доступны через меню «Ещё» — пункт «Изменить форму» или «Настроить список». Там можно включить или отключить видимость колонок, изменить порядок, задать отбор. После нажатия «ОК» или «Завершить редактирование» платформа запоминает результат и восстанавливает его при следующем открытии.
Если форма «разъехалась» или ведёт себя непредсказуемо, быстрый способ вернуть её к исходному виду — сбросить настройки. В типовых конфигурациях для этого служит команда «Ещё» → «Установить стандартные настройки» (в некоторых конфигурациях — «Вернуться к стандартным настройкам»). Команда удаляет сохранённый вариант формы, и при следующем открытии она появится в виде, заданном разработчиком.
- 1Откройте форму, вид которой нужно вернуть к исходному.
- 2В меню «Ещё» найдите пункт «Установить стандартные настройки» или «Вернуться к стандартным настройкам».
- 3Подтвердите действие и закройте форму.
- 4Откройте форму заново и проверьте, что вид соответствует стандартному.
Для массовой очистки настроек (например, после обновления конфигурации, когда формы изменились) в типовых решениях есть раздел «Администрирование» → «Пользователи и настройки» или обработка очистки настроек. Там можно удалить настройки конкретного пользователя целиком либо точечно по объектам.
Как разработчику включить сохранение данных формы
В управляемой форме сохранение значений включается через свойства реквизитов. В конфигураторе откройте редактор формы, выделите нужный реквизит и в палитре свойств установите флаг «Сохранять» (свойство «Сохраняемые данные»). С этого момента платформа при закрытии формы запишет значение реквизита в системное хранилище, а при создании формы на сервере — восстановит его.
Для программной работы с настройками используются методы хранилища: ХранилищеСистемныхНастроек.Сохранить() и ХранилищеСистемныхНастроек.Загрузить() с указанием ключа объекта и ключа настроек. Это удобно, когда нужно хранить не отдельные реквизиты, а произвольную структуру — например, набор параметров сложной обработки.
// Сохранение произвольной структуры настроек
Настройки = Новый Структура("Организация, Склад", Организация, Склад);
ХранилищеСистемныхНастроек.Сохранить("Обработка.ЗагрузкаЦен.Форма", "ПараметрыЗапуска", Настройки);
// Загрузка при открытии формы
Сохраненные = ХранилищеСистемныхНастроек.Загрузить("Обработка.ЗагрузкаЦен.Форма", "ПараметрыЗапуска");
Если ТипЗнч(Сохраненные) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Сохраненные);
КонецЕсли;Дополнительно в свойствах самой формы есть флаг «Автоматическое сохранение данных в настройках» и список «Сохраняемые в настройках данные». Если автоматическое сохранение включено, платформа сохраняет перечисленные реквизиты без единой строки кода. Для обычных форм (в старых конфигурациях) механизм аналогичен: у реквизитов формы есть свойство «Сохранять», а у формы — события «ПриОткрытии» и «ПриЗакрытии» для ручной обработки.
Способы сохранения данных формы
Подходит для простых значений: период, организация, флажки. Работает без кода, но не подходит для сложных структур.
Подходит для структур, таблиц значений и нестандартной логики. Требует кода и аккуратной обработки отсутствующих настроек.
Автоматическое сохранение колонок, отборов и сортировок. Не требует действий разработчика, но не сохраняет значения полей ввода.
Почему настройки формы сбрасываются или не сохраняются
Самая частая причина «потери» настроек — обновление конфигурации, в котором форма была переименована или существенно переработана. Ключ настройки привязан к полному имени формы, поэтому новая форма получает «чистый лист». Вторая причина — очистка хранилища настроек администратором или регламентной обработкой.
Если значения полей не сохраняются в форме собственной разработки, проверьте три вещи: установлено ли свойство «Сохранять» у реквизита, не очищается ли значение в обработчике «ПриСозданииНаСервере» после того, как платформа его восстановила, и не отключено ли автоматическое сохранение в свойствах формы. Типичная ошибка — код инициализации формы принудительно присваивает реквизитам значения по умолчанию, затирая восстановленные данные.
Безопасность и ограничения механизма
Системное хранилище настроек не предназначено для больших объёмов данных. Сохранять в него таблицы на тысячи строк или двоичные данные — плохая практика: хранилище разрастается, открытие формы замедляется, а очистка настроек пользователя неожиданно удаляет нужные данные. Для объёмных данных используйте регистры сведений или константы.
Отдельное предупреждение про секреты. Пароли, токены и ключи API не следует помещать в сохраняемые данные формы: содержимое системного хранилища может читать любой код, выполняющийся с правами пользователя, а при выгрузке настроек секреты могут уйти наружу. В платформе для таких случаев предусмотрено безопасное хранилище (ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище в БСП) или владение паролем на уровне объекта метаданных.
Производительность тоже имеет значение. Если форма при открытии загружает из хранилища тяжёлую структуру, пользователь видит задержку. Признак проблемы — форма открывается заметно дольше, чем аналогичные. В таком случае перенесите объёмные данные в регистр сведений, а в настройках оставьте только ключ записи.
Как проверить, что сохранение работает правильно
Простой тест: заполните поля формы нестандартными значениями, закройте форму, затем откройте её снова. Значения должны восстановиться. Затем завершите сеанс полностью и войдите заново — настройки обязаны сохраниться и между сеансами, а не только в рамках одного.
Проверьте поведение под другим пользователем: он должен увидеть форму со значениями по умолчанию, а не с чужими настройками. Если видит чужие — значит, данные сохраняются не в пользовательские настройки, а в общие данные базы, и это повод пересмотреть решение.
Как проверить результат
Поля заполнены прошлыми значениями
Поля пустые или со значениями по умолчанию
У каждого пользователя свои настройки
Все видят настройки последнего пользователя
Открытие без заметной задержки
Форма «подвисает» при загрузке настроек
FAQ: частые вопросы о сохраняемых данных формы
Удаляются ли документы, если очистить настройки форм?
Нет. Системное хранилище настроек содержит только пользовательские настройки и сохраняемые значения реквизитов форм. Документы, справочники и регистры хранятся в информационной базе отдельно и при очистке настроек не затрагиваются.
Можно ли перенести настройки формы другому пользователю?
Да, но не штатной кнопкой в интерфейсе. Программно это делается чтением настроек из хранилища под одним пользователем и записью с указанием имени другого пользователя. В некоторых типовых конфигурациях есть сервис копирования настроек между пользователями в разделе администрирования.
Почему после обновления конфигурации сбросились настройки формы?
Ключ настройки привязан к полному имени формы. Если при обновлении форму переименовали или заменили на новую, старые настройки остались в хранилище под прежним ключом и больше не подхватываются. Это ожидаемое поведение, а не сбой.
Можно ли сохранять в настройках формы пароль?
Технически можно, но делать этого не стоит: содержимое системного хранилища доступно коду, выполняющемуся от имени пользователя, и может попасть в выгрузки настроек. Для паролей и токенов используйте безопасное хранилище, предусмотренное в типовых библиотеках.
Чем сохраняемые данные формы отличаются от вариантов отчёта?
Вариант отчёта — это именованный набор настроек СКД, который можно выбрать из списка и передать коллеге. Сохраняемые данные формы — анонимное «последнее состояние» конкретной формы конкретного пользователя, без имени и без возможности штатно поделиться.
Как отключить автосохранение настроек для конкретной формы?
В конфигураторе откройте свойства формы и снимите флаг автоматического сохранения данных в настройках, а у реквизитов уберите свойство «Сохранять». Пользовательские настройки внешнего вида (колонки, отборы) отключаются через свойство формы «Хранить настройки» или программно через параметры формы.
Что важно запомнить
Сохраняемые данные формы — это настройки внешнего вида и значения реквизитов, которые платформа 1С запоминает между сеансами в системном хранилище настроек, персонально для каждого пользователя. Разработчик управляет механизмом через свойство «Сохранять» у реквизитов или программно через ХранилищеСистемныхНастроек. Настройки сбрасываются командой «Установить стандартные настройки», а массовую очистку выполняйте только после резервной копии.