Каталог решений - Функция для определения размера данных для 1С: Предприятия 8.Х

Функция для определения размера данных для 1С: Предприятия 8.Х

Функция для определения размера данных для 1С: Предприятия 8.Х

В наличии

Универсальная функция, позволяющая определить размер данных (хранилища значения, двоичных данных, картинки, строки)

Категория:

Описание

Разработана в ходе реализации проекта по взаимодействию  с веб-сервером для контроля размера передаваемых данных.

Источник алгоритма расчёта: Как рассчитать размер данных помещенных в объект ХранилищеЗначения.

// Универсальная функция для определения размера данных (хранилища значения, двоичных данных, картинки, строки)
// Алгоритм расчета размера данных взят отсюда 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); // в байтах

    Возврат РазмерДанных;

КонецФункции

has been added to your cart:
Оформление заказа