Тип: ДоступныеПоляКомпоновкиДанных. Содержит доступные поля для редактирования оформляемых полей.
Полное описание, параметры и ограничения
ОформляемыеПоляКомпоновкиДанных.ДоступныеПоляОформляемыхПолей (DataCompositionAppearanceFields.AppearanceFieldsAvailableFields)
ОформляемыеПоляКомпоновкиДанных (DataCompositionAppearanceFields)
ДоступныеПоляОформляемыхПолей (AppearanceFieldsAvailableFields)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: ДоступныеПоляКомпоновкиДанных.
Содержит доступные поля для редактирования оформляемых полей.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Пользовательское условное оформление: включить и выключить подсветку суммы
Правило Сумма>100 оформляет только ячейку Сумма. Проверяем числовые строки настоящего табличного документа и его ЦветФона: Книга подсвечена, Ручка нет; пользовательское выключение/включение должно изменить реальный фон.
Где и как запускать
Полный серверный общий модуль нового собственного стенда УчебныеПользовательскиеРазделы85; каждый урок запускается отдельно.
Подготовка
Создать НОВУЮ отдельную пустую учебную базу, не рабочую и не ее копию: точно8.5.1.1343, конфигурация УчебныеПользовательскиеРазделы85, совместимость Не использовать. Без бизнес-объектов, регистров, подписок, заданий и расширений.
Конфигуратор → Общие → Общие модули → УчебныеПользовательскиеРазделы85: Сервер=Да, Вызов сервера=Да, Клиент=Нет, Глобальный=Нет, Привилегированный=Нет. Вставить ВЕСЬ код одного выбранного урока; одноименные ВыполнитьПример из разных уроков не смешивать.
Конфигуратор → Обработки → УчебныеПользовательскиеРазделы85 → Формы → Пульт: управляемая форма; команда Выполнить, кнопка с этой командой и действие команды Выполнить. Реквизиты не нужны; полный модуль формы дан отдельно ниже.
Сохранить и обновить свою учебную конфигурацию базы данных (F7). Открыть свежий собственный клиент и учебную обработку, выполнить команду. Здесь F7 и1С не запускались: это будущие ручные шаги.
Схема и данные целиком создаются кодом: Local-запрос Книга3×250=750 / Ручка1×50=50, четыре выбранных поля и одна группа деталей. Документы и регистры не нужны.
Редактор обязательно связывается с настоящим источником доступных настроек и загружает подготовленные основные настройки. Пользовательский объект действительно ищется по своему ID и проверяется по точному типу.
Проверки используют свежий настоящий вывод для каждого состояния. XML-снимки только в памяти сохраняют целиком схему и основные настройки; файлов, архивов и резервных копий нет.
runtimeVerifiedScenarios=0. Сверка установленной справки и статические проверки не равны запуску1С. Настоящий UI редактора, долговременное сохранение, сеть, печать и production здесь не выполнялись.
Функция ВыполнитьПример() Экспорт
ПроверитьСвойПустойСтенд();
Схема = Новый СхемаКомпоновкиДанных;
ЗаполнитьСвоиДанные(Схема);
ЗаполнитьСвоиНачальныеНастройки(Схема.НастройкиПоУмолчанию);
Основные = Схема.НастройкиПоУмолчанию.УсловноеОформление;
Основные.ИдентификаторПользовательскойНастройки = "ПодсветкаТоваров85";
Основные.ПредставлениеПользовательскойНастройки = "Подсветка крупных сумм";
Основные.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Правило = Основные.Элементы.Добавить();
Правило.Использование = Истина;
Правило.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто;
Правило.ИдентификаторПользовательскойНастройки = "";
Условие = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сумма");
Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Условие.ПравоеЗначение = 100;
Условие.Использование = Истина;
Оформляемое = Правило.Поля.Элементы.Добавить();
Оформляемое.Поле = Новый ПолеКомпоновкиДанных("Сумма");
Оформляемое.Использование = Истина;
Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(16, 180, 220));
ТекстСхемы = СвойОбъектРасшифровкиВСтроку(Схема);
Редактор = СоздатьСвойРедактор(Схема);
ТекущееОформление = Редактор.Настройки.УсловноеОформление;
Если ТекущееОформление.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено
Или ТекущееОформление.ДоступныеПоляПолей.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено Тогда
ВызватьИсключение "Своя сумма должна быть доступна и для условия, и для оформляемого поля";
КонецЕсли;
Если ТекущееОформление.Элементы.Количество() <> 1 Тогда
ВызватьИсключение "В своем основном оформлении только одно реальное правило";
КонецЕсли;
ТекущееПравило = ТекущееОформление.Элементы.Получить(0);
Если ТекущееПравило.Поля.ДоступныеПоляОформляемыхПолей.НайтиПоле(Новый ПолеКомпоновкиДанных("Сумма")) = Неопределено Тогда
ВызватьИсключение "Источник должен разрешить Сумма именно в собственном наборе оформляемых полей правила";
КонецЕсли;
Пользовательский = ПолучитьСвойПользовательскийРаздел(Редактор, "ПодсветкаТоваров85", Тип("УсловноеОформлениеКомпоновкиДанных"));
Если Пользовательский.Элементы.Количество() <> 1 Тогда
ВызватьИсключение "В своем пользовательском оформлении одно действительное правило";
КонецЕсли;
ПользовательскоеПравило = Пользовательский.Элементы.Получить(0);
Если ТипЗнч(ПользовательскоеПравило) <> Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
ВызватьИсключение "Пользователь должен получить настоящее собственное правило";
КонецЕсли;
ТекстОсновных = СвойОбъектРасшифровкиВСтроку(Редактор.Настройки);
ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Истина);
ПользовательскоеПравило.Использование = Ложь;
ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Ложь);
ПользовательскоеПравило.Использование = Истина;
ПроверитьСвоюПодсветку(Схема, Редактор.ПолучитьНастройки(), Истина);
Если СвойОбъектРасшифровкиВСтроку(Редактор.Настройки) <> ТекстОсновных
Или СвойОбъектРасшифровкиВСтроку(Схема) <> ТекстСхемы
Или ТекущееОформление.ПредставлениеПользовательскойНастройки <> "Подсветка крупных сумм"
Или ТекущееОформление.РежимОтображения <> РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный Тогда
ВызватьИсключение "Пользователь выключает только свое правило, сохраняя основные настройки и схему";
КонецЕсли;
Возврат ТекущееОформление.ПредставлениеПользовательскойНастройки + ": фон Книги16/180/220 → выключен → восстановлен; Ручка не подсвечена";
КонецФункции
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСвоиДанные(Схема)
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 250 КАК Цена,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
КонецПроцедуры
Процедура ЗаполнитьСвоиНачальныеНастройки(Настройки)
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
КонецПроцедуры
Функция СоздатьСвойРедактор(Схема)
Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
Редактор.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Редактор.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
Возврат Редактор;
КонецФункции
Функция ПолучитьСвойПользовательскийРаздел(Редактор, Идентификатор, ТребуемыйТип)
Раздел = Редактор.ПользовательскиеНастройки.Элементы.Найти(Идентификатор);
Если Раздел = Неопределено Тогда
ВызватьИсключение "Собственный раздел должен реально появиться в пользовательских настройках";
КонецЕсли;
Если ТипЗнч(Раздел) <> ТребуемыйТип Или Раздел.ИдентификаторПользовательскойНастройки <> Идентификатор Тогда
ВызватьИсключение "Найден не тот тип или ID собственного пользовательского раздела";
КонецЕсли;
Возврат Раздел;
КонецФункции
Функция СвойОбъектРасшифровкиВСтроку(Объект)
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(Запись, Объект);
Возврат Запись.Закрыть();
КонецФункции
Процедура ПроверитьСвоюПодсветку(Схема, Настройки, Включена)
Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = Компоновщик.Выполнить(Схема, Настройки);
Документ = ПолучитьСвойПроверенныйДокумент(Макет, "");
КолонкаСуммы = 0;
КолонкаТовара = 0;
Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
Для НомерКолонки = 1 По Документ.ШиринаТаблицы Цикл
Текст = СокрЛП(Документ.Область(НомерСтроки, НомерКолонки).Текст);
Если Текст = "Сумма" Тогда
КолонкаСуммы = НомерКолонки;
ИначеЕсли Текст = "Наименование" Тогда
КолонкаТовара = НомерКолонки;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если КолонкаСуммы = 0 Или КолонкаТовара = 0 Тогда
ВызватьИсключение "Нужны реальные колонки собственного проверенного отчета";
КонецЕсли;
Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
Товар = СокрЛП(Документ.Область(НомерСтроки, КолонкаТовара).Текст);
Если Товар = "Книга" Или Товар = "Ручка" Тогда
Фон = Документ.Область(НомерСтроки, КолонкаСуммы).ЦветФона;
ЕстьПодсветка = Фон.Красный = 16 И Фон.Зеленый = 180 И Фон.Синий = 220;
Если Товар = "Книга" И ЕстьПодсветка <> Включена Тогда
ВызватьИсключение "Реальная ячейка Сумма Книги должна следовать пользовательскому флагу правила";
ИначеЕсли Товар = "Ручка" И ЕстьПодсветка Тогда
ВызватьИсключение "Сумма50 не проходит условие больше100: Ручка не должна подсвечиваться";
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьСвойПроверенныйДокумент(Макет, Заголовок)
Копия = СвойОбъектРасшифровкиИзСтроки(СвойОбъектРасшифровкиВСтроку(Макет), Тип("МакетКомпоновкиДанных"));
Документ = СформироватьСвойДокумент(Копия);
Если Документ.ВысотаТаблицы = 0 Или Документ.ВысотаТаблицы > 200
Или Документ.ШиринаТаблицы = 0 Или Документ.ШиринаТаблицы > 100 Тогда
ВызватьИсключение "Ожидается только собственный небольшой табличный отчет";
КонецЕсли;
Колонки = Новый Соответствие;
СтрокаЗаголовков = 0;
ЗаголовокНайден = Заголовок = "";
Для НомерСтроки = 1 По Документ.ВысотаТаблицы Цикл
Кандидат = Новый Соответствие;
Для НомерКолонки = 1 По Документ.ШиринаТаблицы Цикл
Текст = СокрЛП(Документ.Область(НомерСтроки, НомерКолонки).Текст);
Если Заголовок <> "" И Текст = Заголовок Тогда
ЗаголовокНайден = Истина;
КонецЕсли;
Если Текст = "Наименование" Или Текст = "Количество" Или Текст = "Цена" Или Текст = "Сумма" Тогда
Если Кандидат.Получить(Текст) <> Неопределено Тогда
ВызватьИсключение "В собственной строке заголовков не должно быть дублей поля";
КонецЕсли;
Кандидат.Вставить(Текст, НомерКолонки);
КонецЕсли;
КонецЦикла;
Если Кандидат.Количество() = 4 Тогда
Если СтрокаЗаголовков <> 0 Тогда
ВызватьИсключение "В этом собственном опыте только одна четырехпольная таблица";
КонецЕсли;
СтрокаЗаголовков = НомерСтроки;
Колонки = Кандидат;
КонецЕсли;
КонецЦикла;
Если СтрокаЗаголовков = 0 Или Не ЗаголовокНайден Тогда
ВызватьИсключение "Не найдены настоящий заголовок и все четыре заголовка полей";
КонецЕсли;
Книга = Ложь;
Ручка = Ложь;
ИтогКоличество = 0;
ИтогСумма = 0;
Для НомерСтроки = СтрокаЗаголовков + 1 По Документ.ВысотаТаблицы Цикл
Наименование = СокрЛП(Документ.Область(НомерСтроки, Колонки.Получить("Наименование")).Текст);
Количество = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Количество")));
Цена = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Цена")));
Сумма = ПрочитатьСвоеЧисло(Документ.Область(НомерСтроки, Колонки.Получить("Сумма")));
Если Наименование <> "Книга" И Наименование <> "Ручка"
И (Количество <> Неопределено Или Цена <> Неопределено Или Сумма <> Неопределено) Тогда
ВызватьИсключение "В собственном отчете без итоговых строк не должно быть посторонних числовых строк";
КонецЕсли;
Если Наименование = "Книга" Или Наименование = "Ручка" Тогда
Если Количество = Неопределено Или Цена = Неопределено Или Сумма = Неопределено Тогда
ВызватьИсключение "В реальной строке товара должны находиться три настоящих числа";
КонецЕсли;
Если Наименование = "Книга" Тогда
Если Книга Или Количество <> 3 Или Цена <> 250 Или Сумма <> 750 Тогда
ВызватьИсключение "Книга должна выводиться ровно один раз: 3, 250, 750";
КонецЕсли;
Книга = Истина;
Иначе
Если Ручка Или Количество <> 1 Или Цена <> 50 Или Сумма <> 50 Тогда
ВызватьИсключение "Ручка должна выводиться ровно один раз: 1, 50, 50";
КонецЕсли;
Ручка = Истина;
КонецЕсли;
ИтогКоличество = ИтогКоличество + Количество;
ИтогСумма = ИтогСумма + Сумма;
КонецЕсли;
КонецЦикла;
Если Не Книга Или Не Ручка Или ИтогКоличество <> 4 Или ИтогСумма <> 800 Тогда
ВызватьИсключение "Настоящие строки должны сохранить количество4 и сумму800";
КонецЕсли;
Возврат Документ;
КонецФункции
Функция СформироватьСвойДокумент(СвойМакет)
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(СвойМакет);
Документ = Новый ТабличныйДокумент;
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.ОтображатьПроцентВывода = Ложь;
Вывод.УстановитьДокумент(Документ);
РезультатВывода = Вывод.Вывести(Процессор, Ложь);
Если ТипЗнч(РезультатВывода) <> Тип("ТабличныйДокумент") Тогда
ВызватьИсключение "Не получен собственный табличный документ";
КонецЕсли;
Возврат РезультатВывода;
КонецФункции
Функция ПрочитатьСвоеЧисло(Ячейка)
Если Ячейка.СодержитЗначение Тогда
Значение = Ячейка.Значение;
Если ТипЗнч(Значение) = Тип("Число") Тогда
Возврат Значение;
КонецЕсли;
Возврат Неопределено;
КонецЕсли;
Текст = СтрЗаменить(СтрЗаменить(СокрЛП(Ячейка.Текст), Символ(160), ""), " ", "");
Если Текст = "" Тогда
Возврат Неопределено;
КонецЕсли;
ЕстьЦифра = Ложь;
Для Позиция = 1 По СтрДлина(Текст) Цикл
Знак = Сред(Текст, Позиция, 1);
Если СтрНайти("0123456789", Знак) > 0 Тогда
ЕстьЦифра = Истина;
ИначеЕсли СтрНайти(",.-", Знак) = 0 Тогда
Возврат Неопределено;
КонецЕсли;
КонецЦикла;
Если Не ЕстьЦифра Тогда
Возврат Неопределено;
КонецЕсли;
Возврат Число(Текст);
КонецФункции
Функция СвойОбъектРасшифровкиИзСтроки(СтрокаXML, ТребуемыйТип)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(СтрокаXML);
Попытка
Объект = СериализаторXDTO.ПрочитатьXML(Чтение, ТребуемыйТип);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ТипЗнч(Объект) <> ТребуемыйТип Тогда
ВызватьИсключение "Нужен полный собственный типизированный объект, не кусок ссылок";
КонецЕсли;
Возврат Объект;
КонецФункцииУчебныеПользовательскиеРазделы85.Пульт
УчебныеПользовательскиеРазделы85 → Обработки → УчебныеПользовательскиеРазделы85 → Формы → Пульт → Модуль
Полный модуль собственной управляемой формы; здесь не выполнялся.
&НаКлиенте
Процедура Выполнить(Команда)
Сообщить(ВыполнитьНаСервере());
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВыполнитьНаСервере()
Возврат УчебныеПользовательскиеРазделы85.ВыполнитьПример();
КонецФункцииРазбор по шагам
В свой основной УсловноеОформление добавить действительное правило: условие Сумма>100, одно оформляемое поле Сумма, абсолютный ЦветФона16/180/220. Нет правил для всей строки или чужих областей.
У всего раздела назначить пользовательский ID, представление и Обычный режим; у правила отдельный ID пустой, режим Авто, Использование=Истина.
После source-инициализации проверить Сумма через оба набора доступных полей раздела — для отбора и для оформления. Дополнительно найти ее в ТекущееПравило.Поля.ДоступныеПоляОформляемыхПолей.
Найти действительный пользовательский раздел УсловноеОформлениеКомпоновкиДанных и его правило. У user-правила менять только разрешенный Использование; недоступные Поля, Отбор и Представление не читать.
Сформировать настоящий табличный документ. Найти колонки по реальным заголовкам, проверить все шесть числовых ячеек и прочитать ЦветФона суммы каждой строки.
При включенном правиле Книга750 имеет RGB16/180/220, Ручка50 не имеет этого цвета. Выключить пользовательское правило: цвет Книги должен исчезнуть. Включить: цвет восстановится.
Полный XML основных настроек и исходной схемы сохраняется. Цвет читается из результата, не присваивается ячейке контрольным кодом. Это будущая BSL-проверка, а не выполненный визуальный тест1С.
Как проверить результат
Будущий результат должен пройти все встроенные проверки реальных строк/чисел и конкретного пользовательского изменения. Каталог настроек, строковый ID и флаг сами по себе не доказывают изменение отчета.
Три состояния выполняются свежими макетами/процессорами. До пользовательского изменения, после него и после возврата проверяются собственные данные. Ни один ожидаемый приемник не заполняется вручную.
Полный XML исходной схемы и основных настроек должен совпасть с первоначальным. Пользовательское изменение действует в эффективной копии ПолучитьНастройки, не заменяет исходный основной раздел.
Отрицательный контроль будущего отдельного опыта: изменить в буквальном запросе только количество Книги3→30 при прежней сумме750. Проверка реальной ячейки должна отказать, несмотря на прежние названия и сумму.
runtimeVerifiedScenarios=0. Все проверки в BSL — будущие условия приемки собственного учебного запуска; реальный запуск здесь не выполнялся.
Ожидаемый результат
Полный код проверяет три состояния собственного пользовательского раздела, действительный результат и сохранность исходной схемы. Здесь в1С не запускался.
На что обратить внимание
ПредставлениеПользовательскойНастройки недоступно у user-объекта: читается только у основных настроек. РежимОтображения описывает поведение редактора, но настоящий интерфейс здесь не проверялся.
Строковый пользовательский ID и ИдентификаторКомпоновкиДанных для обратного поиска элемента — разные типы и разные задачи. ID берется у фактического владельца, не создается числом или строкой вручную.
ДоступныеПоля — readonly набор текущего источника. Проверяется настоящий путь через НайтиПоле; нельзя заменить набор новой коллекцией или молча продолжить при Неопределено.
После повторной ЗагрузитьНастройки пользовательский состав пересоздается. Эти уроки загружают его один раз и не держат ссылки через последующие перезагрузки.
Поля и Отбор user-правила условного оформления недоступны: в своем пользовательском правиле меняется только разрешенный флаг Использование. Исходное правило целиком сохраняется в основных настройках.
Сложные подгруппы, разные наборы, фиксированные настройки и спорные native-примечания требуют самостоятельной задачи. Здесь опыт ограничен собственной двухстрочной схемой и проверяемым действием, без универсальных обещаний.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.