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