Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, которые описывают все общие макеты, определенные в конфигурации. Элементами коллекции являются объекты типа ОбъектМетаданных: Макет.
Полное описание, параметры и ограничения
ОбъектМетаданныхКонфигурация.ОбщиеМакеты (ConfigurationMetadataObject.CommonTemplates)
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
ОбщиеМакеты (CommonTemplates)
Доступен, начиная с версии 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-ответов.
Количество Роли не означает число пользователей и не раскрывает назначенные пользователю права.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Пройти историю двух собственных HTML-макетов
Перейти принимает объект метаданных макета или его полученный URL. Назад и Вперед проверяются отдельными действиями после загрузки, без сетевых сайтов.
Где и как запускать
Полный модуль своей обычной формы с двумя собственными общими HTML-макетами; только толстый клиент.
Подготовка
Только отдельная учебная конфигурация. В Общие → Общие макеты создайте два макета типа HTML-документ: УчебнаяСтраницаКнига и УчебнаяСтраницаРучка.
Импортируйте соответственно owned-book-page.html и owned-pen-page.html из lesson-assets рядом с руководством. Обе страницы содержат только собственный текст, без JS, внешних ссылок и изображений. Обновите учебную конфигурацию.
Во внешней обработке создайте новую обычную форму, поле HTML УчебныйHTML и пять обычных кнопок: УчебнаяКнига, УчебнаяРучка, УчебнаяНазад, УчебнаяВперед, УчебнаяПроверка. Все кнопки вне HTML-поля.
ПриОткрытии свяжите с процедурой. Другие действия назначаются кодом. Полный модуль вставьте на уровне модуля формы; толстый клиент с обычными формами.
Проверка по шагам: дождитесь книги, нажмите ручку и дождитесь её, Назад и дождитесь книги, Вперед и дождитесь ручки. Проверить нажимайте отдельно после завершения каждого перехода.
Процедура ПриОткрытии()
Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
Поле.УстановитьРежим(РежимПоляHTMLДокумента.Просмотр);
Кнопки = Новый Структура;
Кнопки.Вставить("УчебнаяКнига", "ОткрытьУчебнуюКнигу");
Кнопки.Вставить("УчебнаяРучка", "ОткрытьУчебнуюРучку");
Кнопки.Вставить("УчебнаяНазад", "ВернутьсяКУчебнойСтранице");
Кнопки.Вставить("УчебнаяВперед", "ПерейтиВпередКУчебнойСтранице");
Кнопки.Вставить("УчебнаяПроверка", "ПроверитьЗагруженнуюСтраницу");
Для Каждого Пара Из Кнопки Цикл
ЭтаФорма.ЭлементыФормы[Пара.Ключ].УстановитьДействие("Нажатие", Новый Действие(Пара.Значение));
КонецЦикла;
Макет = ПолучитьСвойМакет("УчебнаяСтраницаКнига");
Поле.Перейти(Макет);
КонецПроцедуры
Функция ПолучитьСвойМакет(ИмяМакета)
Если ИмяМакета <> "УчебнаяСтраницаКнига" И ИмяМакета <> "УчебнаяСтраницаРучка" Тогда
ВызватьИсключение "Разрешены только два собственных учебных макета";
КонецЕсли;
Макет = Метаданные.ОбщиеМакеты.Найти(ИмяМакета);
Если Макет = Неопределено Тогда
ВызватьИсключение "Импортируйте свой HTML-макет: " + ИмяМакета;
КонецЕсли;
Возврат Макет;
КонецФункции
Процедура ОткрытьУчебнуюКнигу(Элемент) Экспорт
Макет = ПолучитьСвойМакет("УчебнаяСтраницаКнига");
ЭтаФорма.ЭлементыФормы.УчебныйHTML.Перейти(Макет);
КонецПроцедуры
Процедура ОткрытьУчебнуюРучку(Элемент) Экспорт
Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
Макет = ПолучитьСвойМакет("УчебнаяСтраницаРучка");
Адрес = Поле.ПолучитьURL(Макет);
Если ПустаяСтрока(Адрес) Тогда
ВызватьИсключение "Не получен адрес собственного HTML-макета";
КонецЕсли;
Поле.Перейти(Адрес);
КонецПроцедуры
Процедура ВернутьсяКУчебнойСтранице(Элемент) Экспорт
ЭтаФорма.ЭлементыФормы.УчебныйHTML.Назад();
КонецПроцедуры
Процедура ПерейтиВпередКУчебнойСтранице(Элемент) Экспорт
ЭтаФорма.ЭлементыФормы.УчебныйHTML.Вперед();
КонецПроцедуры
Процедура ПроверитьЗагруженнуюСтраницу(Элемент) Экспорт
ТекстHTML = ЭтаФорма.ЭлементыФормы.УчебныйHTML.ПолучитьТекст();
Если СтрНайти(ТекстHTML, "Книга: 3") > 0 Тогда
Сообщить("Сейчас собственная книга: 3");
ИначеЕсли СтрНайти(ТекстHTML, "Ручка: 1") > 0 Тогда
Сообщить("Сейчас собственная ручка: 1");
Иначе
Сообщить("Подождите завершения перехода и повторите проверку");
КонецЕсли;
КонецПроцедуры
Разбор по шагам
Оба макета созданы и импортированы в учебную конфигурацию. Найти проверяется до возврата объекта; функция допускает только две собственные строки.
Для книги Перейти получает объект метаданных макета. Для ручки ПолучитьURL возвращает внутренний адрес того же собственного ресурса, затем вызывается вариант Перейти по строке. ПриОткрытии загружает книгу напрямую; пять экспортных обработчиков кнопок принимают Элемент и вызываются событиями, а не вместо инициализации.
Назад/Вперед работают с историей загруженных ресурсов, не с реквизитом товара. В режиме Редактирование они недоступны: здесь явно Просмотр.
Загрузка может быть асинхронной. Команда Проверить вызывается пользователем после перехода, а не немедленно вслед за Перейти.
Проверка ищет значимый текст. Новая навигация может поменять историю; выполняйте указанную последовательность на свежей форме.
Как проверить результат
Проверить после открытия: собственная книга 3; после ручки: собственная ручка 1.
Назад → книга 3; Вперед → ручка 1. Проверка не меняет документ или историю.
Не было HTTP-адресов, запуска сценариев или обхода политики безопасности.
Ожидаемый результат
Показаны оба варианта Перейти и история реальных собственных макетов.
На что обратить внимание
До появления второй страницы у Назад может не быть нужной записи истории.
Не заменяйте внутренний URL внешним сайтом и не обходите ограничения доступа к чужому DOM.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.