Имя: Пароль:
1C
1C 7.7
v7: Загрузка курсов с НБРБ
,
0 Alex_
Alexsin_2020
 
16.11.20
16:17
Всем привет!

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

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

и дабы не переписывать код обработки я написал аналогичную либу
1 Alex_
Alexsin_2020
 
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
2 Alex_
Alexsin_2020
 
16.11.20
16:20
найдете ошибки либо будут пожелания пишите буду делать/исправлять )
3 Alex_
Alexsin_2020
 
16.11.20
16:22
это Net библиотека поэтому регится не regsvr32 а  RegAsm
4 Alex_
Alexsin_2020
 
16.11.20
16:23
можно работать с этой обработкой как на 1С 7 так и на 1С 8 (правда для 8-ке не знаю нужно ли она или нет ) :-)
5 Alex_
Alexsin_2020
 
16.11.20
16:23
разрядность x86 (x32)
6 Alex_
Alexsin_2020
 
16.11.20
16:41
иногда при регистрации ругается (Не может найти сборку)

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

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe c:\DLL\WorkNBRB.dll /codebase
@pause
7 acht
 
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] и будет ровно тоже самое.
8 Alex_
Alexsin_2020
 
16.11.20
16:53
(7) да мне нужно было что бы работало оно работает курсы загружает )

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

просто нужно было либо изменить код в 1с 7

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

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

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

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

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

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

подключив ее можно будет пользоваться всеми прелестями синтаксиса 1С 8
17 Alex_
Alexsin_2020
 
16.11.20
20:51
(16) когда найду решение юзать ее без

РасширениеСинтаксиса = СоздатьОбъект("AddIn.РасширениеСинтаксиса");

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

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

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

и далее

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

как это сделать на 1С 7 пока не нашел :-(
18 Menahem
 
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(); //Получает тело объекта ответа в виде текста
19 big
 
05.12.20
21:15
(18) Продолжайте наблюдение, кэп! )))
20 maksoni
 
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

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

:-)

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