Пример обращения к биллингу из 1С v.7.7
Материал из BiTel WiKi
Admin (Обсуждение | вклад) м |
Admin (Обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| - | Ниже представлен пример тестовой конфигурации по интеграции биллинга с 1С Бухгалтерией версии 7.7. Для корректной работы конфигурации на компьютере должен быть установлен msxml версии 4.0. Вы можете загрузить его [[Медиа: msxml4. | + | Ниже представлен пример тестовой конфигурации по интеграции биллинга с 1С Бухгалтерией версии 7.7. Для корректной работы конфигурации на компьютере должен быть установлен msxml версии 4.0. Вы можете загрузить его [[Медиа: msxml4.zip]]. При инсталляции данного пакета также устанавливается справочная система по MSXML. В ней вы можете ознакомиться с API функциями для работы с полученным XML деревом. |
В конфигурации привены примеры поиска договора x0000, занесения прихода, просмотра баланса и выполнения произвольного запроса в базе биллинга. Для корректной работы с реальным биллингом необходимо исправить логин и пароль пользователя, URL для подключения к биллингу, название договора. | В конфигурации привены примеры поиска договора x0000, занесения прихода, просмотра баланса и выполнения произвольного запроса в базе биллинга. Для корректной работы с реальным биллингом необходимо исправить логин и пароль пользователя, URL для подключения к биллингу, название договора. | ||
Версия 05:59, 25 апреля 2008
Ниже представлен пример тестовой конфигурации по интеграции биллинга с 1С Бухгалтерией версии 7.7. Для корректной работы конфигурации на компьютере должен быть установлен msxml версии 4.0. Вы можете загрузить его Медиа: msxml4.zip. При инсталляции данного пакета также устанавливается справочная система по MSXML. В ней вы можете ознакомиться с API функциями для работы с полученным XML деревом.
В конфигурации привены примеры поиска договора x0000, занесения прихода, просмотра баланса и выполнения произвольного запроса в базе биллинга. Для корректной работы с реальным биллингом необходимо исправить логин и пароль пользователя, URL для подключения к биллингу, название договора.
Для определения прочих запросов возможно использование режима DEBUG клиента (запуск bgbilling_debug.bat) биллинга, при этом в файл log записываются запросы на сервер и его ответы. К строке запроса выводимой в логе необходимо добавить лишь параметры user и pswd.
Обратите внимание, что все параметры запросов, содержащие русские символы либо спецсимволы &= должны быть обработаны функцией URLEncode.
Для более удобного просмотра результатов запросов их можно вводить в строке браузера.
// кодирование запроса в формате URL Encoded, функция должна быть применена ко всем параметрам запроса,
// содержащим символы, отличные от символов латинского алфавита
Функция URLEncode( value )
table = "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14" +
"%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28" +
"%29%2A%2B%2C%2D%2E%2F%30%31%32%33%34%35%36%37%38%39%3A%3B%3C" +
"%3D%3E%3F%40%41%42%43%44%45%46%47%48%49%4A%4B%4C%4D%4E%4F%50" +
"%51%52%53%54%55%56%57%58%59%5A%5B%5C%5D%5E%5F%60%61%62%63%64" +
"%65%66%67%68%69%6A%6B%6C%6D%6E%6F%70%71%72%73%74%75%76%77%78" +
"%79%7A%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C" +
"%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0" +
"%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4" +
"%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8" +
"%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC" +
"%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0" +
"%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF";
result = "";
length = СтрДлина( value );
Для i = 1 По length Цикл
symbol = Сред( value, i, 1 );
code = КодСимв( symbol );
result = result + Сред( table, code*3 + 1, 3 );
КонецЦикла;
Возврат result;
КонецФункции
// оправка запроса на сервер биллинга
Функция ПослатьЗапрос( query )
// URL сервера биллинга
url="http://192.168.184.2:8080/bgbilling/executer?";
// логин и пароль пользователя биллинга
user="shamil";
pswd ="shamil";
Сообщить( "1" );
Попытка
odd=СоздатьОбъект("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;
// распечатка запросов и ответов, можно включить для отладки
Сообщить( "Запрос: " + query );
Сообщить( "Результат: " + od.xml );
Исключение
Сообщить( "Ошибка: " + ОписаниеОшибки() );
КонецПопытки;
Возврат od;
КонецФункции
// поиск договора по названию, может использоваться для привязки договоров биллинга к 1с
Функция ПоискДоговора( mask )
od = ПослатьЗапрос( "module=contract&action=FilterContract&contractMask=" + mask );
cid = 0;
rc = od.selectNodes( "/data/contracts/item" );
Если rc.Length > 0 Тогда
cid = Число( rc.item(0).getAttribute( "id" ) )
КонецЕсли;
Возврат cid;
КонецФункции
// просмор платежей договора за определенный месяц (необходим код догвоора)
Функция ПросмотрБаланса( cid )
od = ПослатьЗапрос( "module=contract&action=ContractBalance&cid=" + cid );
summa = 0;
rc = od.selectNodes( "/data/table" );
Если rc.Length > 0 Тогда
summa = Число( rc.item(0).getAttribute( "summa5" ) )
КонецЕсли;
Возврат summa;
КонецФункции
// выполнение произвольного SQL запроса
Функция SQLЗапрос( query )
Возврат ПослатьЗапрос( "module=admin&action=SQLEditor&pageSize=1000000&page=1&sql=" + URLEncode( query ) );
КонецФункции
// занесение прихода в договор
Процедура ЗанесениеПрихода( cid, type, summa, comment )
dt = ТекущаяДата();
paymentDate = Формат( dt, "ДДДММГГГГ" );
ПослатьЗапрос( "module=contract&action=UpdateContractPayment&date=" + paymentDate + "&pt=" + type + "&cid=" + cid + "&comment=" + comment + "&summa=" + summa + "&id=new" );
КонецПроцедуры
//
Процедура ПриНачалеРаботыСистемы()
// ищем код договора x0000
cid = ПоискДоговора( "x0000" );
Сообщить( "cid=" + cid );
Если cid > 0 Тогда
// просмотр баланса данного договора за текущий месяц
summa = ПросмотрБаланса( cid );
Сообщить( "Баланс= " + summa );
// занесение прихода в договор
ЗанесениеПрихода( cid, 16, "10", URLEncode( "ая" ) );
// просмотр баланса данного договора за текущий месяц
summa = ПросмотрБаланса( cid );
Сообщить( "Баланс= " + summa );
// произвольный SQL запрос в базу биллинга
od = SQLЗапрос( "SELECT * FROM contract" );
Сообщить( "Результат выборки: " + Лев( od.xml, 400 ) );
КонецЕсли;
КонецПроцедуры
