Base64 преобразование туда и обратно без файловых операций (Управляемое приложение)

07.09.14

Разработка - Универсальные функции

Если очень хочется, а сохранять данные в бинарном виде (в файл) нет возможности, то это реализация прямого и обратного преобразования Base64 с поддержкой кириллицы на utf-8, без использования внешних объектов.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Base64
.epf 7,72Kb ver:1.001
145 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
Описание Base64: https://ru.wikipedia.org/wiki/Base64
Соответствие utf-8 и unicode: https://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4 (подпункт UTF-8)

В реализации две функции СтрокаВСтроку64 и Строка64ВСтроку, которые аналогичны Base64Строка и Base64Значение, работающим с двоичными данными.

Похожая публикация, но описывающая работу с массивом байт: Двоичные данные и кодировка Base64 в 1С 8.Х


 

Вступайте в нашу телеграмм-группу Инфостарт

Base64 utf-8 unicode

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    3382    Abysswalker    8    

45

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    6293    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    48568    dimanich70    83    

169

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7281    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    60701    atdonya    31    

69

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9064    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2113 08.09.14 14:43 Сейчас в теме
А зачем? Я действительно не до конца понимаю.
base64 было нужно для передачи двоичных данных при помощи текста.
А тут вы кодируете текст в текст. Смысл?

Может есть некая тайная суть, которую я не до конца понимаю?
2. cool.vlad4 2 08.09.14 12:51 Сейчас в теме
(1) DitriX, такое часто бывает нужно для веба. например получить в виде base64 текста. да и много где такое бывает нужно.
mnemchinov; +1 Ответить
3. mnemchinov 110 08.09.14 12:51 Сейчас в теме
(2) cool.vlad4, Присоединяюсь к ответу. Пишу в последнее время много всяких обменов с различными вэб серверами. Плюс, однозначно.
4. Xershi 1535 23.11.15 17:23 Сейчас в теме
Вся соль обработки в том что она заточена для обмена русского текста(utf-8) по веб?
5. mxm2 1284 24.11.15 13:19 Сейчас в теме
(4) Xershi, имитация Base64Строка и Base64Значение без файловых операций.
6. Xershi 1535 24.11.15 13:24 Сейчас в теме
(5) так они и не работают с файлами, а с двоичными данными и строкой в Base64.
7. tarassov 113 29.03.16 15:25 Сейчас в теме
(6) Xershi,
Не понял. Каким образом ДвоичныеДанные можно получить из строки, не используя временный файл?
8. Xershi 1535 29.03.16 15:28 Сейчас в теме
(7) tarassov,
Глобальный контекст (Global context)
Base64Значение (Base64Value)
Синтаксис:

Base64Значение(<Строка>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Строка, закодированная по алгоритму base64.
Возвращаемое значение:

Тип: ДвоичныеДанные.


Описание:

Получает из строки закодированной по алгоритму base64 двоичные данные.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Показать

Думаю понятно, что тут файл не используется.
А вот уже:
ДвоичныеДанные (BinaryData)
Методы:

Записать (Write)
Размер (Size)

Конструкторы:

На основании файла

Описание:

Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения.
Хранимые данные могут быть записаны в файл.
Показать
9. AlexanderKai 15.07.16 11:59 Сейчас в теме
(6) Xershi,
А двоичные данные только на основании файла, что как бы намекает.
tarassov; +1 Ответить
10. v3rter 15.07.16 12:08 Сейчас в теме
Зачем это нужно? Ловите смайлик )

MIME-Version: 1.0
Content-Type: application/octet-stream; name="Smiley.svg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Smiley.svg"

iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c­6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAGYktHRAD/AP8A/6C9p5MA­AAqjSURBVGhD3Vpb
bBXXFd137r2+xgEnIDCY0MYiUkNAKUW4+AUB8RKhqaqqyld/UL4JH1AQqhTy­lXxACslnWkX5iT8q
oiYNNkZgQiCAwU6DTVEeH+QFJuXRxsY2tq/tO13rnNmeM+Nr+9pYqtQl7bvP­nOdas89jZuyED8j/
AWZMyMiISEfHNfH9dunvb5dE4p4MDX2N6/+gdAjlxZJMPo7ruZLJrBHP2yDV­1StRz7Z/WDy0kLa2
czI8fArkLsny5WnJ5XyQy6FkGH7IeN8fgB9EWR/S/bAeXPdLa6tINrtR0uld­snnzb5A3fUxLSDYr
0t7+Pu7qh7JypQeCHnJ93HUUSBYCsiDL9KC5pvd9a5rO5QYllRqA7zVR+fhj­wfVB2bJlLyKHalPE
lIVcvnxGSko+kKefzoCQh2jonbcCLFGmrQglr0YBIgOmjhXE9CDIM5IiFy6A­VOI9CPod6hWOgoV0
dY3I1auHpKaGRIpw90dGBagIFaJRsGKikbAibJpTjsKsz8GLiQYj3tT0c9m+­vUPmzkWTAlCQkG++
uSkDA3+WZcvmYxDeOaxsLOB4JDQKYdqujdCiIuhViO8PIy3GyKioSOTiRZFF­i27JihXlaDsxJhVy
9eoVmT//ODpciGmkC5kCKISEQ+IaAb2OCtF0PjH0Q6NC1FIpkS+/RKvB81Jb­W4e244OrdFxQRHn5
SVm48CcQUQxyGVgRFnkalgosOWqJhDdquEcw9W6a5QnU5zRKmKkU+qhh+clT­T4k8+uharB2EZwKM
K+T69e+lrKxJ5s0rx90heYqgGNwmScG7xONkicm8HZrt84mwQu359MQTgg2m­Tq5d+8G0yYe8Qu7f
97Em/gIhZRDBKiRdjM7T8Lz7HixhSFhgREMwSjLqOYPVs55eW/BexEWoUQwj­c+vWYunuDhrEEPbk
4MqVg1hgC3Ayc7AcOubasIdbIsE089VKYOnAM1pKciJPuENrXlQE03rNnWzd­OpHjx1cFNaMYI6St
7azU1Q1ggbETbrHcobigB5DmDoWJC0EUKDJHdu8+irw/wg7gjPkeeRRDwvmM­oE/IpUv9aHMb1i17
9vAmRcW4IjRaFLNtW7s0N38Q1AwREULymcx72EGK0NgSju5K3Hl4zTJPGhou­yJEjOMECVFf/Fb8s
Iyg0LoR5RA7n0Z0gLXL4cE4aG1keIi6C10ynEfxc7rdmI3AREdLe/jdMqWJU­ZK3wsPM8VwS3UHpP
du58Hz6KAwcu4RcjG9JqKsKSffnlfxvvYufOIOHAjYwa10sdduLm5kNBLQsU­hUgmP0RFkrBCPE/P
CpK3Z0AoZFC++27symts5PRS4vnMR50++Ci+/TZIxKBRUSFM8+QbHt4X1LAY­FdLaeg4PgEkTDU4n
z7Nkw4Ot31xbG8JGcA9+LDo7SZKEubZcC8V0dsbmRYD4dCFUBL2mGZUNGxiV­hqCWI2Rk5BSUeuaE
pfGuh5FQC0/ndHq0aQSlpdzB7A4XFRJaaSkY5QFP8nxwo6HGqAwNHQ5qBEJ4­J9LpSyjk1mqjoSLG
TitN2w7jqKmZh1/WoRA1V8gwHjcy8FGQ6HhQ8nExyeSZoEYgpKOjQ555hk+0­9gFQn4VCETqtKEAF
9cj+/WP39Fde+Rl+WccV4ooZxoYwCz6K/fuDxDhQEeo5vaqrRc6d+8yW8yeX­uwrj/A2nlJolxfWi
AtR65LXXqrFdc3OwePHFn8rSpaVIsZx96RSL2pNPerJjB6egRXGxyKuvBhcT­wI0GjdPL95tNmRGS
zXagIAfTSMTXR76I0N/Ho8zv5e23V8vp07XwlSZvIhHWsvLOO2ks1gTaoHd2­PwmUvKYJRieb/cSk
zWN8S8sOWbXqBkTMQmEKc0+fp3i3qZUtuaXSM3IEp4nuTgQJUpyKUGM08xlv­BssLByfNEJpwWtGI
lpZVsnXrZxoRbuIkYiPiekvOjQhJaFTUHgTGsrgITbsR0bypw51WjMjIyNcm­3wgZGbmLXx3YkuNp
HhJ2ybvnSdxYzzUlHDeKmR5cEYTv20M5uAx3KiVl0yRPi0dE02H9MF/TrsWF­6HScOQRCZsPsa6cu
+JC0S17z3TLNpylxmpLWtPrpR4NgNBgVs8kCnveY9fxJJvkWyEcLK8IK4cBK­lBFRASTDvLgI19hW
vSuC9nCwW24oxvOWmnwjJJfjacwvgGE0+GHAkqEPidXV/ROehNxyejVXhGuF­i6itDRIxUIBC04nE
48YbIalUJcT0OEI0MkqSERmW5567LvX1C5HWHcoV6ZqS1/TUptO774ps3x5c­BNBIaJpgRNLptSZt
hHjeeigLI6KfaeyhSCIj8tJLnXjiTElFBXuhgHwi8l1PfWEvxWx59lmRXbuC­DEB3K9eY53lbTbkR
Ulu7Cq+eXCv6nSkLpYPy1lvdsnnzv6Sq6gYOnj65e1enlEbKTeu1imFdip4e­7uJE4OfTqiqRTZsE
XPTt0Irge0pLCwX/wjbgyU40NW3y798Xv7u72O/tLfEHBmbD5qCkFDYX9hhZ­+ffuzQ7y6Etgs2AZ
WArGBwV2+XAGEWYsNw+v4eAj4EaOYrgeP74JZRYmIkQms9t4nVr8+ud59tus­CHe0fjl4MCXz5/ci
HY8KPdfB9CPgYsECkUPOmyyjoLsURBkjSkr+YBNEIMigoUH8Hqx5Ku7rs3cg­i7MSHaDUWlmZ+KWl
4fVM25w54i9aFF5zbHIgF3IiN3I8dozlIUYjYnEIUbCKqV7vgD6gEbdv8wOe­yCOPBBkziJISvBz0
iPzgfFDk2HE+5Oh5fwpqBAgEGQwN+f6JE2FUOB/xiG3mJzpEjdDYlHbxYjR/­Onb+fNifm88xOTY5
6Nogt6Ym8YeHUcVBJCJ8Z04m/24+hKEjcwf0jtDzWsE8fpPl4VWJ15CbN4OC­KeDGDZHVq0XW4iio
qLB9KvKNzTS/vaVSx8yuFUEgKIL6+tX+gwfi//ijvQO6XvAuMCYyb7wR3s3F­i8U/ckR8iIrUcQ3k
TZ3y8rDdm29G63AMjqXrghzIhZzq6ytRZyzYcgy6uvAC2Ww76eqyHbETXfxx­MbR9+0JiakVF4i9Z
Yo3peDnbxPth37q4OSbHJgdyIafublTLg3H/0PPFF3ekr2+hLFtmQ6ufLdWr­cVt08emnIkeP8qOA
yLVrIpjbBtiNZMUKe2K/8IKdji7IgtNHjWOq55j8g8/s2XfAB3tzHkz4F6uW­llYQqDLz1xUTF5JP
UKHg6HERajomv0L29rZKdfUvg1ZjMemf3igmk6kyf5/g96+JhLg2EZS8K0K9­a9x8vvqKC7xNampi
IYxhUiHE55/fls7ORebjMV/+lbwrwE0T6uPQ0eIiNK3X/GMon7UWL74ty5eX­2UYToCAhBBadNDZW
ypYt/0CEbNjjAlwj1Ct0JCXumgrgVOIWe/JkpTz/fJtZW4WgYCGK06cbcM78­Wtavt4OroMlEKHQ0
FaCm6+/sWT7lNuCp+1e2YoGYshCC5E+ceB0E9pqv4uyBxLmGJhKjIyl5rgFt­y3/hSCRex8vbHiNo
qpiWEBcffdSECB0CqTOyZo0lptMtH3QKsfzyZd6UjVgPe2Xjxm1BjenhoYW4­uHChHcROycDAJyB8
A4L44a/LFspc5FUgb4kUF6/DVNqCzSN4KZoBzKiQ/x1E/gt3xpzpi/70uAAA­AABJRU5ErkJggg==

Это я для примера "зачем". Подобным способом кодировались бинарные файлы в доинтернетовских сетях.
11. dimasts 22 30.05.17 06:31 Сейчас в теме
Ошибка в тексте, правильно будет вот так:

&НаКлиенте
Процедура ПреобразоватьИзBase64(Команда)
	Начало = ТекущаяДата();
	Если Стандарт Тогда
		ПреобразованныйТекст = Строка64ВСтрокуСтандарт(ИсходныйТекст);
	Иначе
		ПреобразованныйТекст = Строка64ВСтроку(ИсходныйТекст);
	КонецЕсли;	
	Время = "" + (ТекущаяДата() - Начало) + " сек.";
КонецПроцедуры
Показать
12. METAL 305 02.08.18 12:18 Сейчас в теме
А кстати галочка Стандарт зачем нужна?
13. mxm2 1284 02.08.18 15:25 Сейчас в теме
(12) "Стандарт" - делает тоже самое через файл (стандартным образом), добавлена была для тестирования правильности преобразования
14. hansel 18 18.11.19 21:35 Сейчас в теме
Если вдруг кому поможет:
Результат = ПолучитьBase64СтрокуИзДвоичныхДанных( ПолучитьДвоичныеДанныеИзСтроки("Текстовая строка") );
15. starik-2005 3207 18.11.19 22:36 Сейчас в теме
16. hansel 18 19.11.19 09:09 Сейчас в теме
(15) Да, я видел тот пост. Там написано
решил я все-таки декодировать base64-строку в текст и не нашел соответствующего метода платформы. В двоичные данные - пожалуйста, а в текст - нет

При этом сейчас уже есть штатные методы платформы для этих преобразований. Поэтому и оставил заметку на будущее.

Обратно из Base64 получить строку можно так:
ТекстовоеЗначение = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзBase64Строки(<Ba se64>) , <КодировкаТекста>)
17. starik-2005 3207 19.11.19 11:15 Сейчас в теме
(16)
При этом сейчас уже есть штатные методы платформы для этих преобразований.
Точно. Вот даже тут поотстал от 1С-ных фичей )))
18. diziburda1 11.12.19 10:40 Сейчас в теме
Hello How can i decode base64 i didnt found english document or function google translate is terrible :D
19. starik-2005 3207 11.12.19 16:30 Сейчас в теме
(18)
Base64String = "BASE64 ENCODED STRING";
Data = GetStringFromBinaryData(
                 GetBinaryDataFromBase64String( Base64String )
            );
diziburda1; +1 Ответить
20. KPOXOTO3ABP 7 03.09.25 05:13 Сейчас в теме
Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ТекстДляКодирования, КодировкаТекста.UTF8))
VyacheslavShilov; +1 Ответить
21. mxm2 1284 03.09.25 08:53 Сейчас в теме
(20) Да, теперь все просто )))... а 10 лет назад платформа такого не умела )))
Для отправки сообщения требуется регистрация/авторизация