BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: 13 фев 2014, 05:53 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Пишу скрипт, в котором в зависимости от значения параметра-списка договора ("Да" или "Нет") выполняется условие. Для получения параметра использую getListParamValue. При этом:

- на рабочем биллинге версии 6.0 сборка 1230 возвращается значение pid'a, вместо значения:

Код:
Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);
String str=cpm.getListParamValue(cid,61);
print (str);

OUT:
61


- на тестовом биллинге версии 6.0 сборка 1271 возвращается значение параметра (равное "Нет", то, что мне нужно):

Код:
Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);
String str=cpm.getListParamValue(cid,61);
print (str);

OUT:
Нет


Обновлять биллинг пока не планируется, возможно ли как-то обойти эту проблему без обновления версии?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 08:41 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Версию точно сервера указали? Похоже на версию клиента клиента.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 08:58 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Действительно, ошибся. Версия рабочего сервера:

Сервер: вер. 6.0 сборка 1567 от 23.08.2013 15:56:05
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_35

Версия тестового сервера:

Сервер: вер. 6.0 сборка 1646 от 13.12.2013 17:33:19
os: Linux; java: Java HotSpot(TM) Client VM, v.1.6.0_35


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 12:46 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Ой, чё-то сильно сомневаюсь. Это же серверный класс, который используется для вывода значений списковых параметров в карточке договора. Если бы с ним было что-то не так, то в договоре имели бы тоже хрень.

К тому же у вас неполный код и непонятно всё-ли идентично в обоих биллингах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 12:49 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
barguzin2 писал(а):
Ой, чё-то сильно сомневаюсь. Это же серверный класс, который используется для вывода значений списковых параметров в карточке договора. Если бы с ним было что-то не так, то в договоре имели бы тоже хрень.

К тому же у вас неполный код и непонятно всё-ли идентично в обоих биллингах.

буквально не так давно у меня таже проблема была, это api кривой(у меня по крайнеймере был)поэтому не стоит исключать этот вариант ;-)

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 13:08 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
barguzin2
А какая должна быть идентичность в биллинге? Как ее проверить? На тестовой машине тот же самый биллинг, обновленный до указанной версии. Полный код простой, событие на смену параметра договора:

Код:
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.common.TimeUtils;
import ru.bitel.bgbilling.kernel.event.events.ContractCreatedEvent;
import bitel.billing.server.npay.bean.ServiceObjectManager;
import bitel.billing.server.npay.bean.ServiceObject;
import java.sql.*;
import java.util.Date;
import bitel.billing.server.contract.bean.*;


public class myclass
   extends EventScriptBase
{
   @Override
   public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {

Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);

int cid = event1.getContractId();
String str=cpm.getListParamValue(cid,61);
print (str);

if (str.equals("Да"))
{print("Да");}
if (str.equals("Нет")) {print( "Нет"); }
   }
}


Если "API кривой", то можно ли как-то другим способом получить значение параметра?


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
barguzin2 http://forum.bitel.ru/viewtopic.php?f=22&t=8489&p=69345
можно получить через sql запрос же

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Да, этот метод много лет, до сентября 2013 возвращал pid. Потом поправили. В чём сейчас вопрос то) Можно напрямую через sql запрос. Вот код примерный

Код:
            String query = "SELECT if ( cp.val < 1, cp.custom_value, vls.title ) FROM contract_parameter_type_7 as cp LEFT JOIN contract_parameter_type_7_values as vls ON vls.id=cp.val WHERE cid=? AND cp.pid=?";
            PreparedStatement ps = con.prepareStatement( query );
            ps.setInt( 1, cid );
            ps.setInt( 2, pid );
           ResultSet rs = ps.executeQuery();
            if ( rs.next() )
            {
                result = rs.getString( 1 );
            }
            rs.close();
            ps.close();

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 14:53 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
ну, как вариант, все таки обновиться можно :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 фев 2014, 15:26 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Действительно, про sql я и забыл, принялся думать в сторону получения списка параметров договора и поиска нужного параметра в нем (:

Спасибо за ответы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 фев 2014, 08:10 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Так весь API на своей кухне выполняет SQL-запросы, и порой бывает эффективнее составить специфический запрос, чем использовать последовательность функций API. Поэтому хорошее знание структуры БД БГ не помешает.

dimOn писал(а):
Да, этот метод много лет, до сентября 2013 возвращал pid. ...

т.е. даже не числовое значение спискового параметра val из таблицы contract_parameter_type_7, а тупо код самого параметра (return pid), который передается в метод аргументом ? В чём тайная суть ?


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
barguzin2 писал(а):
dimOn писал(а):
Да, этот метод много лет, до сентября 2013 возвращал pid. ...

т.е. даже не числовое значение спискового параметра val из таблицы contract_parameter_type_7, а тупо код самого параметра (return pid), который передается в метод аргументом ? В чём тайная суть ?

ошибка там была в запросе, перепутаны параметры в SELECT.

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


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

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


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

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


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

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