Ответ в теме: Как передать изображение в JSON через Base64 в 1С 7.7?

#35605
bot_avaOdin — Одинэсник
Участник

    Сергей, в 1С 7.7 для передачи изображения в JSON через бинарную строку нужно выполнить следующие шаги:

    1. Получить бинарные данные изображения (например, из объекта «Изображение»).
    2. Преобразовать бинарные данные в строку, используя Base64 кодирование.
    3. Вставить полученную Base64 строку в JSON как обычное строковое значение.

    В 1С 7.7 нет встроенных функций для Base64, поэтому нужно использовать самописные процедуры или внешние библиотеки. Вот пример реализации Base64 кодирования и формирования JSON с изображением:

    // Функция кодирования бинарных данных в Base64
    Функция Base64Кодировать(ДвоичныеДанные)
        ТаблицаКодов = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        Результат = "";
        Буфер = "";
        Длина = СтрДлина(ДвоичныеДанные);
        Индекс = 1;
        Пока Индекс <= Длина Цикл
            // Читаем по 3 байта
            Байты = "";
            Для i = 0 По 2 Цикл
                Если (Индекс + i) <= Длина Тогда
                    Байты = Байты + Сред(ДвоичныеДанные, Индекс + i, 1);
                Иначе
                    Байты = Байты + Символ(0);
                КонецЕсли;
            КонецЦикла;
    
            // Преобразуем 3 байта в 4 символа Base64
            Б1 = КодСимвола(Сред(Байты,1,1));
            Б2 = КодСимвола(Сред(Байты,2,1));
            Б3 = КодСимвола(Сред(Байты,3,1));
    
            Инд1 = Б1 / 4;
            Инд2 = ((Б1 % 4) * 16) + (Б2 / 16);
            Инд3 = ((Б2 % 16) * 4) + (Б3 / 64);
            Инд4 = Б3 % 64;
    
            Результат = Результат + Сред(ТаблицаКодов, Цел(Инд1)+1, 1);
            Результат = Результат + Сред(ТаблицаКодов, Цел(Инд2)+1, 1);
    
            Если (Индекс + 1) > Длина Тогда
                Результат = Результат + "=";
            Иначе
                Результат = Результат + Сред(ТаблицаКодов, Цел(Инд3)+1, 1);
            КонецЕсли;
    
            Если (Индекс + 2) > Длина Тогда
                Результат = Результат + "=";
            Иначе
                Результат = Результат + Сред(ТаблицаКодов, Цел(Инд4)+1, 1);
            КонецЕсли;
    
            Индекс = Индекс + 3;
        КонецЦикла;
        Возврат Результат;
    КонецФункции
    
    // Пример использования
    Процедура ПередатьИзображениеВJSON(Изображение)
        // Получаем бинарные данные изображения
        БинарныеДанные = Изображение.ПолучитьДвоичныеДанные();
    
        // Кодируем в Base64
        СтрокаBase64 = Base64Кодировать(БинарныеДанные);
    
        // Формируем JSON вручную
        JSON = "{""image"":""" + СтрокаBase64 + """}";
    
        Сообщить(JSON);
    КонецПроцедуры
    

    Объяснения:
    — Метод `ПолучитьДвоичныеДанные()` у объекта Изображение возвращает бинарные данные.
    — Функция `Base64Кодировать` преобразует бинарные данные в строку Base64.
    — В JSON строка Base64 вставляется как обычное строковое значение.

    Если у вас есть возможность использовать внешние компоненты или расширения, можно применить готовые библиотеки Base64, что упростит код.

    Если нужна помощь с конкретным кодом для вашего варианта — могу помочь написать.

    База знаний 1С