Имя: Пароль:
1C
1C 7.7
v7: Base64Значение в 7-ке
0 JetBrain
 
02.06.16
11:21
Добрый день.
  столкнулся с отправкой бинарника из 1с 7.7, на 8-ке задача решается одной строкой как быть с семеркой?
  в ссылке пример о чем идет речь http://howknow1c.ru/jazyk-1s/dvoichnyedannye-1c-base64stroka-1c-base64znachenie-1c.html
1 Mikeware
 
02.06.16
11:37
(0) было что-то в компонентах. Вроде в диалмэйле
2 Serginio1
 
02.06.16
11:39
3 Serginio1
 
02.06.16
11:49
2+
врап=новый COMОбъект("NetObjectToIDispatch45");
врап.УстЭтоСемерка();
File =Врап.ПолучитьТип("System.IO.File");
Convert  =Врап.ПолучитьТип("System.Convert");
bytes = File.ReadAllBytes(ПутьКФайлу);
данные = Convert.ToBase64String(bytes);
4 Serginio1
 
02.06.16
11:53
Ну и обратная операция
bytes = Convert.FromBase64String(b64Str);
File.WriteAllBytes(ПутьКФайлу, bytes);
5 JetBrain
 
02.06.16
11:59
(1) Диалмайл.длл делает строку xbas64, значения xbase64 в шестнадцатиричном формате я не увидел в нем.
6 Ёпрст
 
02.06.16
12:05
Тут еще посмотри
http://www.1cpp.ru/docum/html/BinaryData.html

ЗЫ: не помню уже, где-то код валялся на чистом 1с и без вк
7 Остап Сулейманович
 
02.06.16
12:08
(0) Вот здесь : http://forum.script-coding.com/viewtopic.php?id=2848 на любой вкус. DOMDocument, JSBin.BinaryOps, CAPICOM, куча сторонних костылей, алгоритмы прямого преобразования...
8 JetBrain
 
02.06.16
12:17
Как и в случае с диалмайл, "костылики" делают base64text, а  не base64binary тип данных, почувствуйте разницу :) Выход нужен в HEX16.
9 Туц
 
02.06.16
12:30
//******************************************************************************
Функция глКодировать(Стр, Кодировка)
    ЦДО=СоздатьОбъект("CDO.Message");
    БодиПарт=ЦДО.BodyPart;
    Поля=БодиПарт.Fields;
    Поле=Поля.Item("urn:schemas:mailheader:content-type");
    Поле.Value="text/plain; charset=""windows-1251""";
    Поля.Update();
    Стрим = БодиПарт.GetDecodedContentStream();
    Стрим.charset = "windows-1251";
    Стрим.WriteText(Стр);
    Стрим.Flush();
    БодиПарт.ContentTransferEncoding = Кодировка;
    Стрим=БодиПарт.GetEncodedContentStream();
    Возврат Стрим.ReadText();
КонецФункции

//******************************************************************************
Функция глДекодировать(Стр, Кодировка)
    ЦДО=СоздатьОбъект("CDO.Message");
    БодиПарт=ЦДО.BodyPart;
    БодиПарт.ContentTransferEncoding = Кодировка;
    Стрим=БодиПарт.GetEncodedContentStream();
    Поля=БодиПарт.Fields;
    Поле=Поля.Item("urn:schemas:mailheader:content-type");
    Поле.Value="text/plain; charset=""windows-1251""";
    Поля.Update();
    Стрим.WriteText(Стр);
    Стрим.Flush();
    Стрим = БодиПарт.GetDecodedContentStream();
    Стрим.charset = "windows-1251";
    Возврат Стрим.ReadText();
КонецФункции

Строка64 = глКодировать(СтрокаДля64,"base64");
10 JetBrain
 
02.06.16
12:31
...а хотя вот тут есть пример, полученный string еще в hex конвертнуть, в два этапа но все  же:

'Конвертация String в Byte()
Function strToBin(text)
    With document.createElement("xml").createElement("t")
        .dataType = "bin.hex"
        .text = strTohex(text)
        strToBin = .nodeTypedValue
    End With
End Function
Программист всегда исправляет последнюю ошибку.