Имя: Пароль:
1C
1С v8
Base64Строка слишком большая :(
0 fif
 
14.05.21
15:20
Всем привет!
Задача: отправить pdf на сторонний ws через Base64.
Строка выходит огромных размеров, поэтому убираю из нее все лишнее:

ТабДок.Записать(КаталогВременныхФайлов() + "test.pdf", ТипФайлаТабличногоДокумента.PDF);
ДвочныеДанные = Новый ДвоичныеДанные(КаталогВременныхФайлов() + "test.pdf");
НашиДвоичныеДанные = ПолучитьBase64Строка(ДвочныеДанные);
НашиДвоичныеДанные = СтрЗаменить(НашиДвоичныеДанные, Символы.ВК, "");
НашиДвоичныеДанные = СтрЗаменить(НашиДвоичныеДанные, Символы.ПС, "");

Потом добавляю остальные данные:
СтрокаSOAP = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:int=""http://IntegrationWebService"" xmlns:arr=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"">
                        | <soapenv:Header/>
                        | <soapenv:Body>
                        |<int:EDocumentsCreate>
                        |<int:XMLPackage><![CDATA[" + НашXMLПакет + "]]>
                        |</int:XMLPackage>
                        |<int:Documents>
                        |<arr:base64Binary xmlns:arr=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"">" + НашиДвоичныеДанные +"</arr:base64Binary></int:Documents><int:ISCode>1C</int:ISCode></int:EDocumentsCreate>
                        | </soapenv:Body>
                        |</soapenv:Envelope>";
И отправляю...

HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаSOAP,КодировкаТекста.UTF8);


Строка обрезается и выходит хрень. Помогите, как собрать и отправить?
1 Garykom
 
гуру
14.05.21
15:25
(0) тело из файла
и почитать описание сервиса что там для больших, может надо как то разбивать или через webdav
2 arsik
 
гуру
14.05.21
15:33
(0) А что в ПолучитьBase64Строка()? Есть же стандартный метод Base64Строка() там не ПС и ВК.
И почему так? СтрокаSOAP = "...
Почему не воспользоваться штатными средствами 1c lkz dt,cthdbcjd/ Vj;tn b ghj,ktvs yt ,eltn/
3 arsik
 
гуру
14.05.21
15:34
Почему не воспользоваться штатными средствами 1c lkz dt,cthdbcjd/ Vj;tn b ghj,ktvs yt ,eltn/
---
Почему не воспользоваться штатными средствами 1c. Может и проблемы не будет.
4 fif
 
14.05.21
15:44
(2) Base64Строка() - никак не помог

Так сделано, потому что иначе будут проблемы с cdata
5 Сергиус
 
14.05.21
16:17
(0)А если сделать файл, и устанавливать тело из него?
6 arsik
 
гуру
14.05.21
16:21
Надо просто фиддлером посмотреть, как 1с стандартно большие бинарные данные отправляет и сделать по аналогии.
7 fif
 
14.05.21
16:28
(5) (1)
Это про УстановитьТелоИзДвоичныхДанных?
Сейчас попробую, но мне кажется не то будет
8 Сергиус
 
14.05.21
16:31
(7)Можно попробовать еще УстановитьИмяФайлаТела
9 acht
 
14.05.21
16:48
(0) > Строка обрезается
Как определил?
10 Shur1cIT
 
14.05.21
16:49
(0) на сколько помню стандартно IIS максимум 30 мегов запрос может получить, далее нужно с бубном настраивать, у меня в своё время не получилось, в результате передавал только ссылку на файл далее удалял его.
По поводу обрезания строки где ты обрезь смотришь? в отладчике? отображение может отрезаться, выгрузит в текст и посмотри
11 fif
 
14.05.21
17:38
(8)
Сохраняется в файл корректно (проверила на soapui), отправляется видимо нет :(
Возвращается 400
12 fif
 
14.05.21
17:39
(9) По ошибке 400
13 acht
 
14.05.21
17:39
(11) Верни обратно ВК и ПС
14 fif
 
14.05.21
17:53
(13) не помогло, ошибка 400
15 fif
 
14.05.21
18:02
Помогло записать все в файл, потом получить из файла и отправить методом УстановитьТелоИзСтроки
Всем спасибо)
16 acht
 
14.05.21
18:23
Сдается мне, дело было в BOM
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс