К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

SOAP запрос 1С (заполнение реквизитов юрлиц)

0 - 24.11.2014 - 00:34
Добрый день,
У 1С для подписчиков ИТС есть SOAP-сервис, отправив на который ИНН, в ответ получаешь всё остальное :-)
Хочу прикрутить его к 7.7

Собственно использую скрипт и объект WinHttp.WinHttpRequest.5.1

Запрос у меня выглядит следующим образом

Код:
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>"
Так вот на этот запрос приходит ответ

"Marshalling Error: Invalid XML character (0x420); can only be output using character entity when using ISO-8859-1 encoding"

Вообще не понимаю, что ему надо. Вот прошу помощи общественности, чего не хватает, чтобы это дело заработало



Гость
1 - 24.11.2014 - 00:48
используй символы кодировки ISO-8859-1 и пребудет с тобой счастье
2 - 24.11.2014 - 01:06
кодировку подставил вот в таком виде
Код:
oHTTP.SetRequestHeader "Content-Type", "text/xml;charset=ISO-8859-1"
Ситуация не изменилась. Как-то не соображу, как еще можно символы этой ИСО использовать :-) Надо ткнуть носом
3 - 24.11.2014 - 01:11
(1)Спасибо за пинок, заработало :-)
4 - 24.11.2014 - 09:41
(+3)если быть точнее необходимо было указать кодировку UTF-8 через SetRequestHeader, а не просто в тексте запроса.
Попутно еще вопрос? А существует ли сходный сервис для простых смертных без подписки ИТС? :-)
Гость
5 - 24.11.2014 - 10:11
4-Sasha > Вообще-то, сведения о юридических лицах принадлежат МФ (точнее, его департаменту по налогам), а никак не 1С...
Следовательно, Исходный сервис следует искать на сайте ФНС.
6 - 24.11.2014 - 12:36
(4) Для 7.7 не встречал, а для 8-ки такие обработки написаны (не мной):

http://infostart.ru/public/285781/
http://infostart.ru/public/281276/
http://infostart.ru/public/276742/

Осталось только переписать это под клюшки.
7 - 24.11.2014 - 23:13
5-VZ > Для не авторизованных запросов со стороны нашел только проверку статуса контрагента по ИНН, но направление интересное, будем копать :-)
6-Ткачик > Обработка интересная, скачаю посмотрю. Судя по тому, что используется капча - это не SOAP )
8 - 16.05.2016 - 14:34
Если не трудно... можно взглянуть на Ваш скрипт и обращение с объектом WinHttp.WinHttpRequest.5.1
для запроса к 1с Вэб Серверу...
9 - 16.05.2016 - 22:40
Sasha, если заработает - получение по ИНН - поделишься мну? (м.б. в обмен на что-то если такое что-то смогу найти у себя).
Гость
10 - 18.05.2016 - 10:27
Самый простой способ перекодировки - это использование виндовой команды CHCP, которая меняет кодовую страницу для ввода/вывода (866, 1251, 65001(UTF-8):
@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


Кошерно использовать iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile ...]
http://www.gnu.org/software/libiconv/
11 - 18.05.2016 - 15:58
(9) Наверное заработало.. .его последняя активность в 2014 году, в данной ветке :(
12 - 18.05.2016 - 17:32
(11) Время летит, жесть. Еле нашел у себя в запасниках эту обработку. Скрипт выглядит следующим образом
Код:
Скрипт = "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()
				 |";
13 - 18.05.2016 - 17:34
Ну и соответственно запуск скрипта и чтение результатов
Код:
VBS = СоздатьОбъект("Текст");
	VBS.ДобавитьСтроку(Скрипт);
	VBS.Записать(ВремФайлНаДиске+".vbs");
	         
	Сообщить("Запуск...");
	
	Попытка
		WshShell = СоздатьОбъект("WScript.Shell");
		WshShell.Run("%comspec% /c"+ВремФайлНаДиске+".vbs",0,1);
 	Исключение
		СообщитьОшибка("ОШИБКА! : "+ОписаниеОшибки(),,0);
  	    ФС.УдалитьФайл(ВремФайлНаДиске+".vbs");
		Возврат "";
	КонецПопытки;	
	
	ФС.ПереименоватьФайл(ВремФайлНаДиске,ВремФайлНаДиске+".txt",1);
	
	Сообщить("->"+ВремФайлНаДиске+".txt");
	
	Сообщить("Парсим ответ...");
	
	Если СтрДлина(ДанныеДляОтправки) = 10 Тогда
		ДанныеКлиента = ДанныеЮридическогоЛица(ВремФайлНаДиске+".txt");
	Иначе
		ДанныеКлиента = ДанныеФизическогоЛица(ВремФайлНаДиске+".txt");
	КонецЕсли;
14 - 18.05.2016 - 18:25
(12)(13) ОГРОМНОЕ спасибо. Будем пробовать.
15 - 19.05.2016 - 09:10
(12)
|oHTTP.SetCredentials """+ЛогинИТС+""","""+ПарольИТС+""",HTTPREQUEST_SET CREDENTIALS_FOR_PROXY

Это вроде пароль для прокси, а куда подставлять пароль логин ИТС?
16 - 19.05.2016 - 11:29
(15) Ну, собственно тут и указываешь. заменяя HTTPREQUEST_SET CREDENTIALS_FOR_PROXY на HTTPREQUEST_SET CREDENTIALS_FOR_SERVER

Полное описание здесь
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Вот почему у меня работало так, уже не помню ) Но ошибок не было, возвращался xml с верным ответом
17 - 19.05.2016 - 11:37
Еще вопросик
ТочкаПодключения https://api.orgregister.1c.ru/orgregister/v2?wsdl
ПространствоИмен http://ws.orgregister.company1c.com/

