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