Как сохранить значения реквизитов во внешней обработке 1С (управляемые формы)?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки внешних обработок на платформе 1С:Предприятие 8.3 часто возникает задача сохранения данных, введенных пользователем. Это особенно актуально для таких полей, как пути к файлам, настройки отборов или логины для интеграций. Если не настроить механизм сохранения, пользователю придется вводить одни и те же данные при каждом запуске обработки. В этой статье мы подробно разберем, как сделать работу с вашей обработкой удобнее, реализовав сохранение настроек несколькими способами: от самого простого «без кода» до продвинутых методов хранения данных в базе или файлах.

Способ 1. Использование стандартного механизма автоматического сохранения

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

Рассмотрим пошагово, как включить этот механизм:

  1. Откроем форму внешней обработки в конфигураторе.
  2. Перейдем в Свойства формы (выделив корень в дереве элементов формы или нажав правую кнопку мыши на пустом месте формы).
  3. Найдем группу свойств «Настройки» и свойство АвтоматическоеСохранениеДанныхВНастройках. Установим для него значение Использовать.
  4. Теперь перейдем на закладку Реквизиты (в правой части редактора формы).
  5. В списке реквизитов формы выберем те, которые нам нужно сохранять (например, «ПутьКФайлу»).
  6. В свойствах выбранного реквизита найдем появившийся флажок Сохранение и установим его.

Проанализируем ситуацию: теперь при закрытии формы 1С автоматически запишет значения этих реквизитов в системное хранилище настроек, а при открытии — восстановит их. Однако важно помнить, что эти данные привязаны к конкретному пользователю и его кэшу.

Важные нюансы работы стандартного механизма

Выясним причину, по которой настройки иногда могут «пропадать». При использовании стандартного метода данные сохраняются в кэш пользователя на локальном компьютере. Если системный администратор или сам пользователь выполнит очистку кэша 1С (удалит папки из AppData), все сохраненные пути и настройки будут безвозвратно удалены.

Еще одна критическая особенность связана с идентификацией внешней обработки. Если вы запускаете обработку просто через Файл -> Открыть, система привязывает настройки к полному пути файла на диске. Если вы переименуете файл или переместите его в другую папку, 1С посчитает это совершенно новой обработкой, и старые настройки «не подцепятся».

Способ 2. Программное управление через Хранилище общих настроек

Если нам требуется более гибкое управление — например, сохранять данные только при нажатии определенной кнопки или под специфическим ключом — мы можем использовать программный метод. Для этого в платформе существует объект ХранилищеОбщихНастроек.

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

При создании формы на сервере (загрузка данных):


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Пытаемся загрузить настройки по уникальному ключу
    КлючНастроек = "НастройкиМоейУникальнойОбработки_ПутьКФайлу";
    СохраненныйПуть = ХранилищеОбщихНастроек.Загрузить(КлючНастроек, "");
    
    Если ЗначениеЗаполнено(СохраненныйПуть) Тогда
        Объект.ПутьКФайлу = СохраненныйПуть;
    КонецЕсли;
    
КонецПроцедуры

При закрытии или сохранении (запись данных):


&НаСервере
Процедура СохранитьНастройкиНаСервере()
    
    КлючНастроек = "НастройкиМоейУникальнойОбработки_ПутьКФайлу";
    ХранилищеОбщихНастроек.Сохранить(КлючНастроек, , Объект.ПутьКФайлу);
    
КонецПроцедуры

Этот метод позволяет избежать зависимости от имени файла обработки, так как вы сами задаете строковый КлючНастроек.

Способ 3. Сохранение настроек при использовании БСП

Если ваша конфигурация построена на Библиотеке стандартных подсистем (БСП), рекомендуется не просто открывать файл, а зарегистрировать его в справочнике Дополнительные отчеты и обработки.

Посмотрим на преимущества этого подхода:

Способ 4. Хранение данных в JSON или XML файлах

Если необходимо, чтобы настройки «путешествовали» вместе с файлом обработки (например, вы передаете обработку коллеге вместе с заранее настроенными параметрами), можно реализовать сохранение в текстовый файл формата JSON в ту же папку.

Рассмотрим пример того, как можно сериализовать данные в JSON:


&НаКлиенте
Процедура СохранитьВФайлJSON()
    
    ДанныеНастроек = Новый Структура;
    ДанныеНастроек.Вставить("ПутьКФайлу", Объект.ПутьКФайлу);
    ДанныеНастроек.Вставить("ДатаПоследнегоЗапуска", ТекущаяДата());
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто);
    ЗаписьJSON.ОткрытьФайл("C:\Settings\my_settings.json",,, ПараметрыЗаписиJSON);
    ЗаписатьJSON(ЗаписьJSON, ДанныеНастроек);
    ЗаписьJSON.Закрыть();
    
КонецПроцедуры

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

Способ 5. Использование регистра сведений (Промышленный подход)

В крупных корпоративных системах для максимальной надежности разработчики создают в основной конфигурации специальный Регистр сведений (например, «НастройкиПользователей»).

Проанализируем этот алгоритм:

Этот метод считается самым «чистым» с точки зрения архитектуры, так как все данные находятся под контролем СУБД и попадают в регулярные бэкапы.

Использование КлючаНазначенияИспользования

Иногда требуется сохранять не один набор настроек, а несколько (например, настройки для «Склада №1» и для «Склада №2»). В управляемой форме для этого существует свойство КлючНазначенияИспользования. Если вы программно измените это свойство, 1С создаст в хранилище отдельную ветку настроек для каждого уникального ключа. Это позволяет пользователю легко переключаться между разными профилями работы в рамках одной обработки.

Подведем итог: для быстрых решений используйте флажок Сохранение в свойствах реквизитов. Если же ваша обработка предназначена для долгой эксплуатации в серьезной системе — посмотрите в сторону Хранилища общих настроек или интеграции через БСП.

← На главную