При работе с внешними обработками в режиме обычных форм многие разработчики сталкиваются с тем, что стандартные механизмы сохранения настроек, такие как СохраненныеНастройки или ХранилищеСистемныхНастроек, не показывают привычных данных внутри базы. Давайте разберемся, где именно платформа хранит эти значения и почему возникают сложности с их поиском.
В платформе 1С:Предприятие 8 для обычных форм реализован механизм, который по умолчанию сохраняет настройки интерфейса и значений реквизитов во внешние файлы конфигурации пользователя. Эти файлы имеют расширение .pfl и располагаются локально на компьютере пользователя в профиле операционной системы.
Поскольку эти файлы находятся вне информационной базы, они не видны при просмотре регистров сведений, даже если база является клиент-серверной. Очистка кэша, которую часто проводят в папке Local, также может не затрагивать данные файлы, так как они чаще располагаются в системном каталоге Roaming.
Важным аспектом является то, как именно 1С идентифицирует объект для сохранения настроек. Платформа использует внутреннее имя формы. Если вы копируете файл внешней обработки .epf или создаете новую обработку на основе существующей, настройки «переползают» с одной обработки на другую, если у них совпадают внутренние идентификаторы форм.
Как избавиться от привязки к старым настройкам:
Если вам необходимо, чтобы настройки перемещались вместе с пользователем между разными компьютерами, стандартный механизм обычных форм не подойдет. Для этих целей необходимо использовать ХранилищеОбщихНастроек. Рассмотрим, как это реализовать на практике.
Разберем по шагам процесс сохранения и восстановления настроек через программный код:
Шаг 1: Сохранение данных
В модуле формы, например, в процедуре ПриЗакрытии, мы можем принудительно сохранить значения нужных нам реквизитов:
// Создаем структуру для хранения параметров
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("ДатаНачала", ДатаНачала);
СтруктураНастроек.Вставить("Организация", Организация);
// Сохраняем в хранилище общих настроек
ХранилищеОбщихНастроек.Сохранить("МояВнешняяОбработка", "НастройкиФормы", СтруктураНастроек);
Шаг 2: Восстановление данных
В процедуре ПриОткрытии мы выполняем обратное действие — загружаем сохраненные параметры:
// Получаем настройки из базы данных
ЗагруженныеНастройки = ХранилищеОбщихНастроек.Загрузить("МояВнешняяОбработка", "НастройкиФормы");
// Если настройки существуют, заполняем реквизиты формы
Если ТипЗнч(ЗагруженныеНастройки) = Тип("Структура") Тогда
ДатаНачала = ЗагруженныеНастройки.ДатаНачала;
Организация = ЗагруженныеНастройки.Организация;
КонецЕсли;
При использовании ХранилищеОбщихНастроек мы получаем следующие преимущества:
.pfl и проблем с очисткой кэша на клиентских машинах.Использование этого подхода является стандартом при разработке качественных внешних обработок в УПП, так как он делает поведение системы предсказуемым для конечного пользователя.