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

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

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

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

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

Подготовка

  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С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.