ПользовательскиеНастройкиКомпоновкиДанных.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки

Методы · GetMainSettingsByUserSettingID

Получает массив объектов основных настроек по идентификатору пользовательской настройки. Эти объекты можно использовать для доступа к свойствам, значения которых не установлены у объектов пользовательских настроек, поскольку они недоступны для редактирования пользователю. Например, свойство ЛевоеЗначение объекта ЭлементОтбораКомпоновкиДанных.

Синтаксис

ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(<Идентификатор>)
Полное описание, параметры и ограничения

ПользовательскиеНастройкиКомпоновкиДанных.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки (DataCompositionUserSettings.GetMainSettingsByUserSettingID)

ПользовательскиеНастройкиКомпоновкиДанных (DataCompositionUserSettings)

ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки (GetMainSettingsByUserSettingID)

Доступен, начиная с версии 8.3.13.

Синтаксис:
ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(<Идентификатор>)
Параметры:

<Идентификатор> (обязательный)
Тип: Строка.
Идентификатор пользовательской настройки.
Возвращаемое значение:
Тип: Массив.
Возвращаемый массив может содержать элементы следующих типов:
ОтборКомпоновкиДанных,

ЭлементОтбораКомпоновкиДанных,

ГруппаЭлементовОтбораКомпоновкиДанных,

ПорядокКомпоновкиДанных,

ВыбранныеПоляКомпоновкиДанных,

УсловноеОформлениеКомпоновкиДанных,

ЭлементУсловногоОформленияКомпоновкиДанных,

ЗначениеПараметраНастроекКомпоновкиДанных,

ГруппировкаКомпоновкиДанных,

ГруппировкаТаблицыКомпоновкиДанных,

ГруппировкаДиаграммыКомпоновкиДанных,

ТаблицаКомпоновкиДанных,

ДиаграммаКомпоновкиДанных,

НастройкиВложенногоОбъектаКомпоновкиДанных,

КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных,
Если объекты не найдены, метод возвращает пустой массив.
Описание:

Получает массив объектов основных настроек по идентификатору пользовательской настройки. Эти объекты можно использовать для доступа к свойствам, значения которых не установлены у объектов пользовательских настроек, поскольку они недоступны для редактирования пользователю. Например, свойство ЛевоеЗначение объекта ЭлементОтбораКомпоновкиДанных.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Примечание:
Если идентификатор пользовательской настройки объекта имеет тип СтруктураНастроекКомпоновкиДанных из состава пользовательских настроек, то возвращаемый массив будет содержать элемент полной коллекции настроек типа КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных.
Использование в версии:

Доступен, начиная с версии 8.3.13.

Методическая информация

Практические примеры

Найти основной отбор по пользовательскому идентификатору

В основных настройках Количество > 1 разрешаем пользователю менять порог. После загрузки в редактор ищем пользовательскую копию и читаем поле из связанных основных объектов.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт и вызовите своей учебной командой.

  2. Схема СКД строится программно, макет в конфигурации не нужен. Источник Local выполняет запрос из двух собственных константных строк, без справочников, документов и регистров.

  3. Каждое упражнение запускайте отдельно. Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; общая сумма 800. Результат хранится в памяти, не записывается в файл или базу.

  4. Для исследования поставьте точку останова перед последними проверками. ТаблицаЗначений и процессоры СКД здесь создаются и используются на сервере; напрямую в тонкий клиент таблица не возвращается.

Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
|    ""Книга"" КАК Наименование,
|    3 КАК Количество,
|    250 КАК Цена,
|    750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
    Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
    Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Условие = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Количество");
Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Условие.ПравоеЗначение = 1;
Условие.Использование = Истина;
Условие.ИдентификаторПользовательскойНастройки = "УчебныйПорог";
Условие.ПредставлениеПользовательскойНастройки = "Минимальное количество";
Доступные = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
Редактор.Инициализировать(Доступные);
Редактор.ЗагрузитьНастройки(Настройки);
Пользовательские = Редактор.ПользовательскиеНастройки;
КопияПорога = Пользовательские.Элементы.Найти("УчебныйПорог");
Если КопияПорога = Неопределено Тогда
    ВызватьИсключение "В пользовательских настройках нет учебного порога";
КонецЕсли;
Сообщить(КопияПорога.ПравоеЗначение = 1);
Основные = Пользовательские.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки("УчебныйПорог");
Если Основные.Количество() = 0 Тогда
    ВызватьИсключение "Не получена связь с основным отбором";
КонецЕсли;
Для Каждого Основной Из Основные Цикл
    Сообщить(Основной.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Количество"));
КонецЦикла;
Сообщить(Пользовательские.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки("НетТакойНастройки").Количество() = 0);

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

  1. Сначала в основной схеме создаём полноценный отбор с левым полем, сравнением > и числом 1.

  2. Строковая метка и подпись назначаются до ЗагрузитьНастройки: загрузка заново формирует пользовательские настройки.

  3. Пользовательская копия даёт ПравоеЗначение. ЛевоеЗначение читаем у связанных основных объектов, не у пользовательского объекта, где оно недоступно.

  4. Метод возвращает массив, поэтому обходим все найденные объекты и отдельно проверяем отсутствие чужой метки.

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

  1. Порог пользовательской копии равен 1, связанные основные объекты указывают Количество, чужой идентификатор возвращает пустой массив.

  2. Не меняйте рабочий типовой вариант отчёта: весь редактор и схема создаются этим кодом.

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

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

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

  1. Метод может вернуть несколько основных объектов; нельзя без проверки всегда брать индекс 0.

  2. Имена/поля с таким идентификатором в произвольном типовом отчёте не обязаны совпадать с учебными.

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

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

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

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

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