Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Загрузка курсов с НБРБ

v7: Загрузка курсов с НБРБ
Я
   Alex_Alexsin_2020
 
16.11.20 - 16:17
Всем привет!

Возможно Каму понадобится написал либу для 7-ки

так как НБРБ теперь работает с протоколом HTTPS я не помнил как работать с данным протоколом в 7-ке

и дабы не переписывать код обработки я написал аналогичную либу
   Alex_Alexsin_2020
 
1 - 16.11.20 - 16:19
alex-cms.by/nbrb/НБРБ HTTPS.zip

Библиотека для загрузки курсов Валют по протоколу HTTPS с НБРБ

Для регистрации библиотеки обязательно установить .Net FrameWork 4.5,
запустить от имени администратора файл reg.bat.

в 1с 7.7 старый код заменить на:


     НБРБ =СоздатьОбъект("AddIn.НБРБ");
    
     ответ = НБРБ.КурсыВалютВXML("https://www.nbrb.by/Services/XmlExRates.aspx?ondate="+ДатаДляФайла,ФайлКурсов);
    
     ответ = "Удачно (Если выполнено удачно)" / "НеУдачно (Если выполнено с ошибками)"
     далее работать как со старой DLL
   Alex_Alexsin_2020
 
2 - 16.11.20 - 16:20
найдете ошибки либо будут пожелания пишите буду делать/исправлять )
   Alex_Alexsin_2020
 
3 - 16.11.20 - 16:22
это Net библиотека поэтому регится не regsvr32 а  RegAsm
   Alex_Alexsin_2020
 
4 - 16.11.20 - 16:23
можно работать с этой обработкой как на 1С 7 так и на 1С 8 (правда для 8-ке не знаю нужно ли она или нет ) :-)
   Alex_Alexsin_2020
 
5 - 16.11.20 - 16:23
разрядность x86 (x32)
   Alex_Alexsin_2020
 
6 - 16.11.20 - 16:41
иногда при регистрации ругается (Не может найти сборку)

пропишите полный путь до длл

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe c:\DLL\WorkNBRB.dll /codebase
@pause
   acht
 
7 - 16.11.20 - 16:48
Чувак. Судя по потрохам твоей dll ты пытался написать внешнюю компоненту 1С по стандартам 1С на c#. Это гиблое занятие, чувак, оно так не работает. Выброси оттуда все, чувак, оставь только свой

public string КурсыВалютВXML(string URL, string Path)
    {
      try
      {
        string requestUriString = URL;
        ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
        WebRequest webRequest = WebRequest.Create(requestUriString);
        webRequest.Credentials = CredentialCache.DefaultCredentials;
        WebResponse response = webRequest.GetResponse();
        StreamReader streamReader = new StreamReader(response.GetResponseStream());
        string end = streamReader.ReadToEnd();
        StreamWriter streamWriter = new StreamWriter(Path);
        streamWriter.WriteLine(end);
        streamWriter.Close();
        streamReader.Close();
        response.Close();
        return "Удачно";
      }
      catch
      {
        return "Ошибка - " + URL + " - " + Path;
      }
    }

Добавь к нему атрибут [COMVisible] и будет ровно тоже самое.
   Alex_Alexsin_2020
 
8 - 16.11.20 - 16:53
(7) да мне нужно было что бы работало оно работает курсы загружает )

закинул сюда если нужно юзайте нет не юзайте )
   acht
 
9 - 16.11.20 - 16:55
(8) Грязные носки дома, небось, также разбрасываешь?
   Alex_Alexsin_2020
 
10 - 16.11.20 - 16:58
(9) неее ))
просто нужно было либо изменить код в 1с 7

но мне было лень я нашел либу для 1С 7 и добавил тупо в нее функцию )

зарегил поменял две строчки в обработке и все работает )
   Alex_Alexsin_2020
 
11 - 16.11.20 - 16:59
но щас сделаю новую )
   big
 
12 - 16.11.20 - 19:10
А что мешает пользовать уже известные инструменты - WinHTTP, curl и т.п?
   Alex_Alexsin_2020
 
13 - 16.11.20 - 20:33
(7) Готово (Та-же ссылка)
   Alex_Alexsin_2020
 
14 - 16.11.20 - 20:34
(12) я ж писал что в 7 не помню как с этим работать

да и по сути делал так что бы не менять код который юзают в РБ
   Alex_Alexsin_2020
 
15 - 16.11.20 - 20:42
(12) прошлая библиотека тупо качала XML в указанный файл

затем в обработке он разбирался 

я что бы не писать нового в обработке тупо сделал библу которая делает то-же

и в обработке заменил две строчки
   Alex_Alexsin_2020
 
16 - 16.11.20 - 20:45
чуть позже выложу библу расширяющую синтаксис до 1с 8

подключив ее можно будет пользоваться всеми прелестями синтаксиса 1С 8
   Alex_Alexsin_2020
 
17 - 16.11.20 - 20:51
(16) когда найду решение юзать ее без
РасширениеСинтаксиса = СоздатьОбъект("AddIn.РасширениеСинтаксиса"); 

МояТаблица = РасширениеСинтаксиса.Новый ТаблицаЗначений;

а должно быть что то типа

Using "AddIn.РасширениеСинтаксиса" 

и далее 

Тупо 
МояТаблица = Новый ТаблицаЗначений;

как это сделать на 1С 7 пока не нашел :-(
   Menahem
 
18 - 05.12.20 - 19:44
Добрый всем!
Предлагаю альтернативный способ решения проблемы используя WinHttp.WinHttpRequest.5.1
Было:
Соединение = СоздатьОбъект("Addin.V7HttpReader"); //с https не работает
Соединение.Получить("https://www.nbrb.by/Services/XmlExRates.aspx?ondate="+СтрД, Текст, 2);

Рабочий вариант:
Соединение = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Соединение.Open("get","https://www.nbrb.by/services/xmlexrates.aspx?ondate="+СтрД, 0); //Открывает HTTP-соединение с HTTP-ресурсом
Соединение.Send();//Отправляет HTTP-запрос на HTTP-сервер  

Текст=Соединение.ResponseText();//Получает тело объекта ответа в виде текста
   big
 
19 - 05.12.20 - 21:15
(18) Продолжайте наблюдение, кэп! )))
   maksoni
 
20 - 05.12.20 - 21:18
Menahem !!! для Server 2008 Обязательно нужно воспользоваться советом slavik 

slavik27  14 16.06.20 19:24
спасибо это работающий и одновременно не работающий метод

к примеру для win 2008 serv, нам оказалось этого недостаточно нужно скачать KB обновление самой компоненты
winhttp (библиотеки wininet.dll которая используется в winhttp)

ссылка для обновлений c сайта microsoft
http://www.catalog.update.microsoft.com/search.aspx?q=kb3140245

и далее еще запустить фикс - делает тоже что описано в этой статье, только автоматом
https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi

там много буков - но где-то по середине текста кнопка Download, по которой скачивается файл MicrosoftEasyFix51044.msi

после всего этого перезагружаем сервер и будет счастье!
   Menahem
 
21 - 05.12.20 - 21:38
(20) Большое спасибо. Учтем!
   Alex_Alexsin_2020
 
22 - 29.03.21 - 16:27
(18) нууу воот всю малину обломали (

:-)

думал прославлюсь как писатель года )))))))))))
   Amazing
 
23 - 29.04.21 - 13:21
Всем добрый день!
Может кто-нибудь знает и подскажет как исправить ошибку при загрузке курсов с НБ РБ - msxml3.dll: The system cannot locate the resource specified.
Заранее спасибо!
   big
 
24 - 29.04.21 - 13:30
(23) Если это происходит при загрузке с помощью внешней компоненты V7Plus, значит на компьютере присутствует (зарегистрирован) парсер XML отличный от версии 3. Это родовой глюк данной компоненты, победить можно либо полным вычищением msxml не 3-й версии, либо загружать другими инструментами.
   victuan1
 
25 - 30.04.21 - 05:44
(23) У вас была установлена какая-то дополнительная программа, которая заменила версии библиотек.

Чтобы их восстановить:
1) Разрегистрируйте msxml4 с помощью утилиты regdllview-32 (см. вложение) - в списке dll ищете  (Ctrl+F) msxml4,
затем правой кнопкой мыши на ней и выбираете команду Unregister Selected Files.
2) Затем снова правой кнопкой мыши по этому же файлу и выбираете команду Delete All Entries For Selected Files.
Если этого файла уже нет, то данный пункт выполнять не нужно.
3) Затем запустите RegXMLDLL.bat
Желательно выполнять действия от имени Администратора.


https://disk.yandex.ru/d/6n5XEeHQ3Y9asT


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.