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