ОбъектМетаданныхКонфигурация.ЭлементыСтиля

Свойства · StyleItems

Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, которые описывают все элементы стиля, определенные в конфигурации. Элементами коллекции являются объекты типа ОбъектМетаданных: ЭлементСтиля.

Полное описание, параметры и ограничения

ОбъектМетаданныхКонфигурация.ЭлементыСтиля (ConfigurationMetadataObject.StyleItems)

ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)

ЭлементыСтиля (StyleItems)

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

Использование:
Только чтение.
Описание:
Тип: КоллекцияОбъектовМетаданных.
Коллекция объектов метаданных, которые описывают все элементы стиля, определенные в конфигурации.
Элементами коллекции являются объекты типа ОбъектМетаданных: ЭлементСтиля.
Доступность:

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

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

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

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

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

Составить карту категорий объектов текущей конфигурации

Инвентаризация схемы: сколько определено справочников, документов, регистров, форм и сервисов. Это не число товаров или документов в базе.

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

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

Подготовка

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

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Для запуска на старой версии некоторые новые категории могут отсутствовать. Здесь используется именно API 8.5.1.1343.


Категории = Новый Соответствие;
Категории.Вставить("Справочники", Метаданные.Справочники);
Категории.Вставить("Документы", Метаданные.Документы);
Категории.Вставить("Журналы документов", Метаданные.ЖурналыДокументов);
Категории.Вставить("Перечисления", Метаданные.Перечисления);
Категории.Вставить("Константы", Метаданные.Константы);
Категории.Вставить("Регистры сведений", Метаданные.РегистрыСведений);
Категории.Вставить("Регистры накопления", Метаданные.РегистрыНакопления);
Категории.Вставить("Регистры бухгалтерии", Метаданные.РегистрыБухгалтерии);
Категории.Вставить("Регистры расчета", Метаданные.РегистрыРасчета);
Категории.Вставить("Планы счетов", Метаданные.ПланыСчетов);
Категории.Вставить("Планы видов характеристик", Метаданные.ПланыВидовХарактеристик);
Категории.Вставить("Планы видов расчета", Метаданные.ПланыВидовРасчета);
Категории.Вставить("Планы обмена", Метаданные.ПланыОбмена);
Категории.Вставить("Бизнес-процессы", Метаданные.БизнесПроцессы);
Категории.Вставить("Задачи", Метаданные.Задачи);
Категории.Вставить("Последовательности", Метаданные.Последовательности);
Категории.Вставить("Нумераторы", Метаданные.НумераторыДокументов);
Категории.Вставить("Общие модули", Метаданные.ОбщиеМодули);
Категории.Вставить("Подписки на события", Метаданные.ПодпискиНаСобытия);
Категории.Вставить("Регламентные задания", Метаданные.РегламентныеЗадания);
Категории.Вставить("Общие реквизиты", Метаданные.ОбщиеРеквизиты);
Категории.Вставить("Параметры сеанса", Метаданные.ПараметрыСеанса);
Категории.Вставить("Определяемые типы", Метаданные.ОпределяемыеТипы);
Категории.Вставить("Обработки", Метаданные.Обработки);
Категории.Вставить("Отчеты", Метаданные.Отчеты);
Категории.Вставить("Общие формы", Метаданные.ОбщиеФормы);
Категории.Вставить("Общие команды", Метаданные.ОбщиеКоманды);
Категории.Вставить("Группы команд", Метаданные.ГруппыКоманд);
Категории.Вставить("Общие макеты", Метаданные.ОбщиеМакеты);
Категории.Вставить("Общие картинки", Метаданные.ОбщиеКартинки);
Категории.Вставить("Подсистемы", Метаданные.Подсистемы);
Категории.Вставить("Интерфейсы", Метаданные.Интерфейсы);
Категории.Вставить("Стили", Метаданные.Стили);
Категории.Вставить("Элементы стиля", Метаданные.ЭлементыСтиля);
Категории.Вставить("Цвета палитры", Метаданные.ЦветаПалитры);
Категории.Вставить("Языки", Метаданные.Языки);
Категории.Вставить("Роли", Метаданные.Роли);
Категории.Вставить("Роли автономных ограничений", Метаданные.РолиОграниченияАвтономнойКонфигурации);
Категории.Вставить("Функциональные опции", Метаданные.ФункциональныеОпции);
Категории.Вставить("Параметры функциональных опций", Метаданные.ПараметрыФункциональныхОпций);
Категории.Вставить("Критерии отбора", Метаданные.КритерииОтбора);
Категории.Вставить("Хранилища настроек", Метаданные.ХранилищаНастроек);
Категории.Вставить("HTTP-сервисы", Метаданные.HTTPСервисы);
Категории.Вставить("Web-сервисы", Метаданные.WebСервисы);
Категории.Вставить("WS-ссылки", Метаданные.WSСсылки);
Категории.Вставить("WebSocket-клиенты", Метаданные.WebSocketКлиенты);
Категории.Вставить("Сервисы интеграции", Метаданные.СервисыИнтеграции);
Категории.Вставить("Боты", Метаданные.Боты);
Категории.Вставить("Пакеты XDTO", Метаданные.ПакетыXDTO);
Категории.Вставить("Внешние источники данных", Метаданные.ВнешниеИсточникиДанных);
ВсегоОписаний = 0;
Для Каждого Категория Из Категории Цикл
    Количество = Категория.Значение.Количество();
    Сообщить(СтрШаблон("%1: %2", Категория.Ключ, Количество));
    ВсегоОписаний = ВсегоОписаний + Количество;
