Создает объект на основе двоичных данных файла в формате *.cf или *.cfe.
Синтаксис
Новый ОбъектМетаданныхКонфигурация(<ДвоичныеДанные>)Полное описание, параметры и ограничения
ОбъектМетаданныхКонфигурация.По умолчанию
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject)
По умолчанию
Доступен, начиная с версии 8.3.13.
Синтаксис:
Новый ОбъектМетаданныхКонфигурация(<ДвоичныеДанные>)
Параметры:
<ДвоичныеДанные> (обязательный)
Тип: ДвоичныеДанные.
Двоичные данные файла, из которого будет сформирован объект ОбъектМетаданныхКонфигурация.
Описание:
Создает объект на основе двоичных данных файла в формате *.cf или *.cfe.
См. также:
РасширениеКонфигурации, метод ПолучитьДанные
Использование в версии:
Доступен, начиная с версии 8.3.13.
Методическая информация
Практические примеры
Прочитать метаданные своего CFE без установки расширения
Из локального учебного CFE получим отдельное описание конфигурации, проверим его имя, префикс и свой справочник. Покажем отличие метаданных файла от Метаданные работающего стенда.
Где и как запускать
Полный обычный клиентский общий модуль УчебныеСтруктуры85, только толстый клиент; полный модуль своей формы отдельным блоком. Не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую учебную базу 8.5.1.1343 с именем конфигурации УчебныеСтруктуры85, совместимость НеИспользовать, обычное приложение и толстый клиент. Никаких рабочих данных, подключений, подписок или регламентных заданий. Здесь база, подготовка и код не выполнялись: runtimeVerifiedScenarios=0.
Общий модуль УчебныеСтруктуры85: неглобальный, Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, прочие клиентские флаги=Нет. Вставьте полный основной модуль одного выбранного урока. Для следующего урока заменяйте весь текст, поскольку точка входа одинакова.
Создайте обработку УчебныеСтруктуры85, обычную основную форму Пульт, кнопку Выполнить с действием ВыполнитьНажатие. Полный модуль формы приведён отдельным блоком ниже. После подготовки выполните F7 и обновите только собственный стенд; документы не создавайте и не проводите.
Общие → Интерфейсы: УчебныйПереключаемый85, Переключаемый=Да, и УчебныйПостоянный85, Переключаемый=Нет. Синонимы Учебный переключаемый/Учебный постоянный, комментарии guide-switchable-85/guide-always-85. Это обычные интерфейсы, не подсистемы управляемого приложения. Не назначайте интерфейс чужому пользователю.
Документы → УчебныйДокумент85: проведение Разрешить, модуль объекта пустой. Реквизит Ключ85, только Строка(20), переменная длина. Табличная часть Строки85, синоним Учебные строки, комментарий guide-section-85; единственный реквизит Название85, только Строка(40). Движения включают два собственных регистра, описанных далее; код проведения не пишите.
Регистры накопления → УчебныеОстатки85, вид Остатки, измерение Ключ85 только Строка(20), ресурс Количество85 только Число(10,0). Регистратор только УчебныйДокумент85. Последовательности → УчебнаяОчередь85: Документы только УчебныйДокумент85, Движения только УчебныеОстатки85, перемещение границы НеПеремещать. Измерение Ключ85 только Строка(20). В настройке соответствия документам выберите реквизит Ключ85 своего документа; в соответствии движениям — измерение Ключ85 своего регистра накопления. Никаких записей, границ или восстановлений последовательности урок не создаёт.
Планы видов расчёта → УчебныеНачисления85: период действия выключен, зависимость НеИспользовать, без базовых планов, предопределённых видов и кода. Регистры расчёта → УчебныйРасчет85: план УчебныеНачисления85, периодичность Месяц, период действия и базовый период выключены, измерение Ключ85 Строка(20), ресурс Результат85 Число(12,2), регистратор УчебныйДокумент85. Перерасчеты → Очередь85: режим блокировок Автоматический, одно измерение Ключ85, ИзмерениеРегистра=Ключ85 родительского регистра; данные ведущих регистров пустые, модуль набора пустой. Это определения, не расчёт зарплаты.
Для урока CFE только в Конфигураторе своего стенда подготовьте собственное новое расширение УчебноеРасширение85 с префиксом Уч85_ и одним собственным справочником Уч85_Заметки, синоним Учебные заметки. Без заимствованных объектов, модулей, подписок и заданий. Сохраните ЕГО в локальный файл C:\1CStudy85\УчебноеРасширение85.cfe через команду сохранения расширения; папку создайте самостоятельно. Не применяйте расширение к конфигурации базы и не активируйте. Этот файл не приложен и здесь не создавался; код читает только файл, конструктор не устанавливает расширение.
Будущий запуск — только Пульт своего толстого клиента. Отчёт открывается в новом табличном документе в памяти; не печатайте и не сохраняйте через команды окна. Статический аудит структуры не подтверждает расчёты, проведение, границы последовательности или применение расширения.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойКонтекст();
Путь = "C:\1CStudy85\УчебноеРасширение85.cfe";
Данные = Новый ДвоичныеДанные(Путь);
Если Данные.Размер() = 0 Тогда
ВызватьИсключение "Сохраните свой непустой учебный файл расширения";
КонецЕсли;
ОписаниеРасширения = Новый ОбъектМетаданныхКонфигурация(Данные);
Если ОписаниеРасширения.Имя <> "УчебноеРасширение85" Тогда
ВызватьИсключение "Файл не содержит подготовленное собственное расширение";
КонецЕсли;
Если ОписаниеРасширения.ПрефиксИмен <> "Уч85_" Тогда
ВызватьИсключение "Не совпал префикс собственного расширения";
КонецЕсли;
МДЗаметок = ОписаниеРасширения.Справочники.Найти("Уч85_Заметки");
Если МДЗаметок = Неопределено Или ОписаниеРасширения.Справочники.Количество() <> 1 Тогда
ВызватьИсключение "В своём файле нужен только справочник Уч85_Заметки";
КонецЕсли;
Если МДЗаметок.Родитель() <> ОписаниеРасширения
Или МДЗаметок.ПринадлежностьОбъекта <> Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
ВызватьИсключение "Каталог файла должен принадлежать своему описанию расширения";
КонецЕсли;
Если Метаданные.Справочники.Найти("Уч85_Заметки") <> Неопределено Тогда
ВызватьИсключение "Справочник файла уже присутствует в метаданных стенда: опыт должен читать неприменённый CFE";
КонецЕсли;
Паспорт = СоздатьСвоюТаблицу();
ДобавитьСтроку(Паспорт, ОписаниеРасширения.Имя, "Источник", Путь);
ДобавитьСтроку(Паспорт, ОписаниеРасширения.Имя, "Размер файла, байты", Данные.Размер());
ДобавитьСтроку(Паспорт, ОписаниеРасширения.Имя, "Префикс имен расширения", ОписаниеРасширения.ПрефиксИмен);
ДобавитьСтроку(Паспорт, ОписаниеРасширения.Имя, "Собственный объект внутри файла", МДЗаметок.ПолноеИмя());
ДобавитьСтроку(Паспорт, Метаданные.Имя, "Текущая конфигурация осталась стендом", Метаданные.Имя);
ПоказатьСвойПаспорт(Паспорт, "Свой CFE: описание в памяти, без установки расширения");
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеСтруктуры85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьСтроку(Таблица, Объект, Свойство, Значение)
СтрокаПаспорта = Таблица.Добавить();
СтрокаПаспорта.Объект = Объект;
СтрокаПаспорта.Свойство = Свойство;
СтрокаПаспорта.Значение = Строка(Значение);
КонецПроцедуры
Функция СоздатьСвоюТаблицу()
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Объект");
Таблица.Колонки.Добавить("Свойство");
Таблица.Колонки.Добавить("Значение");
Возврат Таблица;
КонецФункции
Процедура ПоказатьСвойПаспорт(Таблица, Заголовок)
Если Таблица.Количество() = 0 Тогда
ВызватьИсключение "Собственный паспорт пуст";
КонецЕсли;
Документ = Новый ТабличныйДокумент;
Документ.Область("R1C1").Текст = "Объект";
Документ.Область("R1C2").Текст = "Свойство";
Документ.Область("R1C3").Текст = "Значение";
Номер = 2;
Для Каждого Запись Из Таблица Цикл
Документ.Область(Номер, 1).Текст = Запись.Объект;
Документ.Область(Номер, 2).Текст = Запись.Свойство;
Документ.Область(Номер, 3).Текст = Запись.Значение;
Номер = Номер + 1;
КонецЦикла;
Документ.Показать(Заголовок, "", Истина);
КонецПроцедурыУчебныеСтруктуры85.Пульт
УчебныеСтруктуры85 → Обработки → УчебныеСтруктуры85 → Формы → Пульт → Модуль
Полный модуль обычной формы собственного стенда; не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеСтруктуры85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Проверяем собственный контекст, затем читаем заранее вручную сохранённый учебный CFE в ДвоичныеДанные. Это чтение файла толстого клиента, не загрузка по сети.
Новый ОбъектМетаданныхКонфигурация обязательно получает ДвоичныеДанные файла CF или CFE. Название конструктора По умолчанию не означает, что допустим вызов без аргумента.
Имя прочитанного описания должно быть УчебноеРасширение85, после этого читаем ПрефиксИмен. Свойство доступно только для расширений: не применяем его к Метаданные обычной основной конфигурации.
Префикс Уч85_ используется при создании собственных объектов в Конфигураторе. Он не переименовывает существующие объекты и не меняет поведение в Предприятии.
Справочник Уч85_Заметки найден в ОписаниеРасширения.Справочники. Его Родитель — это описание файла, а ПринадлежностьОбъекта подтверждает, что объект собственный, не заимствованный.
В Метаданные действующего стенда Уч85_Заметки должен отсутствовать. Отдельный конструктор описания не устанавливает расширение и не создаёт в базе справочник или записи.
В отчёте показываем имя файла, размер, префикс и полное имя определения; тексты модулей не исполняются и содержимое файла не записывается обратно.
Как проверить результат
Будущий тест: подготовить свой стенд, F7 и Выполнить в толстом клиенте. Проверить программные имена, подписи и фактические связи в новом отчёте; здесь запуск не проводился.
Изменить в своей подготовке только Синоним: паспорт меняет подпись, но программный поиск не ломается. Изменить программное Имя без изменения урока: ожидается понятный отказ поиска.
До опыта подготовьте именно свой CFE по указанному пути. При отсутствии, пустом файле или неподдерживаемом содержимом должен возникнуть отказ, не успешный пустой отчёт.
Будущий отчёт: УчебноеРасширение85, Уч85_, Уч85_Заметки и текущая конфигурация УчебныеСтруктуры85. Установленные расширения и бизнес-данные не изменяются.
Сохраните в отдельный собственный файл вариант расширения с другим префиксом и используйте его вместо подготовленного только для негативного опыта: ожидается отказ. Не подставляйте чужие CFE и не устанавливайте файл ради проверки.
Урок не читает ПрефиксИмен у обычной конфигурации, не выполняет Создать/Записать для менеджера расширений и не применяет изменения базы.
Ожидаемый результат
Будущий результат — паспорт реальной структуры собственного определения и её проверенных связей. Бизнес-данные не записываются. Код не выполнялся в 1С: runtimeVerifiedScenarios=0.
На что обратить внимание
Метаданные — описания. Их наличие не доказывает существование записей базы, успешное проведение или отсутствие ошибок прикладного алгоритма.
Readonly-свойства и коллекции не заменяются присваиванием. Подготовка через Конфигуратор относится только к новой собственной базе.
Ни F7, ни выполнение BSL здесь не происходили. Сверка справки, Python-тесты и HTML-поиск не заменяют проверку в 1С.
Файл CFE необходимо реально подготовить; примера бинарного файла здесь нет. Одна строка пути не создаёт файл и не является доказательством успешного разбора.
Конструктор создаёт описание, а не новый исполняемый сеанс базы. Чтение метаданных файла не доказывает совместимость расширения, успешную установку или отсутствие вредоносного кода.
Префикс доступен только у расширений. У основной конфигурации нельзя считать пустое значение этого свойства штатной проверкой отсутствия расширения.
Проверки имени, префикса и состава — защита от ошибки выбора учебного файла, не криптографическая проверка доверия к произвольному CFE.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.