BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 03 май 2011, 12:35 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
И ещё, вот это вот:
Код:
if (status != KernelConst.CONTRACT_STATUS_ACTIVE) {

совершенно бессмысленно, ибо status - это объект ContractStatus, а сравниваете вы его с целочисленной константой. Надо делать getStatus() у status, чтобы получить целый код, а потом сравнивать. Но сначала надо проверить не null ли status. А так как нулл у status означает у нас. что статуса в истории статусов нет => статус догоовра active => считать, что это тоже active. Т.е. последний код превращается во что-то такое (обратите внимание переставил два блока кода), проверкой на null мы заодно защищаемся от NPE:

Код:
   if (status == null || status.getStatus() == KernelConst.CONTRACT_STATUS_ACTIVE) {
      // если статуса не было (нулл) или у сущесвующего код active то делаем что-то:
      print("Из группы Недостаточно средств\n");
      cpu.unsetGroup( cid, 1 );
   }
   else {
      // во всех остальных случаях (статус есть и он не active)
      print("В группу Недостаточно средств\n");
      cpu.setGroup( cid, 1 );//где 0 это код группы
   }

Это все понятно. На null я проверяю (начало топика), а статусы у договора есть (несколько сообщений выше скриншоты), поэтому и не понятно откуда нам постоянно null берется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 12:43 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте…

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


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

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
Ну запрос списка то возвращает что-нибудь по этому cid? Запрос отдельного статуса работает точно так же, только проверяет date1 и date2, что они попадают периодом на переданную дату, так что тоже странно. Скорее всего вы что-то не то туда предаёте…

Тоже хотелось бы разобраться, что я не так делаю. Вещь нужная и нужна думаю многим.
Хотя что там можно сделать не так - ума не приложу :) На список тоже всегда выдает null - это меня и смутило.

Код:
cpu = new ContractParamUtils( con );
 
cid = event.getContractId();
DateNow = new GregorianCalendar();
now = DateNow.getTime();
 
csm  = new ContractStatusManager(con);

// определяем текущий статус договора
StatusContractList = csm.getStatusList(cid, now);
if (StatusContractList.size() == 0) {
   print("Не удалось получить ни одного статуса договора");
   return;
}
 
StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
// определяем текущий статус договора
StatusContractList = csm.getStatusList(cid, now);
if (StatusContractList.size() == 0) {
   print("Не удалось получить ни одного статуса договора");
   return;
}

StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );


Нет! Попробуйте не эту getStatusList, а которая без даты, просто с cid одним.
Если у вас список выдаётся null, как вы утверждаете, то этот скрипт у вас будет падать напрочь и ничего не выводить, потому что проверка StatusContractList.size() == 0 вызовет NPE! Не путайте "вернул null" и "вернул пустой список", это совершенно разные случаи.

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


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 14:00 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
Физически методы getStatusList не могут вернуть null, ни тот ни этот, там внутри в любом случае создаётся ArrayList и возвращается, даже если туда ни одного элемента не добавлено.

По поводу листа не так выразился, сорри. Возвращается ноль элементов, отрабатывает блок:
Код:
if (StatusContractList.size() == 0) {


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 14:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну попробуйте без даты который метод
List<ContractStatus> StatusContractList = csm.getStatusList(cid);
так что возвращает?

вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:07 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
ну попробуйте без даты который метод
List<ContractStatus> StatusContractList = csm.getStatusList(cid);
так что возвращает?

вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов.

вот поэтому мне нужно было и без даты....
многим нужно? Да. я не понимаю, как так не получается, просто 5.1 ставить неохото, и так дел много, но я не думаю что все так плохо, что многое изменилось в 5.1 и переделать там (возможно?) только дебрикейты, а остальное должно работать....я присоеденяюсь к мнению, что делаете что то не так.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:30 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете :facepalm:

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
ну попробуйте без даты который метод
List<ContractStatus> StatusContractList = csm.getStatusList(cid);
так что возвращает?

вы понимаете зачем там параметр дата вообще? Это дата, НАЧИНАЯ С КОТОРОЙ выбираются статусы. Т.е. текущий момент если передадите, то отдастся последний открытый период, если он есть. Или все будущие периоды статусов.

Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно.

Код:
cpu = new ContractParamUtils( con );
 
cid = event.getContractId();
DateNow = new GregorianCalendar();
now = DateNow.getTime();
 
csm  = new ContractStatusManager(con);

// определяем текущий статус договора

StatusContractList = csm.getStatusList(cid);
if (StatusContractList.size() == 0) {
   print("Не удалось получить ни одного статуса договора");
   return;
}
 
StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );


Код:
GENERATE_TIME: 03.05.11 14:45:25
EXECUTION_STOP_TIME: 03.05.11 14:45:25
PROCESS_TIME: 20

OUT:
StatusContract.getStatus():4


Код:
GENERATE_TIME: 03.05.11 14:45:37
EXECUTION_STOP_TIME: 03.05.11 14:45:37
PROCESS_TIME: 1

OUT:
StatusContract.getStatus():4


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 май 2011, 18:02 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
Я ничо не понял, кому что нужно итд. Вы хотите одно, а пишете в коде другое, при этом приводите вообще изначально нерабочий код и не можете объяснить ни что хотите, ни что имеете :facepalm:

на 5.0 у меня все работает идеально :-P

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 11:16 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
mikos писал(а):
Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно.

Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте.

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


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

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
mikos писал(а):
Без даты уже лучше - всегда статус 4 возвращается. Статус у абонента меняю ручками одним и тем же днем с приостановленного на активен и обратно.

Без даты должны вернуться все те периоды статусов, что у вас на картинке (их там по крайней мере 10), а не один статус. Или вы просто реально что-то не то делаете, например не тот cid передаёте.

Как я могу делать что-то не то, если код, весь до строчки, перед Вами? :)
Хорошо, я понял - попробую обновиться и посмотреть все что возвращается в листе, а не только последний элемент - может чего прояснится. Спасибо за помощь.


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну разумеется
Код:
StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );
возвращает блин один статус, потмоу что вы из списка берёте первый статус что там есть и выводите его в консоль.

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


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

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
ну разумеется
Код:
StatusContract = StatusContractList.get(0);
print("StatusContract.getStatus():"+StatusContract.getStatus() );
возвращает блин один статус, потмоу что вы из списка берёте первый статус что там есть и выводите его в консоль.

Я почему-то думал, что нулевой элемент - это последний. Ок, смотрите - почему не выводится последний статус с открытой датой getDateTo? Стоит же статус Приостановлен с 1.05. Почему он только предыдущий вывел?

Код:
cpu = new ContractParamUtils( con );

cid = event.getContractId();
DateNow = new GregorianCalendar();
now = DateNow.getTime();
 
csm  = new ContractStatusManager(con);

// определяем текущий статус договора
print("event.getContractId():"+cid+"\n");
StatusContractList = csm.getStatusList(cid);
if (StatusContractList.size() == 0) {
   print("Не удалось получить ни одного статуса договора");
   return;
}
 
print("StatusContractList.size():"+StatusContractList.size()+"\n");
for( Iterator it = StatusContractList.iterator(); it.hasNext(); ) {
   StatusContract = it.next();
   print("StatusContract.getId():"+StatusContract.getId() );
   print("StatusContract.getContractId():"+StatusContract.getContractId() );
   print("StatusContract.getStatus():"+StatusContract.getStatus() );
   print("StatusContract.getDateFrom():"+StatusContract.getDateFrom() );
   print("StatusContract.getDateTo():"+StatusContract.getDateTo() );
   print("StatusContract.getComment():"+StatusContract.getComment() );
   print("---");
}


Код:
GENERATE_TIME: 04.05.11 11:47:28
EXECUTION_STOP_TIME: 04.05.11 11:47:28
PROCESS_TIME: 12

OUT:
event.getContractId():609

StatusContractList.size():26

StatusContract.getId():2347
StatusContract.getContractId():609
StatusContract.getStatus():4
StatusContract.getDateFrom():2009-09-27
StatusContract.getDateTo():2009-10-21
StatusContract.getComment():
---
StatusContract.getId():3390
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2009-10-22
StatusContract.getDateTo():2009-11-21
StatusContract.getComment():установлен скриптом
---
StatusContract.getId():4592
StatusContract.getContractId():609
StatusContract.getStatus():4
StatusContract.getDateFrom():2009-11-22
StatusContract.getDateTo():2009-12-12
StatusContract.getComment():Недостаточно средств
---
StatusContract.getId():5848
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2009-12-13
StatusContract.getDateTo():2009-12-15
StatusContract.getComment():
---
StatusContract.getId():5946
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2009-12-16
StatusContract.getDateTo():2009-12-31
StatusContract.getComment():Принудительно из доп. действия
---
StatusContract.getId():9099
StatusContract.getContractId():609
StatusContract.getStatus():4
StatusContract.getDateFrom():2010-01-01
StatusContract.getDateTo():2010-01-31
StatusContract.getComment():Недостаточно средств
---
StatusContract.getId():20148
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2010-04-01
StatusContract.getDateTo():2010-09-08
StatusContract.getComment():
---
StatusContract.getId():37664
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2010-09-09
StatusContract.getDateTo():2010-09-22
StatusContract.getComment():Недостаточно средств
---
StatusContract.getId():38887
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2010-09-23
StatusContract.getDateTo():2010-09-24
StatusContract.getComment():
---
StatusContract.getId():38935
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2010-09-25
StatusContract.getDateTo():2010-12-25
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():45562
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2010-12-26
StatusContract.getDateTo():2010-12-26
StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу
---
StatusContract.getId():45563
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2010-12-27
StatusContract.getDateTo():2011-01-01
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():46540
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-01-02
StatusContract.getDateTo():2011-01-24
StatusContract.getComment():
---
StatusContract.getId():47381
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-01-25
StatusContract.getDateTo():2011-03-03
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():52046
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-03-04
StatusContract.getDateTo():2011-03-04
StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу
---
StatusContract.getId():52054
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-03-05
StatusContract.getDateTo():2011-03-09
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():52244
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-03-10
StatusContract.getDateTo():2011-03-15
StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу
---
StatusContract.getId():52390
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-03-16
StatusContract.getDateTo():2011-03-17
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():52474
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-03-18
StatusContract.getDateTo():2011-03-18
StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа'
---
StatusContract.getId():52492
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-03-19
StatusContract.getDateTo():2011-04-11
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():54747
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-12
StatusContract.getDateTo():2011-04-12
StatusContract.getComment():Разблокирован модулем абонплат по достаточному платежу
---
StatusContract.getId():54750
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-04-13
StatusContract.getDateTo():2011-04-25
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():55110
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-26
StatusContract.getDateTo():2011-04-26
StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа'
---
StatusContract.getId():55116
StatusContract.getContractId():609
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-04-27
StatusContract.getDateTo():2011-04-27
StatusContract.getComment():Недостаток средств для начисления абонплаты
---
StatusContract.getId():55145
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-28
StatusContract.getDateTo():2011-04-29
StatusContract.getComment():Статус изменен скриптом 'Включение должников по приходу платежа'
---
StatusContract.getId():56840
StatusContract.getContractId():609
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-30
StatusContract.getDateTo():2011-04-30
StatusContract.getComment():
---


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Должно всё работать, код корректный 100%

ок, выполните в SQLРедакторе

SELECT * FROM contract_status WHERE cid=609 ORDER BY date1

и поглядите какие там строки? это полная аналогия метода
Код:
public List<ContractStatus> getStatusList( int cid )
       throws SQLException

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 14:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Вставил ваш код себе в редактор глобальных скриптов, чуть подкорректировал, нажал выполнить. Как говорится, УМВР.

Цитата:
GENERATE_TIME: 04.05.11 14:11:49
EXECUTION_STOP_TIME: 04.05.11 14:11:49
PROCESS_TIME: 78

OUT:
event.getContractId():352715

StatusContractList.size():6

StatusContract.getId():48715
StatusContract.getContractId():352715
StatusContract.getStatus():4
StatusContract.getDateFrom():2007-09-01
StatusContract.getDateTo():2011-03-31
StatusContract.getComment():стереть
---
StatusContract.getId():48882
StatusContract.getContractId():352715
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-01
StatusContract.getDateTo():2011-04-15
StatusContract.getComment():
---
StatusContract.getId():48886
StatusContract.getContractId():352715
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-16
StatusContract.getDateTo():2011-04-17
StatusContract.getComment():
---
StatusContract.getId():48893
StatusContract.getContractId():352715
StatusContract.getStatus():3
StatusContract.getDateFrom():2011-04-18
StatusContract.getDateTo():2011-04-29
StatusContract.getComment():
---
StatusContract.getId():48890
StatusContract.getContractId():352715
StatusContract.getStatus():0
StatusContract.getDateFrom():2011-04-30
StatusContract.getDateTo():2011-04-30
StatusContract.getComment():
---
StatusContract.getId():48889
StatusContract.getContractId():352715
StatusContract.getStatus():4
StatusContract.getDateFrom():2011-05-01
StatusContract.getDateTo():null
StatusContract.getComment():стереть
---


Вложения:
fjfvbgfjgfhkjgi.png
fjfvbgfjgfhkjgi.png [ 8.77 КБ | Просмотров: 3397 ]

_________________
I'm clever. I've got a computer.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 14:20 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Посмотрел специально сейчас - в 5.1 такой же код, как в 5.2 и такой же как в 5.0 в принципе.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 14:29 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Значит остается только попробовать обновиться :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 14:35 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Кстати, это не может быть связано с событием, где отрабатывает этот скрипт? У меня он повешен на событие - Изменение статуса договора.

PS: В SQL редакторе выводятся все статусы, вместе с последним.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 май 2011, 15:14 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
если речь о синхронном ContractStatusChangingEvent, то он вызывается ДО апдейта в БД (т.е. если речь о добавлении статуса, то ДО инсерта в БД) соответствующего статуса, разумеется. ведь он позволяет сменить статус. асинхронный ContractStatusChangedEvent вызывается уже после апдейта.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 май 2011, 22:23 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
если речь о синхронном ContractStatusChangingEvent, то он вызывается ДО апдейта в БД (т.е. если речь о добавлении статуса, то ДО инсерта в БД) соответствующего статуса, разумеется. ведь он позволяет сменить статус. асинхронный ContractStatusChangedEvent вызывается уже после апдейта.

Ммм, не выделывался, просто использовал стандартное событие скриптов поведения.


Вложения:
Снимок экрана 2011-05-05 в 8.20.57 PM.png
Снимок экрана 2011-05-05 в 8.20.57 PM.png [ 52.28 КБ | Просмотров: 3379 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 май 2011, 01:26 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну вот, я ж вам сказал что "изменение статуса договора" и "статус договора был изменён" это два совершенно разных события, вызывающихся из разных мест кода, и являющиеся одно синхронным, другое асинхронным. Это, кстати, в доке прописано. А вот тут и про события и про названия классов событий: http://bgbilling.ru/v5.1/doc/ch02s02s01.html

Если вы добавляете сейчас последний промежуток статуса, то в скрипте на первом событии если вы прочтёте ИЗ БАЗЫ, то его не будет там, поотму что оно туда ещё не писалось. Но, замечу, как раз ОН пришёл в событии этом. И вы можете его как угодно поменять и потом уже оно запишется в базу и вызовется другое событие, уже асинхронное.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 май 2011, 01:30 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
dimOn писал(а):
Ну вот, я ж вам сказал что "изменение статуса договора" и "статус договора был изменён" это два совершенно разных события, вызывающихся из разных мест кода, и являющиеся одно синхронным, другое асинхронным. Это, кстати, в доке прописано. А вот тут и про события и про названия классов событий: http://bgbilling.ru/v5.1/doc/ch02s02s01.html

Если вы добавляете сейчас последний промежуток статуса, то в скрипте на первом событии если вы прочтёте ИЗ БАЗЫ, то его не будет там, поотму что оно туда ещё не писалось. Но, замечу, как раз ОН пришёл в событии этом. И вы можете его как угодно поменять и потом уже оно запишется в базу и вызовется другое событие, уже асинхронное.

Ох, вот жеж:( Спасибо, не заметил второго типа события :(


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.

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


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

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


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

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