Процедура_ RequisitesWebServiceEndpointImpl2Service

???
18 - 19.05.2016 - 11:48
(17) ну в моей обработке 1,5-летней давности еще v1&wdsl и процедуры getEntrepreneurRequisitesByINN для ип
getCorporationRequisitesByINN для организаций
пространство имен да, такое
19 - 19.05.2016 - 11:49
(+18) Пример текста запроса в (0)
20 - 19.05.2016 - 12:22
0-Sasha > Только сейчас заметил...
Где-то в начале 2015 г я тоже занимался таким вопросом.
Можете посмотреть по ссылкам, обработка есть на инфостарте и в свободном доступе там же,
а так же, обновленный вариант по работе с api2-запросами к контур-фокус, смотрите по ссылкам:
Вопрос к знатокам КЛАДРа
Протестите на основе типовой конфа Бух-7.7_616 - для ПроверкаКонтрагентовПоЕГРН и Заполнение 6-НДФЛ

Базочку 1С - бухгалтерия 7.7, ОСН, релиз 616, в архиве, с настройками под обработку ПроверкаКонтрагентовПоЕГРН,
всё ещё можно скачать здесь:
http://hdd.tomsk.ru/file/ktzswqvz
21 - 19.05.2016 - 12:36
20-perpetum >+ кроме перекодировки в UTF-8,
необходимо ещё преобразование строки запроса в эскейп-последовательность,
тогда сервер будет правильно реагировать на любой запрос с кириллицей
- можете посмотреть в тексте обработки ПроверкаКонтрагентовПоЕГРН.
22 - 19.05.2016 - 12:56
(20) В Вашей обработке нет примера по работе с 1С Сервисом.....
Пробовал Вашу, работает через раз(может из-за Контура)
23 - 19.05.2016 - 13:33
22-serpent > - ну да, у меня не было доступа к сервису 1С-подключения,
потому даже не интересовался, насколько полноценно он функционирует и что там можно извлечь.
Потому из свободно-доступных, был контур-фокус.
Но в отношении работы через раз - что-то из ряда вон.
Сервис либо работает, если сервер контур-фокус доступен,
либо - нет и никаких через раз.

- Можете дать ссылку на вашу обработку? - интересно взглянуть на работу с сервисом 1С.
24 - 19.05.2016 - 13:39
(23) я пока разбираюсь со скриптом....
не выходит...
возвращает
ошибка №70
An error occurred in the secure channel support
25 - 19.05.2016 - 13:40
(23) весь скрипт на данной странице
26 - 19.05.2016 - 14:13
24-serpent > Ответ некорректен - отвечая, необходимо указывать, что вы тестируете.
Если тестируете запрос к контур-фокус по моей обработке,
то вариант ошибки по проблеме безопасности, может быть связан с видом ваше ОС и её настройки.
Я сейчас тестирую свою обработку на w-7, проблем нет.
27 - 19.05.2016 - 14:19
25-serpent > - а где же автор топика "Sasha"?
28 - 19.05.2016 - 14:20
у меня XP-64
29 - 19.05.2016 - 14:56
28-serpent >
W-2003 и XP - с недавних пор страдают проблемой запросов GET-send
- я сам пробовал разбираться с представителями компании контур-фокус
- мне пояснили - проблема в настройке безопасности, связанная с сервис-паком.
По-видимому, они поменяли у себя подход к системе безопасности,
в результате, перестал работать алгоритм GET-send.
Мне так и не удалось исправить ОС по их рекомендации с сервис-паком,
пришлось установить ОС W-7-64, с которой запросы работают.
30 - 20.05.2016 - 13:40
(29) вот нашел для себя решение....
боролся долго со скриптом... на всех машинках есть отклик на моей нет(win XP64) возвращал "Error Message: An Error Occurred in the Secure Channel Support "
https://support.microsoft.com/en-us/kb/198970

WinServer2003 и XP_SP2 не поддерживают работу по протоколу SHA1,2,...
лечится
https://blogs.technet.microsoft.com/...2-and-windows/

https://blogs.technet.microsoft.com/...2-and-windows/
31 - 20.05.2016 - 13:41
сори вторая ссылка
http://superuser.com/questions/80269...-dll-available
32 - 20.05.2016 - 13:42
проверить, поддерживает ли ваш броузер SHA есть сайт
https://ssltest39.ssl.symclab.com/
33 - 20.05.2016 - 18:33
32-serpent > - для меня оказалось бесполезно, это как раз сервис-пак 2,
но в ОС w2003 или XP, отказывается работать Google Chrome - более не
поддерживает эти операционки и вскоре за этим объявлением, эти ОС отказались
делать запросы. Другой браузер Mozilla Firefox - сопровождается падением плагина и всё.
Потестить в нём совместимость с сайтом контур-фокус ещё можно,
но тест показывает несовместимость с системой защиты и тоже - запросам - каюк.
В общем - устроили в майкрософте безобразия...
Приходится принять, как неизбежное и перейти на w-7, что и сделал.


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены