Имя, версия, идентификатор и хеш описывают подготовленное расширение. Назначение Дополнение не является показателем успешности выполнения его кода.
Где и как запускать
Полный серверный модуль собственной УчебнаяКонфигурацияСинтаксиса. Чтение своего расширения, без его установки/обновления кодом.
Подготовка
Создайте отдельную пустую учебную конфигурацию с именем УчебнаяКонфигурацияСинтаксиса. Защитная проверка имени не допускает выполнение этих уроков в КА2, УТ или другой рабочей конфигурации.
В Конфигураторе этой учебной базы вручную создайте минимальное расширение УчебноеРасширениеСинтаксиса с назначением Дополнение, синонимом Учебное расширение и версией 1.0. Не добавляйте бизнес-код или новые таблицы.
Оставьте безопасный режим и защиту от опасных действий включёнными; не выдавайте через расширение дополнительные основные роли всем пользователям. Установите расширение только в собственной учебной базе и начните новый сеанс.
В серверном общем модуле УчебныеЗадачи разместите полный модуль одного урока. Запускайте свою серверную команду с правами, разрешёнными администратором учебной базы. Код не переключает привилегированный режим.
Примеры только читают паспорт, данные и диагностику. Они не записывают/удаляют расширение, не экспортируют CFE на диск и не отключают защиту.
Процедура ВыполнитьПример() Экспорт
Перечень = РасширенияКонфигурации.Получить();
Учебное = Неопределено;
Для Каждого Расширение Из Перечень Цикл
Если Расширение.Имя = "УчебноеРасширениеСинтаксиса" Тогда
Учебное = Расширение;
Прервать;
КонецЕсли;
КонецЦикла;
Если Учебное = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте только своё минимальное УчебноеРасширениеСинтаксиса";
КонецЕсли;
Сообщить(Учебное.Имя = "УчебноеРасширениеСинтаксиса");
Сообщить("Синоним: " + Учебное.Синоним);
Сообщить("Версия: " + Учебное.Версия);
Сообщить(ТипЗнч(Учебное.УникальныйИдентификатор) = Тип("УникальныйИдентификатор"));
Сообщить("Хеш заполнен: " + Строка(НЕ ПустаяСтрока(Учебное.ХешСумма)));
Варианты = Метаданные.СвойстваОбъектов;
Если Учебное.Назначение = Варианты.НазначениеРасширенияКонфигурации.Дополнение Тогда
Сообщить("Назначение: Дополнение — отдельная добавляемая функциональность");
ИначеЕсли Учебное.Назначение = Варианты.НазначениеРасширенияКонфигурации.Адаптация Тогда
Сообщить("Назначение: Адаптация — изменение под потребности внедрения");
ИначеЕсли Учебное.Назначение = Варианты.НазначениеРасширенияКонфигурации.Исправление Тогда
Сообщить("Назначение: Исправление — исправляющее расширение");
КонецЕсли;
Сообщить(Учебное.Назначение = Варианты.НазначениеРасширенияКонфигурации.Дополнение);
Сообщить("Тип области действия: " + Строка(ТипЗнч(Учебное.ОбластьДействия)));
КонецПроцедурыРазбор по шагам
Получить возвращает массив расширений. Ищем по точному собственному имени, а не берём первый элемент и не считаем его главным.
Имя и Синоним служат разным целям. Версия — строка, не Число: значение 1.0 не используем для арифметического сравнения релизов.
УникальныйИдентификатор отличает объект расширения; ХешСумма характеризует его данные. Не выдумываем алгоритм хеша и не называем строку доказательством цифровой подписи.
Назначение сравниваем с контейнером Метаданные.СвойстваОбъектов. Все три варианта поясняются, но подготовлено именно Дополнение.
ОбластьДействия может быть Неопределено; читаем её фактический тип без вызова несуществующих методов.
Как проверить результат
Три основные контрольные Истина: имя, тип идентификатора и подготовленное назначение. Остальное — фактические строки и признаки.
Ни имя, ни версия, ни назначение расширения не присваиваются.
Ожидаемый результат
Получен паспорт для сопоставления экземпляра расширения и его назначения.
На что обратить внимание
Имя, версия и хеш не заменяют тесты бизнес-логики после обновления.
Порядок массива нельзя использовать как доказательство назначения расширения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.