Настройки представления записи, объекта и списка читаем отдельно. Основная форма может не быть назначена: это не ошибка обращения к имени.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте отдельную учебную конфигурацию Учебная85 без расширений, не рабочие КА2/УНФ/УТ. В Конфигураторе создайте Внешние источники данных → УчебныйВнешний → Таблицы → Товары. Строку подключения оставьте пустой: упражнения читают только метаданные, внешняя СУБД не требуется.
Для таблицы задайте вид Таблица, тип ОбъектныеДанные, имя в источнике guide_books, ТолькоЧтение=Истина. В её Полях создайте Код (Строка 20, имя book_code), Наименование (Строка 100, имя book_name), Количество (Число 9.0, имя book_quantity) и Версия (Число 15.0, имя book_version). Это описание учебного источника, не команда создания SQL-таблицы.
В ПоляКлюча и ПоляБлокировкиДанных включите Код, ПолеПредставления=Наименование, ПолеВерсииДанных=Версия, ПолеРодителя не задавайте. ВводПоСтроке: Код и Наименование. Для Количество запретите Null, задайте заполнение 0 и Подсказку «Количество книг». Для Наименование задайте Синоним «Название книги». СозданиеПриВводе оставьте без использования.
Модули и справку оставьте пустыми, не создавайте обработчики подключения и команды записи. Обновите только эту учебную конфигурацию. Фрагменты запускайте отдельно на сервере в учебной обработке: они не обращаются к данным источника и не меняют метаданные.
Источник = Метаданные.ВнешниеИсточникиДанных.Найти("УчебныйВнешний");
Если Источник = Неопределено Тогда
ВызватьИсключение "Создайте только учебный внешний источник УчебныйВнешний";
КонецЕсли;
Таблица = Источник.Таблицы.Найти("Товары");
Если Таблица = Неопределено Тогда
ВызватьИсключение "В учебном источнике нет описания таблицы Товары";
КонецЕсли;
Сообщить("Запись: " + Таблица.ПредставлениеЗаписи);
Сообщить("Объект: " + Таблица.ПредставлениеОбъекта);
Сообщить("Список: " + Таблица.ПредставлениеСписка);
Сообщить("Расширенное представление записи: " + Таблица.РасширенноеПредставлениеЗаписи);
Сообщить("Расширенное представление объекта: " + Таблица.РасширенноеПредставлениеОбъекта);
Сообщить("Расширенное представление списка: " + Таблица.РасширенноеПредставлениеСписка);
Сообщить("Пояснение: " + Таблица.Пояснение);
Назначения = Новый Структура;
Назначения.Вставить("Выбор", Таблица.ОсновнаяФормаДляВыбора);
Назначения.Вставить("Запись", Таблица.ОсновнаяФормаЗаписи);
Назначения.Вставить("Объект", Таблица.ОсновнаяФормаОбъекта);
Назначения.Вставить("Список", Таблица.ОсновнаяФормаСписка);
Для Каждого Назначение Из Назначения Цикл
Если Назначение.Значение = Неопределено Тогда
Сообщить(Назначение.Ключ + ": основная форма не назначена");
Иначе
Сообщить(Назначение.Ключ + ": " + Назначение.Значение.Имя);
КонецЕсли;
КонецЦикла;
Сообщить("Описаний форм: " + Строка(Таблица.Формы.Количество()));Разбор по шагам
ПредставлениеЗаписи, ПредставлениеОбъекта и ПредставлениеСписка могут отличаться: не подменяем их одним Синонимом.
Расширенные представления и Пояснение относятся к интерфейсу, не к имени внешней таблицы.
Четыре назначения собираются в собственную структуру, каждое проверяется на Неопределено.
Имя формы читается только в ветке с существующим описанием.
Количество форм — количество метаданных, не число открытых окон. Урок формы не открывает.
Как проверить результат
Выводятся 7 подписей, 4 назначения и число описаний форм.
Без вручную созданных форм ожидаются сообщения об отсутствии основных форм, а не исключение.
Ожидаемый результат
Получена карта интерфейсных назначений с безопасной обработкой отсутствия формы.
На что обратить внимание
Назначенное описание формы не означает, что окно уже открыто.
Модуль серверного упражнения не вызывает ОткрытьФорму.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.