КонецЦикла;
Сообщить("Учтено верхнеуровневых описаний: " + Строка(ВсегоОписаний));
Сообщить(Категории.Количество() = 50);

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

  1. У каждой категории берём коллекцию метаданных напрямую из корня текущей конфигурации.

  2. Соответствие связывает понятную подпись с коллекцией. Цикл вызывает Количество описаний, не выбирает данные прикладных таблиц.

  3. Разделяем прикладные объекты, исполняемые модули/события, интерфейс/оформление, права/опции и интеграционные контракты.

  4. Пустая коллекция допустима: отсутствие WebSocket-клиентов или планов расчёта не является ошибкой конфигурации.

  5. Итог складывает только верхний уровень. Вложенные реквизиты, формы объектов и колонки сюда не включаются.

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

  1. В выводе ровно 50 категорий с неотрицательными количествами.

  2. Сверьте два значения со своим деревом Конфигурация: например, Справочники и ОбщиеМодули.

  3. Пустая учебная база может иметь документы в метаданных и 0 документов в данных. Создание экземпляра документа не изменяет этот отчёт.

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

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

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

  1. ОбщиеФормы не включает все формы каждого справочника: они вложены в соответствующие объекты.

  2. Количество HTTPСервисов не доказывает публикацию, доступность или правильность HTTP-ответов.

  3. Количество Роли не означает число пользователей и не раскрывает назначенные пользователю права.

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

Применить настоящий цвет КА2 только к учебной панели

Элемент АктуальнаяПодпискаЦвет имеет вид Цвет и исходное значение #009646. Проверяем тип перед присваиванием и окрашиваем только свою пустую панель.

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

Полный модуль собственной обычной формы внешней обработки; толстый клиент учебной копии.

Подготовка

  1. Только отдельная учебная копия КА2 Progress. Три существующих элемента: АктуальнаяПодпискаЦвет, ВажнаяНадписьШрифт, РамкаОдинарнаяЭПД. Их виды и исходные значения проверены по StyleItems/*.xml, не придуманы.

  2. Для визуальных уроков создайте собственную внешнюю обработку с обычной формой, пустой панелью УчебнаяПанель и кнопкой вне панели. Назначьте кнопке действие ВыполнитьПример. Вставьте полный модуль урока в модуль этой обычной формы; обработчик без аргументов.

  3. Запускайте обычную форму в толстом клиенте учебной копии. В управляемой форме нет ЭлементыФормы и объекта Панель; туда код обычного визуального урока не переносится.

  4. Серверные диагностические уроки отдельно размещаются в серверном общем модуле УчебныеЗадачи. Код не меняет метаданные, ГлавныйСтиль, основной стиль базы или оформление рабочих форм.

Процедура ВыполнитьПример()
    Описание = Метаданные.ЭлементыСтиля.Найти("АктуальнаяПодпискаЦвет");
    Если Описание = Неопределено Тогда
        ВызватьИсключение "Проверьте имя элемента стиля в учебной копии КА2 Progress";
    КонецЕсли;
    Варианты = Метаданные.СвойстваОбъектов;
    Если Описание.Вид <> Варианты.ВидЭлементаСтиля.Цвет Тогда
        ВызватьИсключение "Для ЦветФона нужен элемент вида Цвет";
    КонецЕсли;
    ЦветПанели = Описание.Значение;
    Если ТипЗнч(ЦветПанели) <> Тип("Цвет") Тогда
        ВызватьИсключение "Значение элемента стиля должно иметь тип Цвет";
    КонецЕсли;
    ЭлементыФормы.УчебнаяПанель.ЦветФона = ЦветПанели;
    Сообщить(ЦветПанели.Красный = 0 И ЦветПанели.Зеленый = 150 И ЦветПанели.Синий = 70);
    Сообщить(ТипЗнч(ЭлементыФормы.УчебнаяПанель.ЦветФона) = Тип("Цвет"));
КонецПроцедуры

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

  1. Поиск метаданных проверяется до обращения к Вид и Значение. Вид сравниваем с контейнером Метаданные.СвойстваОбъектов, доступным для работы с метаданными.

  2. Реальный тип значения проверяется отдельно: цвет нельзя подменить шрифтом, рамкой или строкой #009646.

  3. #00 96 46 из XML соответствует красному 0, зелёному 150, синему 70. Компоненты используются для контроля исходного фиксированного цвета.

  4. Меняется ЦветФона только собственного элемента обычной формы. Метаданные остаются только для чтения; главное оформление приложения не переключается.

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

  1. В исходной учебной копии без изменения этого элемента две контрольные Истина. У собственной панели виден зелёный фон.

  2. Если расширение поменяло элемент стиля, первая проверка диагностирует отличие; не переписывайте стиль ради получения Истина.

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

Учебная панель использует настоящее значение элемента стиля, с проверкой назначения и типа.

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

  1. Тема и интерфейс могут влиять на оформление. Статический тест не доказывает внешний вид формы на экране.

  2. Не присваивайте Описание.Значение: свойства объекта метаданных доступны только для чтения.

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

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

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

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

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