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