BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2025, 02:56

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ] 
Автор Сообщение
СообщениеДобавлено: 18 июн 2012, 17:14 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Пытаюсь достучаться к базе биллинга (версия 5.2) из 1С через https посредством MSXML2.XMLHTTP по аналогии с описанным в документации биллинга версии 4.4 способом. Просто потому, что для новых версий соответствующий раздел отсутствует в документации.
Метод Send возвращает ошибку 2146697208 (пытаюсь просто прочитать таблицу договоров точно так же как в клиенте через SQL-редактор).
В режиме отладки клиента биллинга получил нужную строку запроса - она несколько отличается от описанной в старой документации. Но приведение в соответствие с ней не изменило результата.
Может ли это быть из-за того, что в строке запроса присутствует составляющая &BGBillingSecret= с каким-то ключом?
Вместо неё я передаю &user= и &pswd= (как описано).
Что я могу делать не так?
Работает ли вообще в версии 5.2 подобный доступ к таблицам биллинга через https из внешних систем?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 18:04 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
текст ошибки то какой?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 18:29 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
"Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208"
Если подключаю "MSXML2.XMLHTTP.4.0", то (msxml3.dll) ожидаемо меняется на (msxml4.dll) в тексте ошибки.
Код ошибки, если верить гуглу, соответствует слишком общей ошибке, чтобы натолкнуть на конкретную мысль.
Для меня важно для начала знать - работает у кого-то в аналогичных условиях (5.2 и через https извне) или нет.
Чтобы не тратить зря время, если не работает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 18:46 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
В старой документации предлагается генерить такую подстроку для получения результата произвольного запроса к базе биллинга(после строки подключения):
"module=admin&action=SQLEditor&pageSize=100000&sql=" +query . Ну и плюс логин/пароль.
В режиме отладки клиента биллинга 5.2 подсмотрел такую строку:
"module=sqleditor&action=SQLEditor&pageSize=25&base=main&sql=" + query. Порядок параметров подогнал под старый пример для наглядности.
Т.е. как минимум поменялось имя модуля. Ну и еще параметр BGBillingSecret смущает, о котором я писал в сабже.
Ошибку, похоже, возвращает одну и ту же в случае если сервер биллинга отвергает запрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 19:40 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров.
Проверьте разницу между тем что у вас msxml хочет и что ему выдают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 19:54 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
aardvark писал(а):
забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров.
Проверьте разницу между тем что у вас msxml хочет и что ему выдают.

Ага! На это я и надеялся (относительно secret).
В том-то и проблема, что я не могу никакого xml получить :(
Метод send при получении результата POST валит исключение :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 20:11 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Делаю буквально следующее:

Open("POST", "https://СайтБиллинга:ПортБиллинга/bgbilling/executer?", 0)
setRequestHeader("content-type", "application/x-www-form-urlencoded")

Дальше хочу послать простейший запрос для пробы - "select id from contract"
Сначала делал как в старой доке:

Send( "user=Пользователь&pswd=Пароль&module=admin&action=SQLEditor&pageSize=100000&sql=ТекстЗапросаUrlencoded")

Болт. И что уже только не делал. Результат один и тот же...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 21:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код:
Функция ПослатьЗапрос( query )
    // URL сервера биллинга   
   url="http://127.0.0.1:8080/bgbilling/executer?";
    // логин и пароль пользователя биллинга
    user="password";
    pswd ="login:)";
   Попытка 
        odd=Новый COMОбъект("MSXML2.XMLHTTP");   
        odd.Open("Post", url, 0);
        odd.setRequestHeader("content-type", "application/x-www-form-urlencoded");
       
        i = odd.Send( "user="+ user + "&pswd="+ pswd + "&" + query );
        od   =  odd.responseXML;
       
        // распечатка запросов и ответов, можно включить для отладки
      //Сообщить( "Урл: " + url+"user="+ user + "&pswd="+ pswd + "&" + query) ;
      //Сообщить( "Запрос: '" + query + "'");
      //Сообщить( "Результат: " + od.xml );       
    Исключение
        Сообщить( "Ошибка: " + ОписаниеОшибки() );       
    КонецПопытки;   
   
    Возврат od;   
КонецФункции

Функция SQLЗапрос( query )
    Возврат ПослатьЗапрос( "module=sqleditor&action=SQLEditor&pageSize=100000&sql=" + URLEncode( query ) );
КонецФункции

Функция ПолучитьСписокКлиентов()
   SQL= "SELECT c.id, c.title from contract";
   ans = SQLЗапрос( SQL ) ;
   clients = ans.SelectNodes( "data/table/data/row");
   Возврат clients;
КонецФункции



Module=admin в 5.2 уже не работает кстати :)
Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать :lol:

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 22:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
может вам лучше напрямик в БД через ODBC драйвер ломиться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июн 2012, 23:58 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Не знаю у меня вот так вот все работает :)
Еще Ахматом сделанная обработка в 1С :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 04:34 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Phricker писал(а):
Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать :lol:

первого числа в 8 утра? :-D

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 13:37 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Phricker писал(а):
Module=admin в 5.2 уже не работает кстати :)
Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать :lol:


Так тоже делал. Та же самая ошибка.

Но я вроде как докопался до корня зла.
Наконец, сообразил сделать то, что следовало сделать сразу.
Подставил сгенерированную строку запроса тупо в браузер.
А он мне и выдал - "Сертификат не является доверенным для этого сайта бла-бла-бла" (я ведь через https стучусь). Ежели жмешь - все равно выполнить запрос, тогда браузер таки возвращает правильную xml-ку. Но "https" в строке браузера (Chrome) демонстративно перечеркивает.
Т.е. ошибку именно из-за этого возвращает, как я понимаю.
Как это можно обойти самым простым и тупым способом (не покупая кашерного сертификата и т.п)? Извините за возможно ламерский запрос, я в интернет-технологиях не настоящий сварщик.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 13:39 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
skn писал(а):
может вам лучше напрямик в БД через ODBC драйвер ломиться?

