Часто перед начинающими разработчиками 1С встает задача: как сделать так, чтобы значение переменной или введенные в форму данные не пропадали при закрытии внешней обработки? Давайте вместе разберем основные подходы к решению этой задачи, от простых к более надежным и профессиональным методам.
Этот способ отлично подходит для сохранения настроек пользователя, таких как пути к файлам, значения фильтров или сохраненные счетчики. Мы используем встроенный механизм платформы ХранилищеОбщихНастроек, который позволяет записывать данные в базу и привязывать их к конкретному пользователю или объекту.
Рассмотрим, как реализовать сохранение данных при закрытии формы:
&НаСервере
Процедура СохранитьНастройки()
КлючОбъекта = "МояВнешняяОбработка";
КлючНастроек = "ОсновныеНастройки";
ОписаниеНастроек = "Настройки моей обработки";
ИмяПользователя = ""; // Оставим пустым для текущего пользователя
Настройки = Новый Соответствие;
Настройки.Вставить("Счетчик", Объект.ЗначениеСчетчика);
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
СохранитьНастройки();
КонецПроцедуры
Этот метод удобен тем, что настройки сохраняются автоматически в базе данных. При повторном открытии обработки нам останется лишь считать их с помощью метода ХранилищеОбщихНастроек.Загрузить().
Если вам нужно хранить данные, которые должны быть доступны для анализа, или если значение счетчика должно быть общим для всей системы, лучше всего использовать регистр сведений. Это наиболее надежный способ, так как данные хранятся непосредственно в таблицах базы данных.
Пользователь (тип СправочникСсылка.Пользователи).ЗначениеСчетчика (тип Число).МенеджерЗаписи.Такой подход обеспечивает целостность данных: даже если обработка будет обновлена или удалена, данные в регистре останутся доступными.
Если нет возможности менять конфигурацию (добавлять регистры) и нужно быстрое локальное решение, можно использовать сериализацию данных в файл. В 1С для этого существуют методы ЗначениеВФайл и ЗначениеИзФайла.
Важно: Этот способ работает с файловой системой компьютера, на котором запущен клиент. Если пользователь пересядет за другой компьютер, сохраненные данные будут недоступны, так как файл остался на предыдущем рабочем месте.
Проанализируем ситуацию: какой метод выбрать стажеру?
ХранилищеОбщихНастроек. Это штатный механизм, не требующий создания объектов метаданных.ПараметрахСеанса, но учитывайте, что они очищаются при перезапуске системы.При работе с формой всегда используйте обработчики событий, такие как ПриЗакрытии или ПередЗакрытием на клиенте, чтобы гарантированно успеть сохранить текущее состояние обработки перед выходом пользователя из программы. Теперь вы знаете, как превратить обычную внешнюю обработку в полноценный инструмент, сохраняющий историю своей работы!