ОбъектМетаданных: Команда.ПолноеИмя

Методы · FullName

Получает полное имя объекта метаданного. Имя отвечает требованиям, предъявляемым к именам (должно начинаться с буквы, содержать только буквы, цифры или символ "_", может содержать одну точку (не начальный и не конечный символ)).

Синтаксис

ПолноеИмя()

Примеры платформы

Для каждого Объект Из Метаданные.Справочники Цикл
    Сообщить(Объект.ПолноеИмя());
КонецЦикла;
Полное описание, параметры и ограничения

ОбъектМетаданных: Команда.ПолноеИмя (MetadataObject: Command.FullName)

ОбъектМетаданных: Команда (MetadataObject: Command)

ПолноеИмя (FullName)

Доступен, начиная с версии 8.0.

Синтаксис:
ПолноеИмя()
Возвращаемое значение:
Тип: Строка.

Описание:

Получает полное имя объекта метаданного. Имя отвечает требованиям, предъявляемым к именам (должно начинаться с буквы, содержать только буквы, цифры или символ "_", может содержать одну точку (не начальный и не конечный символ)).

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

// В конфигурации определены справочники "Банки", "Валюты" и "Товары"

// Результатом работы примера:

Для каждого Объект Из Метаданные.Справочники Цикл
Сообщить(Объект.ПолноеИмя());
КонецЦикла;
// будут сообщения:

// Справочник.Банки

// Справочник.Валюты

// Справочник.Товары

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Установить владельца команды и не путать её модуль с текстом кода

Получаем паспорт НовыйЭлемент и диагностируем доступность проектного свойства, не исполняя и не выводя модуль.

Где и как запускать

Полный серверный общий модуль собственной учебной копии КА2 Progress 2.5.20.75, только чтение схемы.

Подготовка

  1. Используйте отдельную учебную копию КА2 Progress из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, конфигурация КомплекснаяАвтоматизация 2.5.20.75, платформа 8.5.1.1343. Это не инструкция запуска в рабочей базе.

  2. Создайте серверный общий модуль УчебныеКонтрактыИнтерфейса с флагом Сервер. Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыИнтерфейса.ВыполнитьПример() из серверной учебной команды.

  3. Команды подтверждены в Catalogs\Номенклатура.xml и Documents\РеализацияТоваровУслуг.xml; форма — в Catalogs\Номенклатура\Forms\ФормаСписка.xml; нумератор — в DocumentNumerators\ДокументыРеализацииТоваров.xml.

  4. Исходники конфигурации не меняются. Код только читает метаданные и обрабатывает собственные значения в памяти: не вызывает штатную команду, не открывает форму списка, не получает новый номер и не записывает документы.

  5. При отличающейся версии или расширениях результат может отличаться от выгрузки. Сверяйте активную конфигурацию, а не исправляйте её ради зелёных сообщений.

