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

07.09.14

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

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

Скачать файлы

Наименование Файл Версия Размер
Base64
.epf 7,72Kb
140
.epf 1.001 7,72Kb 140 Скачать
Описание 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

См. также

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.02.2024    4309    atdonya    22    

41

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    3880    ke.92@mail.ru    16    

60

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8555    YA_418728146    6    

139

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2019    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16010    131    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7196    quazare    8    

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

Может есть некая тайная суть, которую я не до конца понимаю?
2. cool.vlad4 2 08.09.14 12:51 Сейчас в теме
(1) DitriX, такое часто бывает нужно для веба. например получить в виде base64 текста. да и много где такое бывает нужно.
mnemchinov; +1 Ответить
3. mnemchinov 107 08.09.14 12:51 Сейчас в теме
(2) cool.vlad4, Присоединяюсь к ответу. Пишу в последнее время много всяких обменов с различными вэб серверами. Плюс, однозначно.
4. Xershi 1473 23.11.15 17:23 Сейчас в теме
Вся соль обработки в том что она заточена для обмена русского текста(utf-8) по веб?
5. mxm2 1255 24.11.15 13:19 Сейчас в теме
(4) Xershi, имитация Base64Строка и Base64Значение без файловых операций.
6. Xershi 1473 24.11.15 13:24 Сейчас в теме
(5) так они и не работают с файлами, а с двоичными данными и строкой в Base64.
7. tarassov 111 29.03.16 15:25 Сейчас в теме
(6) Xershi,
Не понял. Каким образом ДвоичныеДанные можно получить из строки, не используя временный файл?
8. Xershi 1473 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 288 02.08.18 12:18 Сейчас в теме
А кстати галочка Стандарт зачем нужна?
13. mxm2 1255 02.08.18 15:25 Сейчас в теме
(12) "Стандарт" - делает тоже самое через файл (стандартным образом), добавлена была для тестирования правильности преобразования
14. hansel 18 18.11.19 21:35 Сейчас в теме
Если вдруг кому поможет:
Результат = ПолучитьBase64СтрокуИзДвоичныхДанных( ПолучитьДвоичныеДанныеИзСтроки("Текстовая строка") );
15. starik-2005 3031 18.11.19 22:36 Сейчас в теме
16. hansel 18 19.11.19 09:09 Сейчас в теме
(15) Да, я видел тот пост. Там написано
решил я все-таки декодировать base64-строку в текст и не нашел соответствующего метода платформы. В двоичные данные - пожалуйста, а в текст - нет

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

Обратно из Base64 получить строку можно так:
ТекстовоеЗначение = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзBase64Строки(<Ba se64>) , <КодировкаТекста>)
17. starik-2005 3031 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 3031 11.12.19 16:30 Сейчас в теме
(18)
Base64String = "BASE64 ENCODED STRING";
Data = GetStringFromBinaryData(
                 GetBinaryDataFromBase64String( Base64String )
            );
diziburda1; +1 Ответить
Оставьте свое сообщение