|
1С:Контрагент, запилить для 77 | ☑ | ||
---|---|---|---|---|
0
Злопчинский
20.01.17
✎
23:27
|
По рецепту в http://catalog.mista.ru/public/577575/
запилил обработку, добился код ответа = 200 . в тексте ответа приходит в тексте приходит <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:getCorporationRequisitesByINNResponse xmlns:ns1="http://ws.orgregister.company1c.com/"></ns1:getCorporationRequisitesByINNResponse></soap:Body></soap:Envelope> и все.. что это такое? с чем его курить? где инфа в виде иксемеля? |
|||
1
Злопчинский
20.01.17
✎
23:28
|
INN = "7721562305";
URL="https://api.orgregister.1c.ru/orgregister/v5?wsdl"; WinHttp=создатьобъект("WinHttp.WinHttpRequest.5.1"); t1 = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?> |<SOAP-ENV:Envelope xmlns:SOAPSDK1=""http://www.w3.org/2001/XMLSchema"" | xmlns:SOAPSDK2=""http://www.w3.org/2001/XMLSchema-instance"" | xmlns:SOAPSDK3=""http://schemas.xmlsoap.org/soap/encoding/"" | xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" | xmlns:ns1=""http://ws.orgregister.company1c.com/""> |<SOAP-ENV:Body> | <ns1:getCorporationRequisitesByINN > | <ns1:INN >"+INN+"</ns1:INN> | <ns1:configurationName>0</ns1:configurationName> | <ns1:getCorporationRequisitesByINN> |</SOAP-ENV:Body> |</SOAP-ENV:Envelope>"; WinHttp.Open("POST",URL); WinHttp.SetCredentials("Логин","Пароль",0); //к сожалению, подписка ИТС должна быть WinHttp.send(t1); Ответ = WinHttp.responsetext(); Сообщить(WinHttp.Status); Если WinHttp.Status = 200 тогда // выводим для отладки т1 = 1; для ии=1 по 25 Цикл Сообщить(сред(Ответ,т1,250)); т1 = т1 + 250; КонецЦикла; КонецЕсли; |
|||
2
Fram
20.01.17
✎
23:44
|
(1) ";" зачем в конце строк внутри xml запроса?
|
|||
3
Fram
20.01.17
✎
23:48
|
И еще тупой вопрос. Тут то подставил свое надеюсь?
WinHttp.SetCredentials("Логин","Пароль",0); |
|||
4
Злопчинский
20.01.17
✎
23:50
|
(3) да, тут норм
|
|||
5
Злопчинский
20.01.17
✎
23:50
|
(2) не знаю, я тупой в новомодных технологиях.
содрал по ссылке и все |
|||
6
Злопчинский
20.01.17
✎
23:52
|
t1 = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?>
|<SOAP-ENV:Envelope xmlns:SOAPSDK1=""http://www.w3.org/2001/XMLSchema"" | xmlns:SOAPSDK2=""http://www.w3.org/2001/XMLSchema-instance"" | xmlns:SOAPSDK3=""http://schemas.xmlsoap.org/soap/encoding/"" | xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" | xmlns:ns1=""http://ws.orgregister.company1c.com/""> |<SOAP-ENV:Body> | <ns1:getCorporationRequisitesByINN> | <ns1:INN >"+INN+"</ns1:INN> | <ns1:configurationName>0</ns1:configurationName> | <ns1:getCorporationRequisitesByINN> |</SOAP-ENV:Body> |</SOAP-ENV:Envelope>"; |
|||
7
Злопчинский
20.01.17
✎
23:54
|
(2) точки с запятой миста влупила при пасте (сильно умная). в оригинале норм все
https://content.screencast.com/users/Che66/folders/Jing/media/ad28173a-51f3-48a3-a784-04eb489e6a6a/2017-01-20_2353.png |
|||
8
Злопчинский
20.01.17
✎
23:55
|
в (7) третья строчка текста снизу по идее д.б. закрывающий тег, поправил, попробовал - результат без изменений
|
|||
9
Злопчинский
20.01.17
✎
23:56
|
а блин я тупой наверное .... сек
|
|||
10
Злопчинский
21.01.17
✎
00:04
|
1. вводился неверный ИНН - вводил свой = 12 символов, обрезался до 10.
поправил, результат = 0 2. взял ИНН организации, поменялось. код ответа = 500 о, повторил запрос, проплевалось! получил ответ!!! |
|||
11
Fram
21.01.17
✎
00:06
|
а я все время 500 получаю
|
|||
12
Злопчинский
21.01.17
✎
00:09
|
(11) значит ты тупой ;-0)
ШУЧУ! |
|||
13
Злопчинский
21.01.17
✎
00:09
|
такс, где-то там на ИС был еще красивый вариант вывода в дерево иксемеля.. да и уменя где-то есть
|
|||
14
Fram
21.01.17
✎
00:10
|
(8) да там / забыл автор поставить
|
|||
15
Fram
21.01.17
✎
00:18
|
вот что в ответе при статусе 500
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>SERVER-11: Option 9eac7d22-ce3f-4dc0-9558-c593463847ef exceeds maxVolume 7200</faultstring></soap:Fault></soap:Body></soap:Envelope> |
|||
16
Злопчинский
21.01.17
✎
00:25
|
четотам больше допустимого значения
|
|||
17
Злопчинский
21.01.17
✎
00:25
|
у меня читается ок, но смотреть не хочет иксемель - говорит энкодингеррор, символ какой-то ему не нравится
копаюсь |
|||
18
Fram
21.01.17
✎
00:25
|
это я вижу.. ответ может
|
|||
19
Злопчинский
21.01.17
✎
00:26
|
мля, ну почему вот в 1с все быстро получается, а с этими новомодными штучками которые уже не младенцы - все время г... какое-то?
|
|||
20
Злопчинский
21.01.17
✎
00:27
|
блин как в фаре заменить > на >переводстроки
? |
|||
21
Fram
21.01.17
✎
00:30
|
пользуй notepad++
я конечно в курсе что ты еще тот динозавр, но FAR в 2017 году!!! |
|||
22
Fram
21.01.17
✎
00:31
|
что ты назваешь новомодным? xml? )))
|
|||
23
Fram
21.01.17
✎
00:32
|
у меня все время 500.. хоть стой хоть падай
|
|||
24
Злопчинский
21.01.17
✎
00:46
|
(21) смотрел всякие есть нормальные но они противоречат моему чувсву прекрасного
|
|||
25
Злопчинский
21.01.17
✎
00:47
|
так.
1. текст ответ в виде иксемеля возвращается без строки кодировки, поэтому делаем так для того чтобы парсеры иксемеля не ругались и смотреть в тексе было удобно WinHttp.send(t1); Ответ = "<?xml version=""1.0"" encoding=""CP1251"" standalone=""no""?>"+СокрЛП(WinHttp.responsetext()); Ответ = СтрЗаменить(Ответ,"/><","/>"+РазделительСтрок+"<"); Ответ = СтрЗаменить(Ответ,"><",">"+РазделительСтрок+"<"); |
|||
26
Смотрящий
21.01.17
✎
00:49
|
(21) Прекрасный менеджер ;) Сам пользуюсь
|
|||
27
Злопчинский
21.01.17
✎
00:53
|
такс,
<ns1:getCorporationRequisitesByINN> <ns1:INN>"+INN+"</ns1:INN> <ns1:configurationName>0</ns1:configurationName> </ns1:getCorporationRequisitesByINN> getCorporationRequisitesByINN - это получить по ИНН <ns1:INN> - сам ИНН <ns1:configurationName> - непонятно, это что? здесь https://api.orgregister.1c.ru/orgregister/v5?wsdl что такое configurationName - не нашел, где смотреть описание? |
|||
28
Злопчинский
21.01.17
✎
01:02
|
CP1251 - неправильно
WinHttp.send(t1); Ответ = "<?xml version=""1.0"" encoding=""windows-1251"" standalone=""no""?>"+СокрЛП(WinHttp.responsetext()); Ответ = СтрЗаменить(Ответ,"/><","/>"+РазделительСтрок+"<"); Ответ = СтрЗаменить(Ответ,"><",">"+РазделительСтрок+"<"); Сообщить("Статус выполнения запроса: "+WinHttp.Status); Если WinHttp.Status <> 200 Тогда Возврат; КонецЕсли; Т = СоздатьОбъект("Текст"); Т.ДобавитьСтроку(Ответ); ИмяФайла = КаталогПользователя()+""+_GetPerformanceCounter()+".xml"; ИмяФайла = "c:\1.xml"; Т.Записать(ИмяФайла); //ЗапуститьПриложение(ИмяФайла); Иксемель = СоздатьОбъект("Microsoft.XMLDOM"); Иксемель.Load(ИмяФайла); Корень = Иксемель.DocumentElement; ОбработатьУзел(Корень, 0); //тест чтения Иксемель = ""; |
|||
29
Злопчинский
21.01.17
✎
01:02
|
//**************************************************************************************
// Процедура ОбработатьУзел(Узел, Уровень=0) Состояние(Уровень); КолвоУзлов = Узел.childNodes.length; Для СчУзлов = 0 По КолвоУзлов-1 Цикл ТекУзел = Узел.childNodes.item(СчУзлов); Если ТекУзел.nodeType <> 1 Тогда Продолжить; КонецЕсли; Стр = Формат("","С"+Уровень*8); СтрАтрибуты = ""; Для счАтрибутов = 0 По ТекУзел.attributes.length-1 Цикл Атрибут = ТекУзел.attributes.item(счАтрибутов); СтрАтрибуты = СтрАтрибуты + ?(СтрАтрибуты="","",";") + Атрибут.nodename+"="+Атрибут.value; КонецЦикла; ТекстУзла = ""; Если ТекУзел.childNodes.length = 1 Тогда Если ТекУзел.childNodes.item(0).nodetype = 3 Тогда ТекстУзла = ТекУзел.childNodes.item(0).text; КонецЕсли; КонецЕсли; Стр = Стр + ТекУзел.tagName + ?(СтрАтрибуты="","","("+СтрАтрибуты+")" ) + ": " +ТекстУзла; Сообщить(Стр); ОбработатьУзел(ТекУзел, Уровень+1); КонецЦикла; Состояние(""); КонецПроцедуры // ОбработатьУзел() |
|||
30
Fram
21.01.17
✎
01:11
|
Нафига файл когда можно
Иксемель.LoadXML(Ответ); А? |
|||
31
Fram
21.01.17
✎
01:12
|
И открой для себя XPath
|
|||
32
Злопчинский
21.01.17
✎
01:13
|
как бы все получилось, ВПФ к контрагентам пришпилил
осталось повыдергивать атрибуты, значение и текст |
|||
33
Злопчинский
21.01.17
✎
01:13
|
(30) я неграмотный
|
|||
34
Злопчинский
21.01.17
✎
01:14
|
если че я кустарно, по-дедовски распарсю...
https://content.screencast.com/users/Che66/folders/Jing/media/c631883a-84ca-4ae8-bd33-a9ebbe4061a7/2017-01-21_0110.png |
|||
35
Fram
21.01.17
✎
01:15
|
А вообще в V7plus есть класс для работы с XML :)
|
|||
36
Злопчинский
21.01.17
✎
01:16
|
тут интереснее как это разложить нормально из
Состав(xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;xsi:type=АдресРФ): СубъектРФ: КРАСНОЯРСКИЙ край Город: КРАСНОЯРСК г Улица: АКАДЕМГОРОДОК ул ДопАдрЭл(ТипАдрЭл=10100000;Значение=660036): ДопАдрЭл: Номер(Тип=1010;Значение=18): ДопАдрЭл: Номер(Тип=2010;Значение=93): ..разложить в нормальный вид надо где-то вытаскивать схему что и как кодируется в адресных элементах...? где это взять? вот это: xsi:type=АдресРФ |
|||
37
Злопчинский
21.01.17
✎
01:17
|
(35) в7+ не люблю, она мне регулярно прогу крашило, без нее работаю
|
|||
38
Djelf
21.01.17
✎
01:17
|
(29) Небольшая упрощалка
(30) Вылетает на больших файлах. (31) Дал бы ссылку что-ли хоть на это http://www.zvon.org/xxl/XPathTutorial/General_rus/examples.html (34) ns:* убиваю, они мне не нравятся :) |
|||
39
Fram
21.01.17
✎
01:20
|
(38) большие файлы не надо в ДОМ грузить - это г.внокод, только маленькими кусками, потому что дом полностью в память грузится
тоже не понимаю назначение неймспейсов в xml. гемору от них больше чем толку |
|||
40
Злопчинский
21.01.17
✎
01:20
|
как удобно получить/разложить типа?
ТипАдрЭл=10100000 как написать "указивку" что ТипАдрЭл=10100000 - это индекс и надо пихать в реквизит индекс? так чтобы это не писать подробно руками при загрузке? то есть (типа как в снеговике? - чтото там есть) описать соответсвие разных реквизитов разных справочников у меня в базе 77 разным атрибутам разных тегов...??? как расписать что ДопАдрЭл(ТипАдрЭл=10100000; -> индекс ...? |
|||
41
Злопчинский
21.01.17
✎
01:21
|
(39) я ваще не знаю что такое неймспейсы
|
|||
42
Злопчинский
21.01.17
✎
01:23
|
(38) и как красиво сделать чтобы
Состав(xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;xsi:type=АдресРФ): превратилось в Состав(type=АдресРФ): типа...? |
|||
43
Djelf
21.01.17
✎
01:24
|
(39) Ты определись с ответами в (35) и (38).
Они друг другу противоречат. xmllite пережевывает громадные файлы, но с ним работать сложнее |
|||
44
Злопчинский
21.01.17
✎
01:24
|
(38) это не упрощалка, это для получения по именам...
а у меня там функция тупо дерево строит для показа - с мисты содрал давно |
|||
45
Fram
21.01.17
✎
01:30
|
(43) в каком месте?
я так понял из твоего ответа на мое замечание в (30), что ты против LoadXML, потому что он не может валится на больших документах? я ответил, что большие документы не надо грузщить в ДОМ. в данном случае документ небольшой, поэтому у него не должно быть ошибок |
|||
46
Fram
21.01.17
✎
01:30
|
*он может валиться
|
|||
47
Djelf
21.01.17
✎
01:30
|
(44) Не... оно все таки упрощалка! 1С розница как увидит тэг, которго она не знает, в xml, так сразу в незнанку - тэг у вас плохой, контрагент плохой, и вообще вы все плохие!
|
|||
48
Fram
21.01.17
✎
01:32
|
+(45) и даже когда xml читают последовательно, есть смысл куски грузить в DOM, просто потому что работать с DOM удобнее
|
|||
49
Злопчинский
21.01.17
✎
01:33
|
(47) а там что - так же по дедовски читают все теги атрибуты подряд и спотыкаются если тег не определен и что с ним делать..?
|
|||
50
Злопчинский
21.01.17
✎
01:34
|
(48) а это как? пример можно - "читают последовательно .. куски грузить в дом..."..?
|
|||
51
Djelf
21.01.17
✎
01:35
|
(45) А откуда ты знаешь насколько он небольшой?
А завтра в файл ответа напихают столько тэгов, что он разбухнет как космический комар и лопнет при загрузке в 7ку. Тут лучше перестраховаться, либо действовать в зависимости от размера сообщения. |
|||
52
Злопчинский
21.01.17
✎
01:35
|
(47) а так ксати может и правильнее
вот я(ты) определил список тегов и атрибутов нужныхх, по именам их повыдергивал и типа радуемся. а тут появился новый ВАЖНЫЙ ТЭГ - а мы его просто тупо не обрабатываем .. и ничего не знаем... о нем.. а там зашито "клиент=бяка, болше100 рублей не продавать" |
|||
53
Злопчинский
21.01.17
✎
01:36
|
А пример последовательного чтения дайте и как с ним работать..?
|
|||
54
Злопчинский
21.01.17
✎
01:37
|
(52) ..а так попаляс неизвестный тег/атрибут - сразу ломаемся! все понятно - ЧТОТО случилось...
я такой подход бывает тоже юзаю |
|||
55
Fram
21.01.17
✎
01:38
|
(50) ну например тебе могут рпислать 1 xml документ содержащий сотни тысяч узлов содержащих оописание контрагента. в таком случае сам файл следует читать классом для последовательного чтения XML, а узлы описывающие контрагентов загружать в документы ДОМ и уже работать с ДОМом
|
|||
56
Fram
21.01.17
✎
01:38
|
(53) в том же V7Plus есть класс и для последовательно чтения
|
|||
57
Злопчинский
21.01.17
✎
01:41
|
в (0) в итоге - ИП-шники не обрабатываются, возвращается пустой содержательный ответ.
может надо какой-то параметр/атрибут прописать или другой тег запроса использовать - я не нашел где это можно посмотерть... ??? |
|||
58
Djelf
21.01.17
✎
01:42
|
(53) Тут же оно http://www.1cpp.ru/forum/YaBB.pl?num=1332077808
Работает очень быстро и кушает xml`ки вообще любого объема. |
|||
59
Fram
21.01.17
✎
01:42
|
у меня все равно 500 возращает вебсервис. хоть что делай. надо будет через SOAPUI попрбовать
|
|||
60
Злопчинский
21.01.17
✎
01:52
|
(58) учтем. я видел это, но так как с иксемелями работаю редко - то (забыл, хотя в запасниках ссылка лежит) пользуюсь тем что давно адаптировал из сообщественного, хватает
|
|||
61
Злопчинский
21.01.17
✎
01:52
|
(58) то есть это в текущих 1С++?
|
|||
62
Злопчинский
21.01.17
✎
02:00
|
(58) мнеб маленький примерчик чтения/разбора последовательного с этим методами 1С++
|
|||
63
Djelf
21.01.17
✎
02:19
|
(61) Да, есть.
Но последовательный доступ требует больших усилий! Зато не падает. Загрузка хмл лицензий на алкоголь = упало все, кроме xmlite. Было на 1с++ пример чтения всего, что-то потерял ссылку. Была тема... У меня примера нет, ну делал загрузку реестра алколицензий https://cloud.mail.ru/public/3rP9/SJpQW9KDK В этой обработке и разгонял скорость загрузки. Получилось! В обработке есть ВК "Карлик" это ВК на основе curl + 1c, остальное = джентльменский набор. Это легко заменить на загрузку из фала. Больше ничего нет ;( |
|||
64
Злопчинский
21.01.17
✎
03:20
|
(63) попробую не забыть до завтра - стянуть
|
|||
65
vcv
21.01.17
✎
08:24
|
(10) "вводился неверный ИНН - вводил свой"
Для ИНН физического лица другой запрос. А ты запрашиваешь <ns1:getCorporationRequisitesByINN> - информациюо юр.лице по ИНН. |
|||
66
vcv
21.01.17
✎
08:40
|
(57) Смотри https://api.orgregister.1c.ru/orgregister/
Там написано для каждой версии сервиса отдельно. |
|||
67
Злопчинский
21.01.17
✎
09:42
|
(66) чтото я там вообще упоминания не нашел для
<ns1:INN>"+INN+"</ns1:INN> <ns1:configurationName>0</ns1:configurationName> |
|||
68
trdm
21.01.17
✎
10:17
|
(58) Черт, блин, а я очень отстал с версиями 1С++ до сих пор 250х использую :(
|
|||
69
totparen
21.01.17
✎
12:40
|
(64) Не поделитесь ли рабочим кодом парсинга ХМЛ на 1С++ ?
Нужно слезть с v7plus.dll (падает при загрузки XML больше 800 кб.) |
|||
70
totparen
21.01.17
✎
12:59
|
хотя... тут (58) можно разобраться. Пример не сложный.
|
|||
71
Злопчинский
21.01.17
✎
13:06
|
(69) смотри (29) и (38)
код в (29) выводит распарсенный файл в табло Иксемель = СоздатьОбъект("Microsoft.XMLDOM"); Иксемель.Load(ИмяФайла); Корень = Иксемель.DocumentElement; ОбработатьУзел(Корень, 0);//тест чтения Иксемель = ""; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |