Имя: Пароль:
IT
Админ
Загрузка цен гос. реестра с сайта grls.rosminzdrav.ru
,
0 John83
 
15.10.21
12:28
Жили не тужили, но с пару недель назад перестала работать загрузка цен.
Кто пользуется этим сервисом? Там поменялось чего?
1 John83
 
15.10.21
12:29
код загрузки

    Соединение = Новый HTTPСоединение("grls.rosminzdrav.ru");
    
    ТекЗапрос = Новый HTTPЗапрос("pricelims.aspx");
    
    Попытка
        ТекОтвет = Соединение.ОтправитьДляОбработки(ТекЗапрос);     
        ТекСтрока = ТекОтвет.ПолучитьТелоКакСтроку();
    Исключение
        ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;
        
    
    ТекИмяФайлаПриемника = ПолучитьИмяВременногоФайла("html");
    
    ТекТекстовыйФайл = Новый ТекстовыйДокумент;
    ТекТекстовыйФайл.УстановитьТекст(ТекСтрока);
    ТекТекстовыйФайл.Записать(ТекИмяФайлаПриемника, КодировкаТекста.ANSI);
    
    ТекЧтениеХТМЛ = Новый ЧтениеHTML;
    ТекЧтениеХТМЛ.ОткрытьФайл(ТекИмяФайлаПриемника);
    
    ТекПостроительDOM = Новый ПостроительDOM;
    ТекДокументHTML = ТекПостроительDOM.Прочитать(ТекЧтениеХТМЛ);
    ТекЭлемент = ТекДокументHTML.ПолучитьЭлементПоИдентификатору("ctl00_plate_tdzip");
    
    ТекЧтениеХТМЛ.Закрыть();
    
    ТекИмяФайлаИсточника = "http://grls.rosminzdrav.ru/" + ТекЭлемент.ПервыйДочерний.Гиперссылка;
    ТекИмяФайлаПриемника = ПолучитьИмяВременногоФайла("zip");
2 Garykom
 
гуру
15.10.21
12:30
(0) сервис неустойчиво работает
пробуйте несколько раз и в разное время
3 John83
 
15.10.21
12:36
(2) посмотрел по журналу, даже не две недели, а месяц как не работает
за это время должно было хоть разок загрузиться-то
4 Kassern
 
15.10.21
12:37
(3) ошибка то какая?
5 John83
 
15.10.21
12:39
(4) Значение не является значением объектного типа (ПервыйДочерний)
Вот тут
    Попытка
        ТекОтвет = Соединение.ОтправитьДляОбработки(ТекЗапрос);    
        ТекСтрока = ТекОтвет.ПолучитьТелоКакСтроку();

ТекСтрока уже пустая
6 Garykom
 
гуру
15.10.21
12:41
(5) а это уже как нибудь сами
что там внутри структуры портала поменялось
наймите например программиста чтобы допилил
7 Гость из Мариуполя
 
гуру
15.10.21
13:23
(3) >>  месяц как не работает

аккурат 17.09.2021 на твоем сайте установили новый сертификат безопасности

и адрес в браузере почему то перебрасывает http:// на https://

?
8 John83
 
19.10.21
09:52
(7) и что с этим сертификатом делать? откуда брать? Куда пихать?
Если в коде указать https, то ничего не меняется.
9 Kassern
 
19.10.21
09:55
(8) бядааа... Новый ЗащищенноеСоединение() тебе в помощь при подключении
10 Гость из Мариуполя
 
гуру
19.10.21
12:17
(8) винда какая? Win7? и небось без всех последних (крайних) обновлений?
если да, то та же самая фигня, что и в ветке фнс временно недоступен

решение то же самое - обновить в винде доверенные корневые центры сертификации
только не как там неумеха делает - не файлик pem куда то там подсовывать, а именно - "обновить в системе доверенные корневые центры сертификации"!
11 Kassern
 
19.10.21
12:18
(10) у него же вся проблема тут Соединение = Новый HTTPСоединение("grls.rosminzdrav.ru");
Так это не работает с https смотрите (9)
12 Гость из Мариуполя
 
гуру
19.10.21
12:22
(11) совет в (9) естественно, я ни капельки и не возражаю, это подразумевается. Одно другому не мешает.
но если у него старая винда WIN7, то к этому еще и (10). если нет, то имхо достаточно только совет (9)
13 John83
 
19.10.21
17:12
дело чуть продвинулось, вот так помогло
Соединение = Новый HTTPСоединение("grls.rosminzdrav.ru",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
14 John83
 
19.10.21
17:13
следующая проблема в том, что тут почему-то файл не хочет качаться
    ТекИмяФайлаИсточника = "https://grls.rosminzdrav.ru/" + ТекЭлемент.ПервыйДочерний.Гиперссылка;
    ТекИмяФайлаПриемника = ПолучитьИмяВременногоФайла("zip");
    
    КопироватьФайл(ТекИмяФайлаИсточника, ТекИмяФайлаПриемника);

адрес получается
https://grls.rosminzdrav.ru/GetLimPrice.ashx?FileGUID=9d0d1e64-504f-4747-b78c-c80b7be3858b&UserReq=4633806
При этом в браузере предлагает сохранить файл, а в 1с ругается "ошибка доступа к файлу"
15 John83
 
19.10.21
17:15
если быть точнее
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Ошибка при вызове метода контекста (КопироватьФайл)
    КопироватьФайл(ТекИмяФайлаИсточника, ТекИмяФайлаПриемника);    
по причине:
Ошибка копирования файлов
по причине:
Ошибка доступа к файлу 'https://grls.rosminzdrav.ru/GetLimPrice.ashx?FileGUID=9d0d1e64-504f-4747-b78c-c80b7be3858b&UserReq=5458659'
по причине:
Ошибка работы с Интернет:  Удаленный узел не прошел проверку
16 Kassern
 
19.10.21
17:18
(14) а все потому что КопироватьФайл(ТекИмяФайлаИсточника, ТекИмяФайлаПриемника);  работает только для HTTP!
для защищенного соединения вы должны подключиться с помощью ssl, а далее через Соединение.ВызватьМетод(...) получить ответом файл.
17 Гость из Мариуполя
 
гуру
19.10.21
17:41
(15) >> Ошибка работы с Интернет:  Удаленный узел не прошел проверку
хм..
а можешь показать, что у тебя в IE по такому вот адресу показывается. https://grls.rosminzdrav.ru/help.aspx
Именно в IE.

https://a.radikal.ru/a11/2110/25/eec78b148ffc.png
18 John83
 
19.10.21
17:47
(17) да тоже самое и показывает
19 John83
 
19.10.21
17:48
(16) вот так вроде получилось
Соединение.Получить(ТекЭлемент.ПервыйДочерний.Гиперссылка, ТекИмяФайлаПриемника);
спасибо!!!
20 John83
 
19.10.21
17:48
и всем принявшим участие тоже большое спасибо :)
21 Kassern
 
19.10.21
17:50
(19) Получить() это аналог ВызватьМетод("GET",), а ОтправитьДляОбработки() - аналог ВызватьМетод("POST",)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший