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

Учебные задачи

Составляем карту двух объектов. Количество описаний табличных частей не равно количеству строк данных в отчёте.

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

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

Подготовка

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

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

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

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

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

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

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

  1. Две проверенные ссылки кладём в массив для одинакового обхода общих коллекций.

  2. Реквизиты и ТабличныеЧасти здесь — описания структуры, а не значения созданного объекта.

  3. Макеты содержат описания: имя макета ещё не является таблицей или выполненным результатом СКД.

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

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

  1. По XML у отчёта один макет ОсновнаяСхемаКомпоновкиДанных; первое итоговое сравнение Истина.

  2. У выбранной обработки собственных реквизитов 0; второе сравнение Истина. Пустую коллекцию код обходит без ошибки.

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

Получена карта структуры без чтения хозяйственных операций.

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

  1. Метаданные макета не равны результату метода ПолучитьМакет прикладного объекта.

  2. Ноль собственных реквизитов не означает отсутствие параметров формы.

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

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

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

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

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