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

Свойства · CodeType

Тип: ТипКодаСправочника. Тип кода объекта базы данных (например, Число, Строка).

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

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

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

ТипКода (CodeType)

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

Использование:
Только чтение.
Описание:
Тип: ТипКодаСправочника.
Тип кода объекта базы данных (например, Число, Строка).
Доступность:

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

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

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

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

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

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

В КА2 Progress код Номенклатура строковый. Учебный внешний код 000123 сохраняем как строку: превращение в число убирает ведущие нули.

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

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

Подготовка

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

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

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

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

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

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

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

  1. Находим реальное описание Номенклатура из предоставленного XML и проверяем наличие.

  2. СвойстваОбъектов предоставляет типизированные системные значения метаданных, не пользовательское перечисление товаров.

  3. Выбираем преобразование по фактическому ТипКода; текущий строковый код оставляем без преобразования.

  4. СерииКодов определяет область уникальности, ОсновноеПредставление — видимое представление; это разные свойства.

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

  1. В предоставленном XML четыре сравнения Истина: строковый код, сохранённое 000123, отдельно полученное число 123 и серия всего справочника.

  2. В другой версии конфигурации сначала сверяйте ТипКода и СерииКодов; пример не ищет и не создаёт товар.

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

Подготовлена корректная типизация входящего кода без потери ведущих нулей.

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

  1. Не передавайте число 123 вместо строкового кода 000123 по привычке.

  2. Совпадение кода в данной серии ещё не является внешним идентификатором Avito или другого сервиса.

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

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.