ОбъектМетаданных: Справочник.Иерархический

Свойства · Hierarchical

Тип: Булево. Если это свойство установлено в значение Истина, то справочник или план видов характеристик имеет иерархическую структуру.

Полное описание, параметры и ограничения

ОбъектМетаданных: Справочник.Иерархический (MetadataObject: Catalog.Hierarchical)

ОбъектМетаданных: Справочник (MetadataObject: Catalog)

Иерархический (Hierarchical)

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

Использование:
Только чтение.
Описание:
Тип: Булево.
Если это свойство установлено в значение Истина, то справочник или план видов характеристик имеет иерархическую структуру.
Доступность:

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

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

Доступен, начиная с версии 8.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. Два значения ВидИерархии описывают разные модели, не два названия одной настройки.

  3. ИспользованиеПодчинения относится к владельцу и не заменяет вид иерархии.

  4. СпособВыбора и СпособРедактирования читаем отдельно; код не открывает форму и не редактирует справочник.

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

  1. По предоставленному XML первые два сравнения Истина и выводится пояснение о папках и карточках.

  2. Остальные сообщения зависят от фактических свойств текущей учебной копии, а не от догадки по названию справочника.

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

Определена структура будущего чтения справочника без изменения данных.

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

  1. Иерархия не доказывает наличие конкретной группы или товара.

  2. Нельзя трактовать каждую группу как товар для публикации в каталоге.

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

Проверить ограничения Номенклатуры до загрузки товаров

Перед импортом узнаём длины кода и наименования, иерархию, владельцев и состав реквизитов. Ничего не записываем.

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

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

Подготовка

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

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

  3. В Конфигураторе найдите Справочники → Номенклатура. Пример рассчитан на конфигурацию, где этот справочник существует.


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

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

  1. Найти возвращает описание справочника, не ссылку на конкретный товар.

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

  3. Обходим собственные реквизиты и выводим их реальные описания типов, а не предполагаем одинаковую схему во всех конфигурациях.

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

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

  1. Длины и тип кода совпадают с настройками Номенклатуры в вашей учебной базе.

  2. Увеличьте НаименованиеИзФайла до значения длиннее ДлинаНаименования: получите исключение до какой-либо записи.

  3. Число реквизитов — число описаний полей, а не число заполненных значений у товара.

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

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

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

  1. Контроль уникальности кода не гарантирует отсутствие товаров-дублей по артикулу или наименованию.

  2. ДлинаНаименования=0 требует отдельной интерпретации настройки; не объявляйте поле автоматически обязательным или безграничным.

  3. Успешная проверка длины не заменяет права доступа, обязательные реквизиты и обработчики записи.

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

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

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

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

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