Разработана в ходе реализации проекта по взаимодействию с веб-сервером для контроля размера передаваемых данных.
Источник алгоритма расчёта: Как рассчитать размер данных помещенных в объект ХранилищеЗначения.
// Универсальная функция для определения размера данных (хранилища значения, двоичных данных, картинки, строки)
// Алгоритм расчета размера данных взят отсюда http://kb.mista.ru/article.php?id=386
//
// Параметры
// <Данные> - данные типа хранилище значений, двоичные данные, картинка, строка
//
// Возвращаемое значение:
// РазмерДанных - числовое значение в байтах
//
Функция ПолучитьРазмерДанных(Знач Данные)
Если ТипЗнч(Данные) = Тип("ХранилищеЗначения") Тогда
ДанныеХранилища = Данные.Получить();
Если ДанныеХранилища = Неопределено Тогда
Возврат 0;
КонецЕсли;
Если ТипЗнч(ДанныеХранилища) = Тип("Картинка") Тогда
ДанныеХранилища = ДанныеХранилища.ПолучитьДвоичныеДанные();
ИначеЕсли ТипЗнч(ДанныеХранилища) = Тип("Строка") Тогда
Возврат СтрДлина(ДанныеХранилища);
КонецЕсли;
ДанныеBase64 = Base64Строка(ДанныеХранилища);
ИначеЕсли ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ДанныеBase64 = Base64Строка(Данные);
ИначеЕсли ТипЗнч(Данные) = Тип("Картинка") Тогда
ДанныеBase64 = Base64Строка(Данные.ПолучитьДвоичныеДанные());
Иначе
Возврат СтрДлина(XMLСтрока(Данные));
КонецЕсли;
//Base64 - специальный формат хранения данных в текстовом формате
РазмерДанных = СтрДлина(ДанныеBase64) - ?(Прав(ДанныеBase64, 1) = "=", 1, 0) - ?(Прав(ДанныеBase64, 2) = "==", 1, 0);
РазмерДанных = Цел(РазмерДанных / 4 * 3); // в байтах
Возврат РазмерДанных;
КонецФункции