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

Методы · GetObjectByID

Получает объект, соответствующий переданному идентификатору.

Синтаксис

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

ОформлениеКомпоновкиДанных.ПолучитьОбъектПоИдентификатору (DataCompositionAppearance.GetObjectByID)

ОформлениеКомпоновкиДанных (DataCompositionAppearance)

ПолучитьОбъектПоИдентификатору (GetObjectByID)

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

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

<Идентификатор> (необязательный)
Тип: ИдентификаторКомпоновкиДанных.
Идентификатор объекта.
Возвращаемое значение:
Тип: ЗначениеПараметраКомпоновкиДанных, Неопределено.
Неопределено - объект, для которого был передан идентификатор, не найден или если он не является частью данного объекта.
Описание:

Получает объект, соответствующий переданному идентификатору.

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

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

Использование в версии:

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

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

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

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

ЦветФона — параметр оформления. Находим объект значения, проверяем его идентификатор и обратное получение. Значение из другого правила принадлежит другому контейнеру.

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

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

Подготовка

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

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

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

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

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

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

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

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

  3. Второе правило создаётся тем же кодом в той же настройке, но имеет своё Оформление и другой жёлтый фон.

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

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

  1. Шесть сравнений Истина; первый контейнер имеет одно значение и не принимает объект значения второго.

  2. Оба правила существуют в памяти; фактического вывода фона в интерфейс ещё нет.

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

Проверена собственность значения параметра оформления и его адресация.

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

  1. Идентификатор оформления не является UUID товара или индексом цвета.

  2. Наличие параметра ЦветФона не означает, что тема приложения или рабочий отчёт изменены.

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

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

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

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

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