Процедура ВыполнитьПример() Экспорт
    Каталог = Метаданные.Справочники.Найти("Номенклатура");
    Если Каталог = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого справочника Номенклатура";
    КонецЕсли;
    КомандаМетаданных = Каталог.Команды.Найти("НовыйЭлемент");
    Если КомандаМетаданных = Неопределено Тогда
        ВызватьИсключение "Нет команды Номенклатура.НовыйЭлемент";
    КонецЕсли;
    Сообщить(КомандаМетаданных.Имя = "НовыйЭлемент");
    Сообщить(КомандаМетаданных.Родитель() = Каталог);
    Сообщить("Синоним: " + КомандаМетаданных.Синоним);
    Сообщить("Полное имя: " + КомандаМетаданных.ПолноеИмя());
    Сообщить("Представление: " + КомандаМетаданных.Представление());
    Сообщить("Комментарий заполнен: " + Строка(НЕ ПустаяСтрока(КомандаМетаданных.Комментарий)));
    Сообщить("Принадлежность: " + Строка(КомандаМетаданных.ПринадлежностьОбъекта));
    Сообщить("Тип идентификатора заимствования: " + Строка(ТипЗнч(КомандаМетаданных.ОбъектРасширяемойКонфигурации)));
    Сообщить("Изменена расширениями: " + Строка(КомандаМетаданных.ЕстьИзмененияРасширениямиКонфигурации()));
    Сообщить("Принадлежит расширению: " + Строка(КомандаМетаданных.РасширениеКонфигурации() <> Неопределено));
    Попытка
        Сообщить("Тип проектного свойства МодульКоманды: " + Строка(ТипЗнч(КомандаМетаданных.МодульКоманды)));
    Исключение
        Сообщить("МодульКоманды недоступен в этой среде: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Разбор по шагам

  1. Имя и Родитель подтверждают точную команду справочника. ПолноеИмя сохраняет квалификацию и не заменяется локализованным синонимом.

  2. Синоним/Представление подходят пользователю, но не служат устойчивым ключом XML-объекта. Комментарий — пояснение разработчика, а не имя команды.

  3. ПринадлежностьОбъекта и ОбъектРасширяемойКонфигурации относятся к заимствованию. Наличие пустого UUID само по себе не доказывает изменение обработчика.

  4. ЕстьИзмененияРасширениямиКонфигурации и РасширениеКонфигурации читаются отдельно: изменение расширением и принадлежность расширению — разные вопросы.

  5. В краткой справке МодульКоманды имеет тип Неопределено, не обещанный текст BSL. Поэтому обращение диагностическое, защищено Попытка и не используется для аудита исходников.

  6. Чтобы изучить реальный обработчик, открывают соответствующий экспортированный CommandModule.bsl/Конфигуратор отдельно, не исполняют строку из этого свойства.

Как проверить результат

  1. Две первые проверки ожидаются Истина; значения локализации/расширений зависят от активной учебной копии.

  2. Для МодульКоманды показан фактический тип либо причина недоступности. Ни один вариант не считается доказательством получения исходного кода.

Ожидаемый результат

Установлены владелец и квалифицированное имя реальной команды, отделена схема от текста и исполнения обработчика.

На что обратить внимание

  1. ОбъектМетаданных: Команда и ОбъектМетаданных: ОбщаяКоманда — разные типы.

  2. Диагностическая ошибка проектного свойства не должна заменяться фиктивной строкой исходного модуля.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Разделить команды, макеты и автоматическое создание стандартных команд

Проверяем состав интерфейсных описаний без выполнения команды. Количество собственных команд не включает автоматически генерируемые стандартные команды.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Процесс = Метаданные.БизнесПроцессы.Найти("Задание");
Если Процесс = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует БизнесПроцессы.Задание";
КонецЕсли;
Задача = Метаданные.Задачи.Найти("ЗадачаИсполнителя");
Если Задача = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует Задачи.ЗадачаИсполнителя";
КонецЕсли;
План = Метаданные.ПланыОбмена.Найти("Мобильные");
Если План = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует ПланыОбмена.Мобильные";
КонецЕсли;
Описания = Новый Массив;
Описания.Добавить(Процесс);
Описания.Добавить(Задача);
Описания.Добавить(План);
Для Каждого Описание Из Описания Цикл
    Сообщить(Описание.ПолноеИмя());
    Сообщить("Использовать стандартные команды: " + Строка(Описание.ИспользоватьСтандартныеКоманды));
    Сообщить(СтрШаблон("Собственных команд %1; макетов %2",
        Описание.Команды.Количество(), Описание.Макеты.Количество()));
    Для Каждого Команда Из Описание.Команды Цикл
        Сообщить("Команда схемы: " + Команда.ПолноеИмя());
    КонецЦикла;
    Для Каждого Макет Из Описание.Макеты Цикл
        Сообщить("Макет схемы: " + Макет.ПолноеИмя());
    КонецЦикла;
КонецЦикла;

Разбор по шагам

  1. Команды и Макеты — разные коллекции подчинённых объектов.

  2. Флаг стандартных команд не добавляет разработческий объект в коллекцию Команды.

  3. ПолноеИмя показывает источник для чтения в Конфигураторе.

  4. Макет не извлекаем и печать не запускаем; обработчики команд не выполняем.

Как проверить результат

  1. Списки собственных команд и макетов совпадают с деревом выбранных объектов.

  2. Объект с нулём собственных команд всё равно может иметь стандартные команды; не делайте обратного вывода по одному счётчику.

Ожидаемый результат

Определены реальные места чтения интерфейсного кода и макетов.

На что обратить внимание

  1. Макет может иметь разный вид; его наличие не гарантирует табличную печатную форму.

  2. Наличие команды не подтверждает доступность для текущей роли пользователя.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.