Посмотреть сохранённый профиль своего пользователя без перезаписи параметров

Учебные задачи

Читается известный ключ платформенных параметров из системного хранилища. Отсутствие записи не заменяется новым профилем и не считается ошибкой индекса.

Где и как запускать

Полный серверный общий модуль собственной учебной конфигурации. Не модуль запуска рабочей базы.

Подготовка

  1. Создайте серверный общий модуль УчебныеНастройкиКлиента в отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса. Флаг Сервер включён. Вставьте весь код одного выбранного урока.

  2. Из серверной команды собственной обработки вызовите УчебныеНастройкиКлиента.ВыполнитьПример(). Используйте платформу 8.5.1.1343: новые свойства 8.5 отсутствуют на старых релизах.

  3. Для первого опыта вручную сохраните настройки клиентского приложения через его стандартное окно параметров и заново войдите своим учебным пользователем. Отсутствие сохранённой настройки тоже обрабатывается.

  4. Во всех опытах имя другого пользователя не передаётся. Первый урок только читает системный ключ текущего пользователя; следующие не перезаписывают этот системный ключ.

  5. Последний урок сохраняет один собственный профиль под учебным ключом в ХранилищеОбщихНастроек. Нужна роль с правом СохранениеДанныхПользователя; не включайте привилегированный режим ради опыта.

  6. Проверка объекта и его сериализации не доказывает видимое применение темы, масштаба или расположения панелей. Эксперименты с внешним видом выполняйте только в собственной учебной базе.

Процедура ВыполнитьПример() Экспорт
    Профиль = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения", "");
    Если Профиль = Неопределено Тогда
        Сообщить("У текущего учебного пользователя ещё нет сохранённого профиля; стандартные параметры не изменены");
        Возврат;
    КонецЕсли;
    Снимок = СнимокСвоегоПрофиля(Профиль);
    Сообщить(Снимок.Количество() = 10);
    Для Каждого Настройка Из Снимок Цикл
        Сообщить(Настройка.Ключ + ": " + Строка(Настройка.Значение));
    КонецЦикла;
    Сообщить("Это сохранённые параметры, а не измерение фактической раскладки открытого окна");
КонецПроцедуры

Функция СнимокСвоегоПрофиля(Профиль)
    Если ТипЗнч(Профиль) <> Тип("НастройкиКлиентскогоПриложения") Тогда
        ВызватьИсключение "Ожидался объект настроек клиентского приложения";
    КонецЕсли;
    Снимок = Новый Структура;
    Снимок.Вставить("ВариантИнтерфейсаКлиентскогоПриложения", Профиль.ВариантИнтерфейсаКлиентскогоПриложения);
    Снимок.Вставить("ВариантМасштабаКлиентскогоПриложения", Профиль.ВариантМасштабаКлиентскогоПриложения);
    Снимок.Вставить("ВариантМасштабаФормКлиентскогоПриложения", Профиль.ВариантМасштабаФормКлиентскогоПриложения);
    Снимок.Вставить("ВариантОткрытияОконКлиентскогоПриложения", Профиль.ВариантОткрытияОконКлиентскогоПриложения);
    Снимок.Вставить("ВариантОтображенияОсновногоОкнаКлиентскогоПриложения", Профиль.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения);
    Снимок.Вставить("ОтображатьПанелиНавигацииИДействий", Профиль.ОтображатьПанелиНавигацииИДействий);
    Снимок.Вставить("ОтображатьПанельРазделов", Профиль.ОтображатьПанельРазделов);
    Снимок.Вставить("РежимОткрытияФормПриложения", Профиль.РежимОткрытияФормПриложения);
    Снимок.Вставить("СкоростьКлиентскогоСоединения", Профиль.СкоростьКлиентскогоСоединения);
    Снимок.Вставить("ТемаКлиентскогоПриложения", Профиль.ТемаКлиентскогоПриложения);
    Возврат Снимок;
КонецФункции

Разбор по шагам

  1. Загрузить только пустой ключ настройки объекта Общее/НастройкиКлиентскогоПриложения для текущего пользователя.

  2. Если записи нет, вывести объяснение и закончить, не сохранять значения по умолчанию вместо отсутствующей записи.

  3. При существующей записи проверить реальный тип и собрать десять параметров в обычную структуру.

  4. Вывести имена и фактические значения; ВариантМасштабаКлиентскогоПриложения только читается.

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

Как проверить результат

  1. При наличии записи первая проверка Истина, затем десять строк с именами параметров.

  2. При отсутствии записи — понятное сообщение; ни новый профиль, ни сохранение в системном хранилище не выполняются.

Ожидаемый результат

Получен реальный снимок сохранённых параметров своего пользователя без изменения профиля.

На что обратить внимание

  1. Системный ключ подтверждён чтением кода КА2 Progress: CommonModules/ПользователиСлужебный/Ext/Module.bsl, процедура УстановитьНачальныеНастройки. БСП не вызывается, зависимости от этого общего модуля нет.

  2. Не подставляйте имя чужого пользователя: это другая задача и потребует дополнительных прав.

  3. Создание нового НастройкиКлиентскогоПриложения не заменяет загрузку существующей сохранённой записи.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.