ОбъектМетаданных: ОпределяемыйТип.Тип

Свойства · Type

Тип: ОписаниеТипов. Содержит описание типа, которым будет фактически представлен определяемый тип.

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

ОбъектМетаданных: ОпределяемыйТип.Тип (MetadataObject: DefinedType.Type)

ОбъектМетаданных: ОпределяемыйТип (MetadataObject: DefinedType)

Тип (Type)

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

Использование:
Только чтение.
Описание:
Тип: ОписаниеТипов.
Содержит описание типа, которым будет фактически представлен определяемый тип.
Доступность:

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

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

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

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

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

Проверить определяемый тип Артикул перед загрузкой длинной строки

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

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

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

Подготовка

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

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

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

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

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

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

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

  1. Описание.Тип — ОписаниеТипов, а не текущее значение артикула товара.

  2. Проверяем наличие строки перед использованием строковых квалификаторов.

  3. Нулевая максимальная длина означает отсутствие этого ограничения, не строку нулевой длины.

  4. Строка примера содержит 51 символ; при ограничении 50 отклоняем её, не создавая коллизию обрезанием.

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

  1. В данном XML Артикул — строка длиной 50 с переменной допустимой длиной: последнее сравнение Ложь.

  2. Замените учебную строку на А-001: сравнение Истина, но это ещё не проверка уникальности артикула.

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

Показана предварительная проверка длины по централизованному описанию типа.

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

  1. Составной тип требует учитывать остальные допустимые типы и бизнес-правила.

  2. Этот урок не записывает товар и не выполняет автоматическое приведение с усечением.

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

Узнать состав определяемых типов перед разработкой реквизита

Определяемый тип объединяет допустимые типы. Выводим его описание и каждую составляющую, не подменяя это списком объектов базы.

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

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

Подготовка

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

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


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

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

  1. В корне конфигурации открываем Определяемые типы и сравниваем список с выводом.

  2. Свойство Тип возвращает ОписаниеТипов. Метод Типы() возвращает массив составляющих типов.

  3. СодержитТип проверяет членство конкретного типа, но не проверяет произвольное значение на все бизнес-ограничения.

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

  1. Количество верхнеуровневых описаний равно размеру коллекции ОпределяемыеТипы.

  2. Для типа без Строки последняя проверка даёт Ложь; для типа со Строкой — Истина.

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

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

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

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

  1. Определяемый тип в метаданных и экземпляр значения — разные сущности.

  2. Допуск строки ещё не гарантирует, что строка подходит по длине, заполненности или бизнес-правилам конкретного поля.

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

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

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

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

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