Так и делаю для других биллингов. Это запасной вариант.
Просто как правило биллинги не в локалке и приходится еще костыли тулить.
Через http вроде как более кашерно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 13:54 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
рукашы писал(а):
"Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208"
Если подключаю "MSXML2.XMLHTTP.4.0", то (msxml3.dll) ожидаемо меняется на (msxml4.dll) в тексте ошибки.
Код ошибки, если верить гуглу, соответствует слишком общей ошибке, чтобы натолкнуть на конкретную мысль.
Для меня важно для начала знать - работает у кого-то в аналогичных условиях (5.2 и через https извне) или нет.
Чтобы не тратить зря время, если не работает.

а... понял... ошибка 1С а не биллинга.
ну так сам url то доступен вообще 1с-кой? в браузере вы его можете открыть?

upd , ок

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 14:00 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
dimOn писал(а):
а... понял... ошибка 1С а не биллинга.
ну так сам url то доступен вообще 1с-кой? в браузере вы его можете открыть?
upd , ок


Ошибка не биллинга. Но и не 1С. Ошибка при работе через MSXML2.XMLHTTP.
Сертификат сделал доверенным. Любой браузер теперь возвращает правильный ответ без всяких оговорок.
Но при попытке спросить через MSXML2.XMLHTTP эту же фигню по-прежнему возвращает ошибку.
Может, есть еще какие-то тонкости c https через MSXML2.XMLHTTP?
Кто еще забирает данные в 5.2 через https с помощью MSXML2.XMLHTTP?
Отзовитесь!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 14:47 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Не работает только через HTTPS, или через HTTP тоже, или через HTTP проверить нет возможности?
Брандмауэр не закрывает доступ 1C'у для подключения к биллингу?
URL правильный? Протокол https, порт https, метод POST, в URL нет никаких параметров и вопросиков, как при GET, т.е. "https://127.0.0.1:8443/bgbilling/executer"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 15:18 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Amir писал(а):
Не работает только через HTTPS, или через HTTP тоже, или через HTTP проверить нет возможности?
Брандмауэр не закрывает доступ 1C'у для подключения к биллингу?
URL правильный? Протокол https, порт https, метод POST, в URL нет никаких параметров и вопросиков, как при GET, т.е. "https://127.0.0.1:8443/bgbilling/executer"?


Прочитал, что подобная ошибка типична для многих сервисов, когда к ним тупо закрыт доступ (брендмауэром, например). Перепробовал все что мог - отключал брендмауэр, антивирус, в политиках безопасности лазил...
Через http проверить нет возможности. Куда еще можно заглянуть?

Код:
url = "https://Сайт:8443/bgbilling/executer?";
odd.Open("POST", url, 0);
odd.setRequestHeader("content-type", "application/x-www-form-urlencoded");
i = odd.Send("user=Юзер&pswd=Пароль&module=sqleditor&action=SQLEditor&pageSize=100000&sql=%53%45%4C%45%43%54%20%69%64%2C%20%74%69%74%6C%65%20%66%72%6F%6D%20%63%6F%6E%74%72%61%63%74";


Т.е. простой запрос на выборку всех договоров. При вызове метода Send возникает исключение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 16:51 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Пишут:
Цитата:
Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы \bin\cacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 18:31 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Amir писал(а):
Пишут:
Цитата:
Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы \bin\cacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl.

Сделал. Не помогло. Что неудивительно, в принципе.
Это, как я понимаю, рецепт для работы с https через встроенную в 1С обертку для этого дела (есть там соответствующий класс). А я работаю через MSXML2.XMLHTTP (т.е. точно также, как из любого скриптового языка).
Пробовал с разных компов запускать (предварительно установив самоподписанный сертификат как доверенный).
Результат тот же... Разве что вместо кода ошибки возвращает её текстовое описание - "Ошибка загрузки указанного ресурса".
Попробую это дело полностью на JavaScript переписать, чтобы исключить вопрос отношения 1С к этой проблеме...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 19:58 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
В общем, 1С тут точно не причем.
Написал простейший JScript из 4 строчек, ошибка та же самая:

Код:
Connect = new ActiveXObject("MSXML2.XMLHTTP");
Connect.Open("POST", "https://Сайт:8443/bgbilling/executer?",0);
Connect.setRequestHeader("content-type", "application/x-www-form-urlencoded");
Connect.send("user=Логин&pswd=Пароль&module=sqleditor&action=SQLEditor&pageSize=100000&sql=%53%45%4C%45%43%54%20%69%64%2C%20%74%69%74%6C%65%20%66%72%6F%6D%20%63%6F%6E%74%72%61%63%74");


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 19:59 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Что еще можно попробовать, куда посмотреть?
Руки опускаются :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2012, 20:03 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Сертификат - да, самоподписанный.
Но он добавлен в список доверенных корневых и промежуточных центров сертификации (браузеры возвращают результат без вопросов). Может, для MSXML2.XMLHTTP еще нужно где-то его прописать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2012, 19:32 
Не в сети

Зарегистрирован: 18 июн 2012, 15:06
Сообщения: 18
Карма: 0
Продолжение истории здесь: http://forum.bgbilling.ru/viewtopic.php?f=19&t=6885
Может, чем-то кому-то поможет.
Спасибо всем, кто пытался помочь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.078s | 63 Queries | GZIP : On ]