Строка имеет переменную длину. Если длина присваиваемой строки будет меньше установленной, то строка не будет дополняться пробелами до необходимой длины. Если длина присваиваемой строки будет больше установленной, строка будет обрезаться.
Полное описание, параметры и ограничения
ДопустимаяДлина.Переменная (AllowedLength.Variable)
ДопустимаяДлина (AllowedLength)
Переменная (Variable)
Доступен, начиная с версии 8.0.
Описание:
Строка имеет переменную длину. Если длина присваиваемой строки будет меньше установленной, то строка не будет дополняться пробелами до необходимой длины. Если длина присваиваемой строки будет больше установленной, строка будет обрезаться.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Задать точность цены, длину кода и дату без времени
ОписаниеТипов задаёт ограничения значений, квалификаторы уточняют конкретный тип. Приведение значения не заменяет проверку исходного ввода.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Можно выполнить на сервере; данные заданы константами, файлы и справочники не нужны.
Точность числа 10 включает целую и дробную части; 2 разряда отведены дробной части.
ПараметрыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный);
ТипЦены = Новый ОписаниеТипов("Число", ПараметрыЧисла);
ПараметрыСтроки = Новый КвалификаторыСтроки(8, ДопустимаяДлина.Переменная);
ТипКода = Новый ОписаниеТипов("Строка", , ПараметрыСтроки);
ПараметрыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата);
ТипДня = Новый ОписаниеТипов("Дата", , , ПараметрыДаты);
Сообщить(ТипЦены.СодержитТип(Тип("Число")));
Сообщить(ТипЦены.СодержитТип(Тип("Строка")));
Цена = ТипЦены.ПривестиЗначение(12.346);
Код = ТипКода.ПривестиЗначение("ABC-123456");
День = ТипДня.ПривестиЗначение(Дата(2026, 10, 2, 14, 30, 0));
Сообщить(Цена);
Сообщить(Код);
Сообщить(Час(День));
Сообщить(ТипЦены.КвалификаторыЧисла.Разрядность);
Сообщить(ТипЦены.КвалификаторыЧисла.РазрядностьДробнойЧасти);
Сообщить(ТипЦены.КвалификаторыЧисла.ДопустимыйЗнак);
Сообщить(ТипКода.КвалификаторыСтроки.Длина);
Сообщить(ТипКода.КвалификаторыСтроки.ДопустимаяДлина);
Сообщить(ТипДня.КвалификаторыДаты.ЧастиДаты);
Для Каждого ДопустимыйТип Из ТипЦены.Типы() Цикл
Сообщить(ДопустимыйТип);
КонецЦикла;Разбор по шагам
Создаём квалификаторы отдельно и передаём их в правильные позиции конструктора ОписаниеТипов.
СодержитТип проверяет допустимый тип, но ещё не проверяет конкретное введённое значение.
ПривестиЗначение округляет число, ограничивает строку и убирает время из даты.
Читаем ограничения обратно и обходим массив Типы.
Как проверить результат
Проверки типа дают Истина и Ложь; цена получается 12,35, код ABC-1234.
Час приведённой даты равен 0; свойства квалификаторов показывают 10, 2 и длину 8.
Ожидаемый результат
Цена, код и дата приведены к заданным ограничениям.
На что обратить внимание
Для пользовательского ввода сначала сообщайте о слишком длинном коде: молчаливое обрезание может создать дубликаты.
ПривестиЗначение может вернуть значение по умолчанию при неподходящем вводе; не используйте его как единственную проверку корректности.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.