Получает объект, с помощью которого осуществляется доступ к содержимому стандартного хранилища общих настроек, независимо от того, заполнено ли свойство конфигурации ХранилищеОбщихНастроек.
Синтаксис
ПолучитьСтандартноеХранилищеОбщихНастроек()Полное описание, параметры и ограничения
Глобальный контекст.ПолучитьСтандартноеХранилищеОбщихНастроек (Global context.GetStandardCommonSettingsStorage)
Глобальный контекст (Global context)
ПолучитьСтандартноеХранилищеОбщихНастроек (GetStandardCommonSettingsStorage)
Доступен, начиная с версии 8.3.26.
Синтаксис:
ПолучитьСтандартноеХранилищеОбщихНастроек()
Возвращаемое значение:
Тип: СтандартноеХранилищеНастроекМенеджер.
Описание:
Получает объект, с помощью которого осуществляется доступ к содержимому стандартного хранилища общих настроек, независимо от того, заполнено ли свойство конфигурации ХранилищеОбщихНастроек.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.26.
Методическая информация
Практические примеры
Получить шесть стандартных хранилищ и не перепутать их назначение
Сервер возвращает небольшой каталог типов штатных менеджеров без чтения или удаления пользовательских настроек.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Собственная пустая конфигурация УчебнаяКонфигурацияСинтаксиса 8.5.1.1343. Создайте отдельную внешнюю обработку с управляемой формой, командой Выполнить и её кнопкой.
Весь клиентский и серверный код одного урока вставьте в модуль формы. Для диагностики завершения соединения используйте только свой изолированный клиент-серверный стенд.
Ничего не устанавливается и не меняется: только чтение текущих параметров/получение штатных менеджеров. Пароли, данные настроек пользователей и имена клиентов не выводятся.
Наличие глобальной функции в справке не отменяет её ограничений клиент/сервер. Серверный код вызывается отдельно с НаСервереБезКонтекста.
&НаКлиенте
Процедура Выполнить(Команда)
Сообщить(ПрочитатьУчебнуюДиагностику());
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПрочитатьУчебнуюДиагностику()
Отчет = Новый Массив;
Хранилища = Новый Соответствие;
Хранилища.Вставить("Варианты отчётов", ПолучитьСтандартноеХранилищеВариантовОтчетов());
Хранилища.Вставить("Внешние данные навигационных ссылок", ПолучитьСтандартноеХранилищеВнешнихДанныхНавигационныхСсылок());
Хранилища.Вставить("Данные форм", ПолучитьСтандартноеХранилищеНастроекДанныхФорм());
Хранилища.Вставить("Общие настройки", ПолучитьСтандартноеХранилищеОбщихНастроек());
Хранилища.Вставить("Пользовательские настройки динамических списков", ПолучитьСтандартноеХранилищеПользовательскихНастроекДинамическихСписков());
Хранилища.Вставить("Пользовательские настройки отчётов", ПолучитьСтандартноеХранилищеПользовательскихНастроекОтчетов());
Для Каждого Пара Из Хранилища Цикл
Отчет.Добавить(СтрШаблон("%1: менеджер стандартного типа=%2", Пара.Ключ, ТипЗнч(Пара.Значение) = Тип("СтандартноеХранилищеНастроекМенеджер")));
КонецЦикла;
Отчет.Добавить("Содержимое хранилищ не читалось, не сохранялось и не удалялось");
Возврат СтрСоединить(Отчет, Символы.ПС);
КонецФункцииРазбор по шагам
Это шесть функций получения менеджеров, а не шесть вызовов открыть сохранённый отчёт.
Функции получают стандартные хранилища независимо от того, назначена ли в конфигурации своя реализация соответствующего хранилища.
Тип менеджера может быть один и тот же, но назначения различны. Не записывайте параметры списка в хранилище вариантов отчётов по совпадению типа.
Соответствие содержит только понятную учебную роль и полученный менеджер в памяти. Код не получает список чужих ключей и не извлекает значения настроек.
Вызов каждого getter показан непосредственно. Каталог типов нужен новичку для выбора правильного API перед отдельным осмысленным упражнением сохранения собственных настроек.
Как проверить результат
Шесть строк сообщают Истина для типа штатного менеджера; последняя поясняет отсутствие чтения/записи содержимого.
Пользовательские настройки отчётов, форм и динамических списков не сброшены.
Ожидаемый результат
Показано получение настоящих штатных менеджеров с разграничением шести задач хранения.
На что обратить внимание
Один тип результата не означает, что менеджеры взаимозаменяемы по бизнес-смыслу.
Не чистить стандартные настройки для проверки примера и не включать привилегированный режим, если getter недоступен.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Изменить подпись собственного варианта, не меняя его данные
ПолучитьОписание и УстановитьОписание работают с описанием; товар Книга и количество 3 остаются прежними.
Где и как запускать
Полный серверный общий модуль только собственной отдельной учебной базы; сохранение здесь реальное.
Подготовка
Только собственная отдельная учебная база 8.5.1.1343 с конфигурацией УчебнаяКонфигурацияСинтаксиса. Не запускайте уроки сохранения в КА2/УНФ/УТ/БП или их рабочем сеансе.
В своей учебной базе создайте пользователя с точным именем guide-owned-user и войдите под ним. В собственной учебной роли разрешите СохранениеДанныхПользователя. Не расширяйте права рабочего пользователя.
Создайте общий модуль УчебноеХранилищеНастроек с флагом Сервер. Каждый урок — отдельный полный модуль с ВыполнитьПример() Экспорт, вызванный из серверной учебной команды.
Уроки сохранения действительно пишут настройки в учебную базу. Новый ключ объекта содержит собственный UUID; перед записью проверяется отсутствие записи, после опыта удаляется только созданная запись.
Личный вариант использует стандартное хранилище общих настроек текущего учебного пользователя; вариант по умолчанию — только ХранилищеСистемныхНастроек.
При ошибке очистки сохраните сообщение с собственным ключом для точечной проверки в этой учебной базе. Не удаляйте все настройки и не подставляйте Неопределено в аргументы удаления.
Процедура ВыполнитьПример() Экспорт
ПользовательУрока = ИмяПользователя();
Если ПользовательУрока <> "guide-owned-user" Тогда
ВызватьИсключение "Войдите под собственным учебным пользователем guide-owned-user";
КонецЕсли;
КлючОбъекта = "guide-owned-settings-" + Строка(Новый УникальныйИдентификатор);
КлючНастроек = "guide-book-view";
Хранилище = ПолучитьСтандартноеХранилищеОбщихНастроек();
Отбор = Новый Структура("КлючОбъекта,КлючНастроек,Пользователь", КлючОбъекта, КлючНастроек, ПользовательУрока);
Проверка = Хранилище.Выбрать(Отбор);
Если Проверка.Следующий() Тогда
ВызватьИсключение "Новый ключ уже занят: никакая существующая настройка не заменяется";
КонецЕсли;
Описание = Новый ОписаниеНастроек;
Описание.КлючОбъекта = КлючОбъекта;
Описание.КлючНастроек = КлючНастроек;
Описание.Пользователь = ПользовательУрока;
Описание.Представление = "Учебный вид Книга, количество 3";
Описание.ДополнительныеСвойства.Вставить("Источник", "Собственная учебная обработка");
Настройки = Новый Структура("Товар,Количество,ПоказыватьСумму", "Книга", 3, Истина);
Создано = Ложь;
ОшибкаОперации = "";
ОшибкаОчистки = "";
Попытка
Хранилище.Сохранить(КлючОбъекта, КлючНастроек, Настройки, Описание, ПользовательУрока);
Создано = Истина;
ДоИзменения = Хранилище.ПолучитьОписание(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(ДоИзменения.Представление = "Учебный вид Книга, количество 3");
НовоеОписание = Новый ОписаниеНастроек;
НовоеОписание.Представление = "Учебная подпись обновлена, данные прежние";
Хранилище.УстановитьОписание(КлючОбъекта, КлючНастроек, НовоеОписание, ПользовательУрока);
ПослеИзменения = Хранилище.ПолучитьОписание(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(ПослеИзменения.Представление = "Учебная подпись обновлена, данные прежние");
Загружено = Хранилище.Загрузить(КлючОбъекта, КлючНастроек, , ПользовательУрока);
Сообщить(Загружено.Товар = "Книга");
Сообщить(Загружено.Количество = 3);
Исключение
ОшибкаОперации = ОписаниеОшибки();
КонецПопытки;
Если Создано Тогда
Попытка
Хранилище.Удалить(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(Хранилище.Загрузить(КлючОбъекта, КлючНастроек, , ПользовательУрока) = Неопределено);
Исключение
ОшибкаОчистки = ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Если НЕ ПустаяСтрока(ОшибкаОперации) ИЛИ НЕ ПустаяСтрока(ОшибкаОчистки) Тогда
ВызватьИсключение "Ошибка учебной настройки " + КлючОбъекта + "/" + КлючНастроек
+ ": " + ОшибкаОперации + " Очистка: " + ОшибкаОчистки
+ " При неопределённом результате записи проверьте только этот собственный ключ в учебной базе";
КонецЕсли;
Сообщить("Собственная настройка удалена. Другие ключи и пользователи не затронуты");
КонецПроцедурыРазбор по шагам
После собственного сохранения читаем описание точного варианта и проверяем первоначальную подпись.
Создаём отдельное новое описание, заполняем только Представление, которое использует стандартный менеджер.
УстановитьОписание получает те же объект/вариант/пользователя; данные настройки повторно не сохраняем.
Получаем описание заново и независимо загружаем данные: подпись новая, значения прежние.
Важно: УстановитьОписание может создать отсутствующий вариант; потому наш урок сначала создаёт и проверяет собственную запись.
Как проверить результат
Четыре проверки подписи/данных и контроль удаления — Истина.
Новая подпись Учебная подпись обновлена, данные прежние; товар Книга, количество 3.
Ожидаемый результат
Разделены изменение описания и запись самих настроек.
На что обратить внимание
Не используйте чужой ключ: УстановитьОписание может менять или создавать запись.
Изменить подпись не означает применить настройки к форме.
Переименование пользователя может изменить доступ к старым пользовательским настройкам; пример этим не занимается.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.