|
v7: Закрывается 1С при отправке POST запроса | ☑ | ||
---|---|---|---|---|
0
Ivan Bezdomnyi
27.02.20
✎
08:33
|
Доброго времени суток.
Отправляю данные по товарам на сайт из 1С 7.7 методом POST. При этом если отправляю по 1000 товаров - все отправляется корректно. Но если пробую отправить все вместе 4000 товаров, то на моменте отправки 1С просто закрывается. В чем причина? Текст такой: WinHttp = СоздатьОбъект("Microsoft.XMLHTTP"); WinHttp.Open("POST","http://testtesttest.com/api/update_products",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.SetRequestHeader("Content-Language", "ru"); WinHttp.SetRequestHeader("Content-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = "data="+СтрОтправки; WinHttp.Send(ПараметрыПОСТ); C WinHttp.WinHttpRequest.5.1 то же самое. |
|||
1
ДенисЧ
27.02.20
✎
08:45
|
Память, разумеется.
|
|||
2
Ivan Bezdomnyi
27.02.20
✎
09:16
|
(1) какая именно?
|
|||
3
Arbuz
27.02.20
✎
12:33
|
в клюшках есть проблема с объёмом данный передаваемых в вк. при превышении некоего порога всё валится.
либо частями передавать, либо внешний скрипт который соберёт, модно - веб-сервис, который тоже соберёт по кусочкам и обработает, либо OLEExSup (OLEExSup :: ВызватьОЛЕМетод / InvokeOLEMethod) спасёт тебя. |
|||
4
big
27.02.20
✎
13:37
|
Пользуйте cUrl. Один раз сделал и забыл ))
|
|||
5
mishaPH
модератор
27.02.20
✎
13:38
|
(0) длинна строки запроса ограничена. отправляй несколько этапов
|
|||
6
victuan1
27.02.20
✎
14:02
|
Отправляю из 1С 7.7 через msxml2.serverxmlhttp.6.0
Нет ограничений на размер файла у него в отличие хттп У Курл тоже нет ограничений, им тоже норм. |
|||
7
Arbuz
27.02.20
✎
14:27
|
(4) у меня прям мечта - обернуть libcurl в com, но всё времени нет, а готового рабочего не нашёл
|
|||
8
Djelf
27.02.20
✎
15:19
|
(7) Зачем в com? Можно и в ВК обернуть. Вот собранная curl1c.dll с примером http://catalog.mista.ru/public/1045311/
|
|||
9
Arbuz
27.02.20
✎
15:51
|
(8) О! А как бы вк заиметь без см?
|
|||
10
trad
27.02.20
✎
15:59
|
(7) если в ком завернешь, то получишь те же грабли с передачей в ком длинных строк.
Потому как в (0) это не проблема Microsoft.XMLHTTP, это проблема реализации взаимодействия 77 с ком. А вот технология ВК, емнип, лишена этих недостатков |
|||
11
Djelf
27.02.20
✎
16:02
|
(9) Забирай https://cloud.mail.ru/public/qZzr/fnAN4SHAa
|
|||
12
mishaPH
модератор
27.02.20
✎
16:06
|
(6) у 1с 77 есть граничение на размер строки текста.. даже скл запросы прямые к другим системам валятся когда более опр колва символов
|
|||
13
trad
27.02.20
✎
16:11
|
полуофф
Часто, при использовании Microsoft.XMLHTTP и т.п., и необходимости отправить/получить xml, забывают(не знают), что эти объекты умеют работать сразу с DOM и, почему-то, пытаются передать строку. Хотя можно создать ДомДокумент, заполнить его и передать WinHttp.Send(ДомДокумент); |
|||
14
trad
27.02.20
✎
16:13
|
(12) "у 1с 77 есть граничение на размер строки текста"
слишком широкое утверждение |
|||
15
victuan1
27.02.20
✎
19:47
|
(12) см. (13)
|
|||
16
Garykom
гуру
27.02.20
✎
20:08
|
(13) Подскажи заодно нечто умеющее работать с JSON что можно аналогично подсунуть в WinHttp.Send(JSONДокумент);
Ну или как через WinHttp отправлять файлы с диска. |
|||
17
trad
27.02.20
✎
23:46
|
(16) через winhttp json - только строкой. Других способов не знаю.
А файл с диска, примерно так: Файл = "d:\1.zip"; Stream = СоздатьОбъект("ADODB.Stream"); Stream.open(); Stream.loadFromFile(Файл); Http = СоздатьОбъект("Msxml2.XMLHTTP"); Http.open("POST", Адрес, 0); Http.setRequestHeader("Content-Type", "application/zip"); Http.setRequestHeader("Content-Disposition", "attachment; filename=""1.zip"""); Http.send(Stream); |
|||
18
Garykom
гуру
28.02.20
✎
00:00
|
(17) Угу или строку передать можно или поток.
А вот просто указать путь на диске к файлу содержимое которого надо отправить нет такого COMОбъект. И не знаю COMОбъект который умел бы с JSON работать, за исключением через скрипты JScript или VBScript |
|||
19
Garykom
гуру
28.02.20
✎
00:01
|
(18)+ Короче странно это что никто не озадачился.
Вероятно COM потому что устаревшая технология и нефик вам новых плюшек. |
|||
20
big
28.02.20
✎
07:26
|
(7) Ну, я от незнания просто файлы гоняю ))
(11) Спасибо большое! ) |
|||
21
trad
28.02.20
✎
09:26
|
(19) "Вероятно COM потому что устаревшая"
именно |
|||
22
Garykom
гуру
28.02.20
✎
09:30
|
(21) Проблема что 77 еще встречается и данные из нее надо как то выцеплять для переноса в новую конфу.
Привык уже через JSON переносы делать, это оказывается очень удобно и через HTTP сервисы. |
|||
23
Garykom
гуру
28.02.20
✎
09:31
|
(22)+ У меня код на 1С 7.7 для работы с JSON наваян через СоздатьОбъект("Текст") но это не сильно шустро.
|
|||
24
victuan1
28.02.20
✎
13:57
|
Вот мне тоже эта тема интересна.
|
|||
25
Salimbek
28.02.20
✎
14:02
|
(23) Переделай на работу с BinaryData - он гораздо шустрее. Были сравнительные тесты...
|
|||
26
Garykom
гуру
28.02.20
✎
16:03
|
(25) "ADODB.Stream" достаточно шустро работает и умеет писать файлы.
Не вижу смысла тащит ВК когда "ADODB.Stream" с высокой вероятностью уже там есть на компе. |
|||
27
Salimbek
28.02.20
✎
21:19
|
(26) Ну если 1С++ еще не используется, то можно и через АДО
|
|||
28
user100000
08.03.20
✎
01:26
|
Функция _Отправить(Адр,Логин,Пароль,з) Экспорт
д=СоздатьОбъект("Msxml2.DOMDocument.6.0"); Попытка //WinHttp=СоздатьОбъект("MSXML2.XMLHTTP"); WinHttp=СоздатьОбъект("msxml2.serverxmlhttp.6.0"); WinHttp.Open("POST",Адр,0,Логин,Пароль); WinHttp.SetRequestHeader("Content-Type", "text/xml;charset=utf-8"); WinHttp.Send(з); Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="vbscript"; ТекстСкрипта=" |function LoadXML() | objXML.loadXML WinHttp.ResponseText |end function"; Скрипт.addObject("WinHttp",WinHttp); Скрипт.addObject("objXML",д); Скрипт.addCode(текстскрипта); Скрипт.run("LoadXML"); WinHttp="";Скрипт=""; Исключение //глЛогРег(ОписаниеОшибки()); Сообщить(ОписаниеОшибки()); КонецПопытки; Возврат д; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |