КвалификаторыДвоичныхДанных.ДопустимаяДлина

Свойства · AllowedLength

Тип: ДопустимаяДлина. Содержит допустимую длину двоичных данных.

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

КвалификаторыДвоичныхДанных.ДопустимаяДлина (BinaryDataQualifiers.AllowedLength)

КвалификаторыДвоичныхДанных (BinaryDataQualifiers)

ДопустимаяДлина (AllowedLength)

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

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

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

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

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

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

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

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

Задаём предел восемь байтов, проверяем два известных пакета и не путаем размер UTF-8 с числом символов.

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

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

Подготовка

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

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


Квалификаторы = Новый КвалификаторыДвоичныхДанных(8, ДопустимаяДлина.Переменная);
ТипПакета = Новый ОписаниеТипов("ДвоичныеДанные", , , , Квалификаторы);
Сообщить(Квалификаторы.Длина);
Сообщить(Квалификаторы.ДопустимаяДлина);
Сообщить(ТипПакета.КвалификаторыДвоичныхДанных.Длина);
Пакеты = Новый Массив;
Пакеты.Добавить(ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь));
Пакеты.Добавить(ПолучитьДвоичныеДанныеИзСтроки("Книга", КодировкаТекста.UTF8, Ложь));
Для Каждого Пакет Из Пакеты Цикл
    Если Пакет.Размер() > Квалификаторы.Длина Тогда
        Сообщить(СтрШаблон("Пакет отклонён: %1 байт, максимум %2", Пакет.Размер(), Квалификаторы.Длина));
    Иначе
        Сообщить(СтрШаблон("Пакет принят: %1 байт", Пакет.Размер()));
    КонецЕсли;
КонецЦикла;
Неограниченные = Новый КвалификаторыДвоичныхДанных;
Сообщить(Неограниченные.Длина = 0);

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

  1. КвалификаторыДвоичныхДанных задают максимальную длину в байтах.

  2. Передаём их пятым параметром ОписаниеТипов; остальные квалификаторы пропускаем.

  3. Сериализуем тексты как UTF-8 без BOM и измеряем именно размер двоичных данных.

  4. Для слишком большого пакета сообщаем об отказе. Квалификатор без параметров отдельно показывает неограниченную длину 0.

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

  1. abc принят: 3 байта; Книга отклонена: 10 байтов при максимуме 8.

  2. Значение ТипПакета.КвалификаторыДвоичныхДанных.Длина равно 8.

  3. Увеличьте предел до 10: оба учебных пакета проходят проверку размера.

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

Лимит размера проверен до записи или отправки пакета.

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

  1. Проверка размера не проверяет формат, подпись или безопасность содержимого.

  2. Квалификатор неограниченной длины 0 требует отдельной ветки проверки, а не отказа для каждого непустого пакета.

  3. Число букв не равно размеру UTF-8; BOM, если его добавить, также занимает байты.

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

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

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

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

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