Двоичные данные и кодировка Base64 в 1С 8.Х
Считать данные из двоичного файла можно при помощи функции ДвоичныеДанные(ИмяФайла). Например:
ДД = ДвоичныеДанные(ИмяФайла);
Здесть ДД - специальный объект, который называется "двоичные данные".
В языке 1С есть функция, которая преобразует двоичные данные в строку Base64Строка(ДвоичныеДанные). Например:
Строка64 = Base64Строка(ДвоичныеДанные);
Здесь Строка64 - обычная строка, с которой можно делать все, что угодно. 
В конце статьи приведена функция Преобразовать64(Строка64 = неопределено, Массив64 = неопределено),  которая преобразовывает строку в массив байтов, и обратно. 
Для того, чтобы получить массив байтов из строки, вызываем ее так:
Массив64 = Преобразовать64(Строка64 , );
Для обратного преобразования вызываем так:
Строка64 = Преобразовать64( , Массив64 );
Про алгоритм кодировки Base64 см.: 
http://ru.wikipedia.org/wiki/Base64
http://habrahabr.ru/post/190054/
Преобразовать строку в двоичные данные можно при помощи функции Base64Значение(Строка64).
Все указанные функции, кроме Преобразовать64, являются встроенными функциям платформы.
Далее листинг функции Преобразовать64.
&НаСервере
Функция Преобразовать64(Строка64 = неопределено, Массив64 = неопределено)
 Таб64 = Новый ТаблицаЗначений;
 Таб64.Колонки.Добавить("Код");
 Таб64.Колонки.Добавить("Символ");
 Нпп = 0;
 Для Код = КодСимвола("A") По КодСимвола("Z") Цикл
  стр = Таб64.Добавить();
  стр.Код = Нпп;
  стр.Символ = Символ(Код);
  Нпп = Нпп + 1;
 КонецЦикла;
 Для Код = КодСимвола("a") По КодСимвола("z") Цикл
  стр = Таб64.Добавить();
  стр.Код = Нпп;
  стр.Символ = Символ(Код);
  Нпп = Нпп + 1;
 КонецЦикла;
 стр = Таб64.Добавить();
 стр.Код = Нпп;
 стр.Символ = "0";
 Нпп = Нпп + 1;
 Для Код = 1 По 9 Цикл
  стр = Таб64.Добавить();
  стр.Код = Нпп;
  стр.Символ = Формат(Код,"ЧЦ=1; ЧДЦ=0");
  Нпп = Нпп + 1;
 КонецЦикла;
 стр = Таб64.Добавить();
 стр.Код = Нпп;
 стр.Символ = "+";
 Нпп = Нпп + 1;
 стр = Таб64.Добавить();
 стр.Код = Нпп;
 стр.Символ = "/";
 
 Если Массив64 = неопределено Тогда 
  Если Строка64 = неопределено Тогда
   Сообщить("неверный вызов функции");
   Возврат неопределено;
  КонецЕсли;
  //Уберем переносы строк
  Строка64 = СтрЗаменить(Строка64, Символ(10), "");
  Строка64 = СтрЗаменить(Строка64, Символ(13), "");
  
  //преобразовываем строку в массив
  Если СтрДлина(Строка64) % 4 <> 0 Тогда
   Сообщить("длина строки на входе должна быть кратна 4"); 
   Сообщить(СтрДлина(Строка64)); 
   Возврат неопределено;
  КонецЕсли;
  Кол4 = Цел(СтрДлина(Строка64) / 4);
  РазмерМ = Кол4 * 3;
  Если Прав(Строка64, 2) = "==" Тогда
   РазмерМ = РазмерМ - 2;
  ИначеЕсли Прав(Строка64, 1) = "=" Тогда
   РазмерМ = РазмерМ - 1;
  КонецЕсли;   
  Массив64 = Новый Массив(РазмерМ);
  Для А = 1 По Кол4 Цикл
   Число3 = 0;
   Для Б = 1 По 4 Цикл
    Буква1 = Сред(Строка64, (А-1)*4 + Б, 1); 
    Если Буква1 = "=" Тогда
     Код4 = 0;
    Иначе
     стрН = Таб64.Найти(Буква1, "Символ");
     Если стрН = Неопределено Тогда
      Сообщить("ошибка при поиске "+ КодСимвола(Буква1)); 
     Иначе 
      Код4 = стрН.Код;
     КонецЕсли;
    КонецЕсли;
    Число3 = Число3 * 64 + Код4;
   КонецЦикла;
   Ост = Число3 % 256;
   Индекс = (А-1)*3 + 2;
   Если Индекс <= РазмерМ - 1 Тогда
    Массив64[Индекс] = Ост;
   КонецЕсли;
   Число3 = (Число3 - Ост) / 256;
   Ост = Число3 % 256;
   Индекс = (А-1)*3 + 1;
   Если Индекс <= РазмерМ - 1 Тогда
    Массив64[Индекс] = Ост;
   КонецЕсли;
   Число3 = (Число3 - Ост) / 256;
   Ост = Число3 % 256;
   Массив64[(А-1)*3 + 0] = Ост;
  КонецЦикла;
  Возврат Массив64;
 Иначе //Преобразовываем массив в строку
  Строка64 = "";
  Кол3 = Цел(Массив64.Количество() / 3);
  Если Массив64.Количество() % 3 <> 0 Тогда
   Кол3 = Кол3 + 1;
  КонецЕсли;
  Для А = 1 По Кол3 Цикл
   Число3 = Массив64[(А-1)*3]; 
   Если (А-1)*3+1 <= Массив64.ВГраница() Тогда
    Код3 = Массив64[(А-1)*3+1];
   Иначе
    Код3 = 0;
   КонецЕсли;
   Число3 = Число3*256 + Код3;
   Если (А-1)*3+2 <= Массив64.ВГраница() Тогда
    Код3 = Массив64[(А-1)*3+2];
   Иначе
    Код3 = 0;
   КонецЕсли;
   Число3 = Число3*256 + Код3;
   
   Ост4 = Число3 % 64;
   Число3 = (Число3 - Ост4) / 64;
   Ост3 = Число3 % 64;
   Число3 = (Число3 - Ост3) / 64;
   Ост2 = Число3 % 64;
   Число3 = (Число3 - Ост2) / 64;
   Ост1 = Число3 % 64;
   Число3 = (Число3 - Ост1) / 64;
   стрН = Таб64.Найти(Ост1, "Код");
   Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
   Иначе
    Строка64 = Строка64 + стрН.Символ;
   КонецЕсли;
   стрН = Таб64.Найти(Ост2, "Код");
   Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
   Иначе
    Строка64 = Строка64 + стрН.Символ;
   КонецЕсли;
   стрН = Таб64.Найти(Ост3, "Код");
   Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
   Иначе
    Строка64 = Строка64 + стрН.Символ;
   КонецЕсли;
   стрН = Таб64.Найти(Ост4, "Код");
   Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
   Иначе
    Строка64 = Строка64 + стрН.Символ;
   КонецЕсли;
  КонецЦикла;
  //Если количество символов не делится на 3, то на конце должны быть
  //знаки "="
  Если Массив64.Количество() % 3 = 1 Тогда
   Строка64 = Лев(Строка64, СтрДлина(Строка64)-2)+ "=="; 
  ИначеЕсли Массив64.Количество() % 3 = 2 Тогда
   Строка64 = Лев(Строка64, СтрДлина(Строка64)-1)+ "="; 
  КонецЕсли;
  Возврат Строка64;
 КонецЕсли;
КонецФункции                            Вступайте в нашу телеграмм-группу Инфостарт
