SOAP запрос 1С (заполнение реквизитов юрлиц) Добрый день, У 1С для подписчиков ИТС есть SOAP-сервис, отправив на который ИНН, в ответ получаешь всё остальное :-) Хочу прикрутить его к 7.7 Собственно использую скрипт и объект WinHttp.WinHttpRequest.5.1 Запрос у меня выглядит следующим образом [code]sRequest = "<?xml version=""1.0"" encoding=""UTF-8""?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns=""http://ws.orgregister.company1c.com/""> <SOAP-ENV:Body> <getCorporationRequisitesByINN> <INN>7777777777</INN> <configurationName>TiS77</configurationName> </getCorporationRequisitesByINN> </SOAP-ENV:Body> </SOAP-ENV:Envelope>" [/code] Так вот на этот запрос приходит ответ [b]"Marshalling Error: Invalid XML character (0x420); can only be output using character entity when using ISO-8859-1 encoding"[/b] Вообще не понимаю, что ему надо. Вот прошу помощи общественности, чего не хватает, чтобы это дело заработало |
используй символы кодировки ISO-8859-1 и пребудет с тобой счастье |
кодировку подставил вот в таком виде [code]oHTTP.SetRequestHeader "Content-Type", "text/xml;charset=ISO-8859-1"[/code] Ситуация не изменилась. Как-то не соображу, как еще можно символы этой ИСО использовать :-) Надо ткнуть носом |
(1)Спасибо за пинок, заработало :-) |
(+3)если быть точнее необходимо было указать кодировку UTF-8 через SetRequestHeader, а не просто в тексте запроса. Попутно еще вопрос? А существует ли сходный сервис для простых смертных без подписки ИТС? :-) |
4-Sasha > Вообще-то, сведения о юридических лицах принадлежат МФ (точнее, его департаменту по налогам), а никак не 1С... Следовательно, [b][em]И[/em][/b]сходный сервис следует искать на сайте ФНС. |
(4) Для 7.7 не встречал, а для 8-ки такие обработки написаны (не мной): [url]http://infostart.ru/public/285781/[/url] [url]http://infostart.ru/public/281276/[/url] [url]http://infostart.ru/public/276742/[/url] Осталось только переписать это под клюшки. |
5-VZ > Для не авторизованных запросов со стороны нашел только проверку статуса контрагента по ИНН, но направление интересное, будем копать :-) 6-Ткачик > Обработка интересная, скачаю посмотрю. Судя по тому, что используется капча - это не SOAP ) |
Если не трудно... можно взглянуть на Ваш скрипт и обращение с объектом WinHttp.WinHttpRequest.5.1 для запроса к 1с Вэб Серверу... |
Sasha, если заработает - получение по ИНН - поделишься мну? (м.б. в обмен на что-то если такое что-то смогу найти у себя). |
Самый простой способ перекодировки - это использование виндовой команды CHCP, которая меняет кодовую страницу для ввода/вывода (866, 1251, 65001(UTF-8): [em]@echo off chcp 866 >nul for /f "tokens=*" %%i in (866.txt) do call:to1251 "%%i" exit :to1251 chcp 1251 >nul echo %~1 >>1251.txt chcp 866 >nul exit /b[/em] Кошерно использовать [b]iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile ...][/b] [url]http://www.gnu.org/software/libiconv/[/url] |
(9) Наверное заработало.. .его последняя активность в 2014 году, в данной ветке :( |
(11) Время летит, жесть. Еле нашел у себя в запасниках эту обработку. Скрипт выглядит следующим образом [code]Скрипт = "Function Execute |Dim sEndPoint |sEndPoint="""+ТочкаПодключения+""" |Dim sNameSpace |sNameSpace = """+ПространствоИмен+""" |Dim sProcedure |sProcedure="""+Процедура_+""" |Dim oHTTP |set oHTTP = CreateObject(""WinHttp.WinHttpRequest.5.1"") |oHTTP.Open ""POST"", sEndPoint, false |oHTTP.SetTimeouts 10000,90000, 3000000, 3000000 |oHTTP.SetCredentials """+ЛогинИТС+""","""+ПарольИТС+""",HTTPREQUEST_SETCREDENTIALS_FOR_PROXY |sRequest = """+Запрос+""" | |oHTTP.SetRequestHeader ""Content-Type"", ""text/xml;charset=UTF-8"" | |On Error Resume Next | |oHTTP.Send sRequest | |Dim fso |set fso = CreateObject(""Scripting.FileSystemObject"") | |If Err.Number <> 0 Then | Set tf = fso.CreateTextFile("""+ВремФайлНаДиске+""", true) | tf.WriteLine(""<err><Status>1000</Status><Text>""+ Trim(Err.description) + ""</Text></err>"") | tf.Close() | Exit Function | On Error Goto 0 |End If | On Error Goto 0 | | |Execute=oHTTP.ResponseText |if oHTTP.status = 200 Then | if oHTTP.ResponseText = """" then | Execute = ""Empty Response from Server"" | else | Execute = oHTTP.ResponseText | end if |else | Execute = ""<err><Status>""& oHTTP.status &""</Status><Text>http err ""& oHTTP.status &"" : ""& oHTTP.StatusText & ""</Text></err>"" |end if |End Function | | |Execute | | |Dim fso |set fso = CreateObject(""Scripting.FileSystemObject"") |Dim tf |set tf = fso.CreateTextFile("""+ВремФайлНаДиске+""", true) |Data = Replace(Execute,""<?xml version=""""1.0"""" encoding=""""utf-8""""?>"",""<?xml version=""""1.0"""" encoding=""""windows-1251""""?>"") |tf.WriteLine(Data) |tf.WriteBlankLines(3) |tf.Close() |"; [/code] |
Ну и соответственно запуск скрипта и чтение результатов [code]VBS = СоздатьОбъект("Текст"); VBS.ДобавитьСтроку(Скрипт); VBS.Записать(ВремФайлНаДиске+".vbs"); Сообщить("Запуск..."); Попытка WshShell = СоздатьОбъект("WScript.Shell"); WshShell.Run("%comspec% /c"+ВремФайлНаДиске+".vbs",0,1); Исключение СообщитьОшибка("ОШИБКА! : "+ОписаниеОшибки(),,0); ФС.УдалитьФайл(ВремФайлНаДиске+".vbs"); Возврат ""; КонецПопытки; ФС.ПереименоватьФайл(ВремФайлНаДиске,ВремФайлНаДиске+".txt",1); Сообщить("->"+ВремФайлНаДиске+".txt"); Сообщить("Парсим ответ..."); Если СтрДлина(ДанныеДляОтправки) = 10 Тогда ДанныеКлиента = ДанныеЮридическогоЛица(ВремФайлНаДиске+".txt"); Иначе ДанныеКлиента = ДанныеФизическогоЛица(ВремФайлНаДиске+".txt"); КонецЕсли;[/code] |
(12)(13) ОГРОМНОЕ спасибо. Будем пробовать. |
(12) |oHTTP.SetCredentials """+ЛогинИТС+""","""+ПарольИТС+""",HTTPREQUEST_SETCREDENTIALS_FOR_PROXY Это вроде пароль для прокси, а куда подставлять пароль логин ИТС? |
(15) Ну, собственно тут и указываешь. заменяя HTTPREQUEST_SET CREDENTIALS_FOR_PROXY на HTTPREQUEST_SET CREDENTIALS_FOR_SERVER Полное описание здесь [url]https://msdn.microsoft.com/en-us/library/windows/desktop/aa384058%28v=vs.85%29.aspx[/url] Вот почему у меня работало так, уже не помню ) Но ошибок не было, возвращался xml с верным ответом |
Еще вопросик ТочкаПодключения [url]https://api.orgregister.1c.ru/orgregister/v2?wsdl[/url] ПространствоИмен [url]http://ws.orgregister.company1c.com/[/url] Процедура_ RequisitesWebServiceEndpointImpl2Service ??? |
(17) ну в моей обработке 1,5-летней давности еще v1&wdsl и процедуры getEntrepreneurRequisitesByINN для ип getCorporationRequisitesByINN для организаций пространство имен да, такое |
(+18) Пример текста запроса в (0) |
0-Sasha > Только сейчас заметил... Где-то в начале 2015 г я тоже занимался таким вопросом. Можете посмотреть по ссылкам, обработка есть на инфостарте и в свободном доступе там же, а так же, обновленный вариант по работе с [b]api2[/b]-запросами к [b]контур-фокус[/b], смотрите по ссылкам: [url]http://forums.kuban.ru/f1040/vopros_k_znatokam_kladra-7746713.html[/url] [url]http://forums.kuban.ru/f1040/protestite_na_osnove_tipovoj_konfa_buh-7_7_616_-_dlya_proverkakontragentovpoegrn_i_zapolnenie_6-ndfl-7718764.html[/url] [b]Базочку 1С - бухгалтерия 7.7, ОСН, релиз 616[/b], в архиве, с настройками под обработку [b]ПроверкаКонтрагентовПоЕГРН[/b], всё ещё можно скачать здесь: [url]http://hdd.tomsk.ru/file/ktzswqvz[/url] |
20-perpetum >+ кроме перекодировки в [b]UTF-8[/b], необходимо ещё преобразование строки запроса в [b]эскейп-последовательность[/b], тогда сервер будет правильно реагировать на любой запрос с кириллицей - можете посмотреть в тексте обработки [b]ПроверкаКонтрагентовПоЕГРН[/b]. |
(20) В Вашей обработке нет примера по работе с 1С Сервисом..... Пробовал Вашу, работает через раз(может из-за Контура) |
22-serpent > - ну да, у меня не было доступа к сервису 1С-подключения, потому даже не интересовался, насколько полноценно он функционирует и что там можно извлечь. Потому из свободно-доступных, был [b]контур-фокус[/b]. Но в отношении [b]работы через раз[/b] - что-то из ряда вон. Сервис либо работает, если сервер [b]контур-фокус[/b] доступен, либо - нет и [b]никаких через раз[/b]. - Можете дать ссылку на вашу обработку? - интересно взглянуть на работу с сервисом 1С. |
(23) я пока разбираюсь со скриптом.... не выходит... возвращает ошибка №70 An error occurred in the secure channel support |
(23) весь скрипт на данной странице |
24-serpent > Ответ некорректен - отвечая, необходимо указывать, что вы тестируете. Если тестируете запрос к контур-фокус по моей обработке, то вариант ошибки по проблеме безопасности, может быть связан с видом ваше ОС и её настройки. Я сейчас тестирую свою обработку на w-7, проблем нет. |
25-serpent > - а где же автор топика "[b]Sasha[/b]"? |
у меня XP-64 |
28-serpent > [b]W-2003[/b] и [b]XP[/b] - с недавних пор страдают проблемой запросов [b]GET-send[/b] - я сам пробовал разбираться с представителями компании [b]контур-фокус[/b] - мне пояснили - [b]проблема в настройке безопасности, связанная с сервис-паком[/b]. По-видимому, [b]они поменяли у себя подход к системе безопасности[/b], в результате, перестал работать алгоритм [b]GET-send[/b]. Мне так и не удалось исправить ОС по их рекомендации с сервис-паком, пришлось установить ОС [b]W-7-64[/b], с которой запросы работают. |
(29) вот нашел для себя решение.... боролся долго со скриптом... на всех машинках есть отклик на моей нет(win XP64) возвращал "Error Message: An Error Occurred in the Secure Channel Support " [url]https://support.microsoft.com/en-us/kb/198970[/url] WinServer2003 и XP_SP2 не поддерживают работу по протоколу SHA1,2,... лечится [url]https://blogs.technet.microsoft.com/pki/2010/09/30/sha2-and-windows/[/url] [url]https://blogs.technet.microsoft.com/pki/2010/09/30/sha2-and-windows/[/url] |
сори вторая ссылка [url]http://superuser.com/questions/802693/sha2-support-for-windows-xp-sp2-any-hotfix-or-dll-available[/url] |
проверить, поддерживает ли ваш броузер SHA есть сайт [url]https://ssltest39.ssl.symclab.com/[/url] |
32-serpent > - для меня оказалось бесполезно, это как раз сервис-пак 2, но в ОС w2003 или XP, отказывается работать Google Chrome - более не поддерживает эти операционки и вскоре за этим объявлением, эти ОС отказались делать запросы. Другой браузер Mozilla Firefox - сопровождается падением плагина и всё. Потестить в нём совместимость с сайтом контур-фокус ещё можно, но тест показывает несовместимость с системой защиты и тоже - запросам - каюк. В общем - устроили в майкрософте безобразия... Приходится принять, как неизбежное и перейти на w-7, что и сделал. |
Текущее время: 03:22. Часовой пояс GMT +3. |