forum.bitel.ru
http://forum.bitel.ru/

Перенос данных из 1С
http://forum.bitel.ru/viewtopic.php?f=19&t=698
Страница 1 из 2

Автор:  ESV [ 24 янв 2008, 12:52 ]
Заголовок сообщения:  Перенос данных из 1С

Добрый день.
Вопрос такой: в 1С заведено 5000 договоров.
Как перенести данные в биллинг?
Только ручной ввод?
Спасибо.

Автор:  Администратор [ 24 янв 2008, 15:26 ]
Заголовок сообщения: 

Можно сделать загрузку со стороны 1С, вызывая HTTP вызовы сервера биллинга. Запустите bgbilling_debug.bat (.sh) и посмотрите какие запросы идут в журнал log при создании договора и занесении параметров.

Автор:  Roy [ 15 фев 2008, 20:52 ]
Заголовок сообщения: 

А почему бы это не оформить в качестве главы документации?:)

Автор:  stark [ 15 фев 2008, 21:10 ]
Заголовок сообщения: 

Roy писал(а):
А почему бы это не оформить в качестве главы документации?:)


А чем вас не устраивает:
http://bgbilling.ru/v4.4/doc/ch03.html

Автор:  ESV [ 18 мар 2008, 15:56 ]
Заголовок сообщения: 

Добрый день.

Плотно сижу в сабже. С параметрами вроде получается, но как перенести баланс договора (summa5)?
Типа такого?
Код:
ПослатьЗапрос( "module=contract&value=" + balance + "&action=UpdateContractBalance&cid="+ cid +" );

или как-то по-другому?

Спасибо.

Автор:  Администратор [ 18 мар 2008, 16:41 ]
Заголовок сообщения: 

Баланс можно перенести только SQL запросом, вставьте запись в таблицу contract_balance, столбец summa1.

Автор:  ESV [ 18 мар 2008, 17:23 ]
Заголовок сообщения: 

Ясно.
Спасибо.

Автор:  ESV [ 19 мар 2008, 11:37 ]
Заголовок сообщения: 

Добрый день.

Ещё вопрос.
Как изменить только комментарий контракта?
Пробую вот так:
Код:
ПослатьЗапрос( "module=contract&action=UpdateContractTitleAndComment&comment=" + URLEncode(fio) + "&cid=" + cid);
не выходит.

Спасибо.

Автор:  Администратор [ 19 мар 2008, 13:18 ]
Заголовок сообщения: 

Такого действия нет, также только запросом:
Код:
UPDATE contract SET comment='<comment>' WHERE id=<cid>

Автор:  ESV [ 19 мар 2008, 13:46 ]
Заголовок сообщения: 

Понятно.
Всё-таки без SQL не обойтись. Не всё на HTTP замешано.
Спасибо за ответ.

Автор:  Администратор [ 19 мар 2008, 14:29 ]
Заголовок сообщения: 

Да, некоторые действия сервер биллинга просто не выполняет. SQL - это нормально вполне.

Автор:  ESV [ 21 апр 2008, 17:34 ]
Заголовок сообщения: 

Добрый день.
Переношу из 1С IP адреса и логины.
Подскажите, что за параметры
lid, addrRealms
для module=dialup, action=UpdateLoginInfo
Спасибо.

Автор:  Администратор [ 21 апр 2008, 17:50 ]
Заголовок сообщения: 

LoginId - идентификатор логина из таблицы user_login_<mid>

Автор:  ESV [ 22 апр 2008, 09:30 ]
Заголовок сообщения: 

Для IPAddressUpdate:
1) addrRealms и почему в конце %2C
2) addrIps = IP-адрес? и почему в конце %2C
Есть подозрение что придётся делать insertы в какие-то таблицы...
Спасибо.

Автор:  ESV [ 22 апр 2008, 21:09 ]
Заголовок сообщения: 

up

Автор:  Администратор [ 23 апр 2008, 10:56 ]
Заголовок сообщения: 

%2c - это запятая в формате URL-encoding, там просто может быть несколько адресов. Видимо, разделитель добавляется и к одному адресу. Можете не добавлять.

Автор:  ESV [ 23 апр 2008, 12:19 ]
Заголовок сообщения: 

Добрый день.
Два вопроса:
1)Подскажите как вытащить lid?
Делаю так (mid - id модуля Dialup, cid - номер контракта):
Цитата:
od = ПослатьЗапрос( "module=dialup&action=ContractInfo&mid=1&cid=" + cid );

lid = 0;
rc = od.selectNodes( "/data/table/data/row" );
lid = Число( rc.item(0).getAttribute( "f0" ));
Вот что выдаёт обработка 1С:
Цитата:
Запрос: module=dialup&action=ContractInfo&mid=1&cid=425
Результат: <?xml version="1.0"?>
<data status="ok"><table><data/></table></data>


Даёт ошибку:
lid = Число( rc.item(0).getAttribute( "f0" ));
"Плохой тип переменной"

2) Как убрать уже созданные алиасы?

Автор:  Администратор [ 23 апр 2008, 13:12 ]
Заголовок сообщения: 

1) В debug режиме дайте формат запроса биллинга при получении таблицы с логинами в договоре. И попробуйте его в браузер поставить.
2) Нужно сделать update логина с пустым списком алиасов.

Автор:  ESV [ 23 апр 2008, 14:49 ]
Заголовок сообщения: 

Цитата:
1) В debug режиме дайте формат запроса биллинга при получении таблицы с логинами в договоре. И попробуйте его в браузер поставить.

Так это он и есть:
    http://192.168.1.252:8081/bgbilling/executer?module=dialup&action=ContractInfo&mid=1&cid=408&
    [ length = 189 ] xml = <?xml version="1.0" encoding="windows-1251"?>
    <data status="ok"><table><data><row f0="20" f1="1" f2="pupkin1" f3="22.04.2008-" f4="не ограничено" f5="разрешен" f6=""/></data></table></data>
f0 и есть ведь lid?
Как его вытянуть из XML?
Цитата:
2) Нужно сделать update логина с пустым списком алиасов.

Дело как раз в том, что договора уже удалены из биллинга.
И user_login_<mid> пустой. А при добавлении выдаёт что такой алиас уже есть.

Автор:  Администратор [ 23 апр 2008, 15:01 ]
Заголовок сообщения: 

1. Он и есть. Не пойму, почему в отладке 1С пустой ответ у вас. Ищите функцию получения значения атрибута в API.
2. Видимо не удалили из таблицы user_alias_<mid>

Автор:  ESV [ 23 апр 2008, 15:07 ]
Заголовок сообщения: 

по 2) решилось - спасибо.
по 1) можно ссылку на хорошую документацию?

Автор:  Администратор [ 23 апр 2008, 15:21 ]
Заголовок сообщения: 

1) C MsXML Parser SDK шла неплохая..
ftp://bgbilling.ru/pub/soft/xml/msxml4/msxml4.exe

Автор:  ESV [ 24 апр 2008, 12:33 ]
Заголовок сообщения: 

Добрый день.
Есть вопрос:
Что означает check-box "авто" в модуле dialup на закладке Логины -> Общие -> Пароль?
Спасибо.

Автор:  ESV [ 25 апр 2008, 10:30 ]
Заголовок сообщения: 

Доброе утро.
Помогите. Всё работает прекрасно! Но из-за этого проклятого lid...
Простите - вырвалось.
Делаю так:
Код:
Функция ЗапросРадиусАтриб( cid )
 
// послать вот такой запрос:
// http://192.168.1.252:8081/bgbilling/executer?module=dialup&action=ContractInfo&mid=1&cid=388&
od = ПослатьЗапрос( "module=dialup&action=ContractInfo&mid=1&cid=" + cid );

// вот что приходит в ответ:
// <data status="ok"><table><data><row f0="19" f1="1" f2="vasya2" f3="22.04.2008-" f4="не ограничено" f5="разрешен" f6=""/></data></table></data>
   
    lid = 0;

    rc = od.selectNodes( "/data/table/data/row" );

// нам нужно f0
    Если rc.Length > 0 Тогда
         lid = Число( rc.item(0).getAttribute( "f0" ))
    КонецЕсли;
   
    Возврат lid;
КонцФункци

В результате работы rc.Length всегда = 0
Что делать?
Спасибо.

Автор:  Администратор [ 25 апр 2008, 11:26 ]
Заголовок сообщения: 

А если сделать selectNodes( "/data" ), "/data/table" ?

Автор:  ESV [ 25 апр 2008, 12:53 ]
Заголовок сообщения: 

Это не помогает.
Какой-то нужен другой метод...что-бы достучаться до "row"
типа:
documentElement.lastChild
и там уже искать f0
???

Автор:  Администратор [ 25 апр 2008, 16:00 ]
Заголовок сообщения: 

А пример из документации, где договор ищется, работает?

Автор:  ESV [ 25 апр 2008, 16:43 ]
Заголовок сообщения: 

Я же говорю всё прекрасно работает.
Кроме форм где нужно выбирать данные из "row".

Автор:  ESV [ 25 апр 2008, 17:06 ]
Заголовок сообщения: 

Попутный вопрос:
Куда пишуться IP адреса?
А то у меня подозрения, что с этими эксперементами они всё-таки где-то сохраняются.

Автор:  ESV [ 26 апр 2008, 12:38 ]
Заголовок сообщения: 

Добрался до row с помощью такой конструкции:

Код:
    rc = od.getElementsByTagName( "row" );

    lid= 0;
    Если rc.Length > 0 Тогда
        lid = Число( rc.item(0).getAttribute( "f0" ) )
    КонецЕсли;

Всё заработало.

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/