Преобразовать из двоичных данных в документ doc

1. GennadiyN 06.05.20 16:01 Сейчас в теме
Добрый день!
Подскажите пожалуйста, из api приходят двоичные данные, нужно сохранить в документ Word

мой код:

        Результат = ПолучитьЗаказ();
	
	ИмяФайла = ПолучитьИмяВременногоФайла(".doc");         
	ДвоичныеДанныеФайла = Base64Значение(Результат);

	ДвоичныеДанныеФайла.Записать(ИмяФайла);
	
Показать


Не записывает(
По теме из базы знаний
Найденные решения
24. GennadiyN 06.05.20 22:59 Сейчас в теме
Всем спасибо!
Вообщем проблема была в неправильном заполненном запросе к api, добавил верные индификаторы и получилось
получил верный двоичный код и записал его в созданный файл формата "doc"

Док:
&НаКлиенте
Процедура ПолучитьЗаказ(Команда)
	Результат = ПолучитьЗаказыНажатие3();
	
	ИмяФайла = ПолучитьИмяВременногоФайла(".doc");         
	ДвоичныеДанныеФайла = Base64Значение(Результат);
	
	ДвоичныеДанныеФайла.Записать(ИмяФайла);

КонецПроцедуры

Показать
ipoloskov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. platonov.e 158 06.05.20 16:15 Сейчас в теме
На Клиенте или на сервере записываете?
3. GennadiyN 06.05.20 16:47 Сейчас в теме
4. ipoloskov 162 06.05.20 16:50 Сейчас в теме
Что возвращает ПолучитьЗаказ()? Покажите эту функцию (можно только концовку)
5. GennadiyN 06.05.20 17:08 Сейчас в теме
(4)
ПолучитьЗаказ

Возвращает:
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg­VHJhbnNpdGlvbmFsLy9FTi......
7. GennadiyN 06.05.20 17:12 Сейчас в теме
(5) ДвоичныеДанныеФайла Возвращает:
3C 21 44 4F 43 54 59 50 45 20 48 54 4D 4C 20 50 5.....
8. user856012 13 06.05.20 17:24 Сейчас в теме
(7)
3C 21 44 4F 43 54 59 50 45 20 48 54 4D 4C 20 50 5.....
Это каким-то образом закодированный готовый документ Word? Или некие данные, на основании которых надо создать и заполнить документ Word по известному только вам шаблону?
9. GennadiyN 06.05.20 17:27 Сейчас в теме
(8) Это закодированный готовый документ Word
14. user856012 13 06.05.20 17:39 Сейчас в теме
(5)
Возвращает:
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg­­VHJhbnNpdGlvbmFsLy9FTi......
Все понятно: это уже кодировка Base64, а вы вместо того, чтобы ее раскодировать в двоичные данные, еще раз кодируете Base64. Получается, ясное дело, белиберда.

Откуда я это узнал? Скармливаем этот текст здесь: http://base64.ru в режиме "Base64 -> Текст" и получаем:
<!DO CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
16. ipoloskov 162 06.05.20 17:44 Сейчас в теме
(14) он не кодирует, они раскодирует из Base64
18. user856012 13 06.05.20 17:46 Сейчас в теме
(16)
он не кодирует, они раскодирует из Base64
Верно, ошибся, с Base64 опыта мало.
(17)
а как получается тогда записать в ворд?
Может быть, вот этот способ вас выручит: https://forum.mista.ru/topic.php?id=716503
20. GennadiyN 06.05.20 17:53 Сейчас в теме
Скармливаем этот текст здесь: http://base64.ru

Получил текст:

<!DO CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<ht ml xmlns:v="urn:s chemas-microsoft-com:vml"
xmlns:o="urn:s chemas-microsoft-com:office:office"
xmlns:w="urn:s chemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<met a content="text/html; charset=UTF-8" http-equiv="Content-Type">
<met a name=ProgId content=Word.Document>
<met a name=Generator content="Microsoft Word 11">
<met a name=Originator content="Microsoft Word 11">
<title>Travel Booking Form</title>
<!--[if gte mso 9]><xm l>
..........

(18) Спасибо за ссылку, попробовал не получилось
17. GennadiyN 06.05.20 17:44 Сейчас в теме
(14) ну да что то лишний раз кодирую(

а как получается тогда записать в ворд?
21. ipoloskov 162 06.05.20 17:55 Сейчас в теме
(14) насколько я понимаю, это не Word-овский файл. Какой-то html?
22. user856012 13 06.05.20 17:59 Сейчас в теме
(21)
насколько я понимаю, это не Word-овский файл. Какой-то html?
Я тоже об этом подумал, но положился на заверения автора - ХЗ, чего там Microsoft придумала новенького для форматов DOCX.
23. GennadiyN 06.05.20 18:13 Сейчас в теме
(22) да, больше похож на html
я предполагаю, что приходит пустой файл. в запросе ввожу данные на файл, возможно не верно заполняю и поэтому он мне отправляет пустой файл
сейчас попробую запрос без заполнений данных

Вот полный текст, может кто скажет что за формат:
Скрытый текст
6. GennadiyN 06.05.20 17:10 Сейчас в теме
(4) почитал, где то пишут про макеты, может через макет как то можно сделать?
11. ipoloskov 162 06.05.20 17:28 Сейчас в теме
(6) нет, макет тут ни при чем
10. ipoloskov 162 06.05.20 17:27 Сейчас в теме
Не записывает как? Не создается файл, или его невозможно открыть в Word?
12. GennadiyN 06.05.20 17:31 Сейчас в теме
(10) в проводнике открываю файл ворд, выходит ошибка: Не удалось открыть файл из-за ошибок его содержимого, файл поврежден поэтому его нельзя открыть
13. GennadiyN 06.05.20 17:34 Сейчас в теме
(12) Извиняюсь это ошибка выходит если расширение стоит ".docx"

А если расширение стоит ".doc", тогда файл открывается, но он пустой
15. ipoloskov 162 06.05.20 17:43 Сейчас в теме
Значит, сбойные данные приходят из api. В коде ошибок нет.
19. GennadiyN 06.05.20 17:47 Сейчас в теме
(15) из апи все ок приходит, это я получается лишний раз его пытался разкодировать
ipoloskov; +1 Ответить
24. GennadiyN 06.05.20 22:59 Сейчас в теме
Всем спасибо!
Вообщем проблема была в неправильном заполненном запросе к api, добавил верные индификаторы и получилось
получил верный двоичный код и записал его в созданный файл формата "doc"

Док:
&НаКлиенте
Процедура ПолучитьЗаказ(Команда)
	Результат = ПолучитьЗаказыНажатие3();
	
	ИмяФайла = ПолучитьИмяВременногоФайла(".doc");         
	ДвоичныеДанныеФайла = Base64Значение(Результат);
	
	ДвоичныеДанныеФайла.Записать(ИмяФайла);

КонецПроцедуры

Показать
ipoloskov; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот