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