Отклонить слишком длинный код до приведения к Строка(5)

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

Задаём ограничение строкового типа и проверяем входящие коды заранее, чтобы не потерять конец идентификатора.

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

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

Подготовка

  1. Все значения учебные и создаются в памяти; документы, регистры и рабочие данные не изменяются.

  2. Выполняйте на сервере учебной базы. Представление десятичного разделителя в сообщениях зависит от локали.


Квалификаторы = Новый КвалификаторыСтроки(5, ДопустимаяДлина.Переменная);
ТипКода = Новый ОписаниеТипов("Строка", , Квалификаторы);
Сообщить(Квалификаторы.Длина);
Сообщить(Квалификаторы.ДопустимаяДлина);
Сообщить(ТипКода.КвалификаторыСтроки.Длина);
Коды = Новый Массив;
Коды.Добавить("A-01");
Коды.Добавить("ABCDEF");
Для Каждого Код Из Коды Цикл
    Если СтрДлина(Код) > Квалификаторы.Длина Тогда
        Сообщить("Отклонён длинный код: " + Код);
        Продолжить;
    КонецЕсли;
    Подготовленный = ТипКода.ПривестиЗначение(Код);
    Сообщить("Допустимый код: " + Подготовленный);
КонецЦикла;
БезОграничения = Новый КвалификаторыСтроки;
Сообщить(БезОграничения.Длина = 0);

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

  1. Квалификаторы задают максимальную длину 5 и переменную фактическую длину строки.

  2. Строковые квалификаторы — третий параметр конструктора ОписаниеТипов; второй числовой пропущен.

  3. Сначала сравниваем длину входа, только допустимое значение передаём в ПривестиЗначение.

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

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

  1. Длина 5; A-01 принят без изменений, ABCDEF отклонён.

  2. Свойство ТипКода.КвалификаторыСтроки.Длина тоже равно 5.

  3. Проверка квалификатора без ограничения даёт Истина. Для него нельзя применять условие длина > 0 как обычный предел 0 символов.

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

Идентификаторы проверены до потенциального изменения значения при приведении типа.

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

  1. Переменная длина не означает неограниченную: максимальный предел задаётся отдельно.

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

  3. Это ограничение собственного учебного типа, а не фактического реквизита Номенклатуры.

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

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

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

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

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