BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 10 май 2024, 11:07

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




Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 28 янв 2009, 20:03 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
dimOn писал(а):
skandinav писал(а):
проблемы только от надменности некоторых товарищей. за почти два десятилетия работы в IT индустрии я привык идти путем "документация -> форумы (фидошное время эхи соотв направления) -> поисковик -> вопросы". данный тред создан уже после того, как все возможные пути были исчерпаны.
а по поводу документации... давно уже не считается хорошим тоном после написания функции/объекта набросать пару строк о том, что именно он делает, какие параметры принимает, и как взаимодействует с другими объектами. не смотря на то, что разработана неимоверная куча разного уровня удобства RADов... что есть печально...
Ну, хорошо, Вы уже почти убедили меня, что я (в том числе) живу за печкой, и ни о каких таких системах-контроля-версий знать не знаю, итд; но Вы поймите, что форум - это не техподдержка, это всё добровольное.
А по поводу неправильной разработки - ну тут сказать нечего. Всегда находятся люди которые работают на чём-то и всем довольны (хотя всеми аспектами чего-либо быть довольным в этой области нельзя, Вы это как человек с двумя десятилетиями в IT-индустрии должны прекрасно понимать) или недовольства свои решают доступными средствами. И с другой стороны, я покажу кучу людей, которые расскажут Вам, что Микрософт неправильно всё разрабатывает, не так документирует и вообще там все ламеры.
Это всё склоки и благоприятная почва для холиваров, не более.


$sudo echo 0 > /proc/sys/kernel/holywar_mode

я не могу уверенно утверждать знакомы ли лично вы с subvertion, git или любой другой, из великой кучи, систем контроля версий в разработке... но судя по вашему опубликованному описанию интерфейса прикладного программирования под BGBilling, лидирующее, с большим отрывом, большинство вашей команды, ни о чем подобном и слыхом не слыхивало. как, собственно, и о красивом стиле программирования. IMHO, предварять обучение C подобным языкам просто необходимо обучением программированию на паскале. приучает к аккуратности, знаете ли.

З.Ы. связка
nt = new RegisterTask(); rtm = new registertaskManager(); nt.setExecutors(some_executors_list); rtm.updateExecutorsList(nt,"");
нифига не работает :)

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 янв 2009, 21:31 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
skandinav писал(а):
З.Ы. связка
nt = new RegisterTask(); rtm = new registertaskManager(); nt.setExecutors(some_executors_list); rtm.updateExecutorsList(nt,"");
нифига не работает :)


и не должна... так как кроме списка нужен еще и код задачи (id)
Код:
nt = new RegisterTask();
rtm = new registertaskManager();
nt.setExecutors(some_executors_list);
rtm.updateTask(nt);
rtm.updateExecutorsList(nt,"");


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 04:49 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
skn писал(а):
skandinav писал(а):
З.Ы. связка
nt = new RegisterTask(); rtm = new registertaskManager(); nt.setExecutors(some_executors_list); rtm.updateExecutorsList(nt,"");
нифига не работает :)


и не должна... так как кроме списка нужен еще и код задачи (id)
Код:
nt = new RegisterTask();
rtm = new registertaskManager();
nt.setExecutors(some_executors_list);
rtm.updateTask(nt);
rtm.updateExecutorsList(nt,"");


дак код задачи (integer) или ссылка на объект задачи?
может быть
Код:
rtm.updateExecutorsList(nt.getID(),"");


ну или как то так.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 06:16 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
Итак. Вернемся к началу.

Скрипт:

Код:
import java.sql.*;
import java.util.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.util.*;
import bitel.billing.server.model.*;
import ru.bitel.bgbilling.plugins.crm.server.bean.*;
import ru.bitel.bgbilling.plugins.crm.server.dao.*;
import ru.bitel.bgbilling.plugins.crm.common.model.*;

int DATE_ZAKL_DOG = 25;
int ADDR = 7;
int FIO = 9;
int TYPE_ID = 5;
rtm = new RegisterTaskManager(con);

payment = event.getPayment();
cid = event.getContractID();
CM = new ContractManager ( con );
cpu = new ContractParamUtils ( con );
cont = cpu.getDateParam (cid , DATE_ZAKL_DOG );
contr = CM.getContractByID( cid );
capv = cpu.getAddressParam(cid,ADDR);
print ("CID: " + cid);
filter = new RegisterTaskManager.TaskFilter();
filter.cid = cid;
filter.orders = new ArrayList();

if ( cont == null ) {
   cpu.setDateParam ( cid, DATE_ZAKL_DOG, payment.getDate().getTime() );
   contr.setComment ( cpu.getStringParam ( cid, FIO ));
      query = "UPDATE contract SET comment=? WHERE id=?";
      psUpdate = con.prepareStatement( query );
      psUpdate.setString( 1, cpu.getStringParam ( cid, FIO ));
      psUpdate.setInt( 2, cid );
      psUpdate.executeUpdate();
      print ("Contract comment: " + contr.getComment());
      print ("Contract FIO: " + cpu.getStringParam(cid, FIO));
//         if ( rtm.getTaskCount(filter) > 0 ) {
//            prt = rtm.getTaskList(filter, new Page (0,0));
//            prts = prt.size();
//            print ("prt.size();" + prt.size()+"rtm.getTaskCount(filter)"+rtm.getTaskCount(filter));
//            for (int i=0; i<prts;i++) {
//            obj = prt.get(i);
//            task = obj.getTask();
//            print ( "Contract : "+obj.getContract() );
//            print ( "comment :" + task.getComment() + " Status :" + task.getStatus());
//            }
            
//         } else {
            print (" no task count, making new task" );
            curtime = payment.getDate().getTime();
            nt = new RegisterTask();
            rtm.loadExecutorList(nt);
            lst = nt.getExecutors();
            lst.clear();
            query = "SELECT * FROM register_executor";
            re = con.prepareStatement(query);
            ResultSet re = re.executeQuery();
//            re.first();
            while (re.next()) {
            if (capv.getAddress().indexOf(re.getString(2)) != -1) {
            print (re.getString(2) +" | "+ capv.getAddress() +" | "+ re.getInt(1));
            print(capv.getAddress().indexOf(re.getString(2)));
            lst.add(re.getInt(1));
            if (lst.isEmpty()) {
            print ("Empty");
            }else {
            for (int i=0; i<lst.size(); i++) {
            if ( i>0 ) {
            execlst = ","+lst.get(i);
            } else {
            execlst = lst.get(i);
            }
            }}
            nt.setExecutors(lst);
            break;
            }
            }
            ttt = nt.getExecutors();
            for (int i=0; i<ttt.size(); i++) {
            print ("tttttttt : "+ttt.get(i));
            }            
            nt.setAddressObjectId(7);
            nt.setAddressParamID(7);
            nt.setAcceptUserID(payment.getUserID());
            nt.setCloseUserID(payment.getUserID());
            nt.setCreateUserID(payment.getUserID());
            nt.setLastmodTime(curtime);
            nt.setLastmodUserID(payment.getUserID());
            nt.setOpenTime(curtime);
            nt.setOpenUserID(payment.getUserID());
            nt.setProcessed(true);
            nt.setResolution("Новое подключение. Задача сгенерирована скриптом");
            nt.setTargetDate(curtime);
            nt.setAcceptTime(curtime);
            nt.setCloseTime(curtime);
            nt.setComment("Сделано скриптом");
            nt.setCreateTime(curtime);
            nt.setExecuteDate(curtime);
            nt.setStatus(2);
            nt.setContractID(cid);
            nt.setTypeID(TYPE_ID);
            rtm.updateTask("new", nt);
            rtm.updateExecutorList (nt, "");
//               }
} else {
      print ("this task can not be processed! date of contract confirmation is already set");
return;
      }


Отладочный вывод скрипта:

Изображение

Результат работы скрипта:

Изображение

цель, привязать исполнителя к задаче CRM.

ЧЯДНТ?

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 06:19 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
skandinav писал(а):
$sudo echo 0 > /proc/sys/kernel/holywar_mode

я не могу уверенно утверждать знакомы ли лично вы с subvertion, git или любой другой, из великой кучи, систем контроля версий в разработке... но судя по вашему опубликованному описанию интерфейса прикладного программирования под BGBilling, лидирующее, с большим отрывом, большинство вашей команды, ни о чем подобном и слыхом не слыхивало. как, собственно, и о красивом стиле программирования. IMHO, предварять обучение C подобным языкам просто необходимо обучением программированию на паскале. приучает к аккуратности, знаете ли.

Выключает свой холивор, а меж тем продолжает вы..ываться про свои системы контроля версий. Г...о вы, а не IT-ик с 20-летним стажем. :evil:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 08:26 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
Victor писал(а):
skandinav писал(а):
$sudo echo 0 > /proc/sys/kernel/holywar_mode

я не могу уверенно утверждать знакомы ли лично вы с subvertion, git или любой другой, из великой кучи, систем контроля версий в разработке... но судя по вашему опубликованному описанию интерфейса прикладного программирования под BGBilling, лидирующее, с большим отрывом, большинство вашей команды, ни о чем подобном и слыхом не слыхивало. как, собственно, и о красивом стиле программирования. IMHO, предварять обучение C подобным языкам просто необходимо обучением программированию на паскале. приучает к аккуратности, знаете ли.

Выключает свой холивор, а меж тем продолжает вы..ываться про свои системы контроля версий. Г...о вы, а не IT-ик с 20-летним стажем. :evil:


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

в любом случае, мои диалоги с разработчиками вас ни коим образом не касаются и какой бы то ни было тон, принятый в этих диалогах, не дает вам права делать личные выпады в мою сторону. тем более, что выпады эти совершенно безосновательные.
за сим, настоятельно рекомендую вам, милейший, засунуть ваш длинный язык натурально в двенадцатиперстную кишку и не флудить оффтопик.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Последний раз редактировалось skandinav 29 янв 2009, 11:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 11:23 
Не в сети

Зарегистрирован: 27 апр 2007, 06:28
Сообщения: 32
Откуда: Владивосток
Карма: 0
skandinav, у Подряда куча филиалов от Сахалина до Урала. Таких как деревенька Victora с несколько десятков будет. Своих не трогаем пусть растут, а они видишь как к нам ... пригрели ... запазухой. Вы, Victor, с кодировкой CTI разобрались, то за 2 года? Модуль управления CTI вместе будем писать или нам всё самим?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 11:24 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
:lol:
Говорят тут посмеяться можно :D :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 13:39 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
попробуйте для задачи еще задать
Код:
task.setGroupID(int)

и посмотрите какие записи в БД добавляются

Код:
   public void updateTask( String id, RegisterTask task )
   {
      try
      {
         String query = null;
         PreparedStatement ps = null;

         if( id.equals( "new" ) )
         {
            query = "INSERT INTO register_task " +
                  "(cid, type, open_dt, open_uid, accept_dt, accept_uid, " +
                  "close_dt, close_uid, status, target_dt, comment, gr, resolution, prid, execute_dt, apid, processed," +
                  "lm_dt, lm_uid, aobject_id ) " +
                  "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            ps = con.prepareStatement( query );
         }
         else
         {
            query = "UPDATE register_task SET cid=?, type=?, open_dt=?, open_uid=?, accept_dt=?, accept_uid=?, " +
                  "close_dt=?, close_uid=?, status=?, target_dt=?, comment=?, gr=?, resolution=?, prid=?, execute_dt=?, apid=?, processed=?, lm_dt=?, lm_uid=?, aobject_id=? WHERE id=?";
            ps = con.prepareStatement( query );

            ps.setInt( 21, CommonUtils.parseIntString( id, 0 ) );
         }

         ps.setInt( 1, task.getContractID() );
         ps.setInt( 2, task.getTypeID() );
         ps.setTimestamp( 3, TimeUtils.convertDateToTimestamp( task.getOpenTime() ) );
         ps.setInt( 4, task.getOpenUserID() );
         ps.setTimestamp( 5, TimeUtils.convertDateToTimestamp( task.getAcceptTime() ) );
         ps.setInt( 6, task.getAcceptUserID() );
         ps.setTimestamp( 7, TimeUtils.convertDateToTimestamp( task.getCloseTime() ) );
         ps.setInt( 8, task.getCloseUserID() );
         ps.setInt( 9, task.getStatus() );
         ps.setDate( 10, TimeUtils.convertDateToSqlDate( task.getTargetDate() ) );
         ps.setString( 11, task.getComment() );
         ps.setInt( 12, task.getGroupID() );
         ps.setString( 13, task.getResolution() );
         ps.setInt( 14, task.getProblemID() );
         ps.setDate( 15, TimeUtils.convertDateToSqlDate( task.getExecuteDate() ) );
         ps.setInt( 16, task.getAddressParamID() );
         ps.setBoolean( 17, task.isProcessed() );
            ps.setTimestamp( 18, TimeUtils.convertDateToTimestamp( task.getLastmodTime() ) );
            ps.setInt( 19, task.getLastmodUserID() );
            ps.setInt( 20, task.getAddressObjectId() );

         ps.executeUpdate();

         if( id.equals( "new" ) )
         {
            task.setID( Utils.lastInsertId( ps ) );
         }
         else
         {
            task.setID( CommonUtils.parseIntString( id, 0 ) );
         }
         ps.close();
      }
      catch ( Exception ex )
      {
         ex.printStackTrace();
      }
   }


Код:
   public void updateExecutorList( RegisterTask task, String groupExecutors )
   {
      String query = null;
      PreparedStatement ps = null;

      try
      {
         if ( CommonUtils.notEmptyString( groupExecutors ) )
         {
            // удаляем только исполнителей из текущей группы
            query = "DELETE FROM register_task_executor WHERE tid=? ";
            query += " AND eid IN ( " + groupExecutors + ")";

            ps = con.prepareStatement( query );
            ps.setInt( 1, task.getID() );
            ps.executeUpdate();
            ps.close();
         }

         query = "INSERT INTO register_task_executor (tid, eid) VALUES (?, ?)";
         ps = con.prepareStatement( query );
         ps.setInt( 1, task.getID() );
         for( Integer executor : task.getExecutors() )
         {
            ps.setInt( 2, executor );
            ps.executeUpdate();
         }
         ps.close();
      }
      catch ( Exception ex )
      {
         ex.printStackTrace();
      }
   }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 13:58 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
skn
подскажите, а вот список привязанных исполнителей к задаче случаем не выбирается конструкцией типа
Код:
query="SELECT * FROM register_task_executor WHERE tid=?";
ps.PrepareStatement(query);
ps.setString(1,some-task-object.getId());


может быть вообще не стоило закапываться в API BGBS а тупо выделать необходимое мне сиквел запросами?...хоть сие и "не айс"...

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 14:51 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Код:
   public void loadExecutorList( RegisterTask task )
   {
      try
      {
         List<Integer> executors = new ArrayList<Integer>();
         String query = "SELECT eid FROM register_task_executor WHERE tid=?";
         PreparedStatement ps = con.prepareStatement( query );
         ps.setInt( 1, task.getID() );
         ResultSet rs = ps.executeQuery();
         while( rs.next() )
         {
            executors.add( new Integer( rs.getInt( 1 ) ) );
         }
         ps.close();
         task.setExecutors( executors );
      }
      catch ( Exception ex )
      {
         ex.printStackTrace();
      }
   }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 15:45 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
из какой, чьорт побьери, таблицы берется инфа для:

Изображение

это в закладке CRM договора.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 15:46 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
skandinav писал(а):
dimOn писал(а):
skandinav писал(а):
проблемы только от надменности некоторых товарищей. за почти два десятилетия работы в IT индустрии я привык идти путем "документация -> форумы (фидошное время эхи соотв направления) -> поисковик -> вопросы". данный тред создан уже после того, как все возможные пути были исчерпаны.
а по поводу документации... давно уже не считается хорошим тоном после написания функции/объекта набросать пару строк о том, что именно он делает, какие параметры принимает, и как взаимодействует с другими объектами. не смотря на то, что разработана неимоверная куча разного уровня удобства RADов... что есть печально...
Ну, хорошо, Вы уже почти убедили меня, что я (в том числе) живу за печкой, и ни о каких таких системах-контроля-версий знать не знаю, итд; но Вы поймите, что форум - это не техподдержка, это всё добровольное.
А по поводу неправильной разработки - ну тут сказать нечего. Всегда находятся люди которые работают на чём-то и всем довольны (хотя всеми аспектами чего-либо быть довольным в этой области нельзя, Вы это как человек с двумя десятилетиями в IT-индустрии должны прекрасно понимать) или недовольства свои решают доступными средствами. И с другой стороны, я покажу кучу людей, которые расскажут Вам, что Микрософт неправильно всё разрабатывает, не так документирует и вообще там все ламеры.
Это всё склоки и благоприятная почва для холиваров, не более.


$sudo echo 0 > /proc/sys/kernel/holywar_mode

я не могу уверенно утверждать знакомы ли лично вы с subvertion, git или любой другой, из великой кучи, систем контроля версий в разработке... но судя по вашему опубликованному описанию интерфейса прикладного программирования под BGBilling, лидирующее, с большим отрывом, большинство вашей команды, ни о чем подобном и слыхом не слыхивало. как, собственно, и о красивом стиле программирования. IMHO, предварять обучение C подобным языкам просто необходимо обучением программированию на паскале. приучает к аккуратности, знаете ли.
Не очень понятно, конечно, как система контроля версий зависима с описанием програмного интерфейса, но Вам лучше знать...
Но если интересно - у нас, конечно же, используется svn; уж не знаю как там было 20-лет-назад у программистов на паскале, но опять же непонятно, как по-Вашему выглядит в наше время коллективная разработка без подобной системы.
Ну а уж о стиле программирования я снова замечание проигнорирую, ибо это смешно как бы, подобное обсуждать... Но если у Вас есть в личном IT-опыте разработка, которая ведётся десяток лет немалой командой программистов, и с более красивой программной структурой - не знаю, как остальная часть команды, но я бы с удовольствием ознакомился :roll:

Да и вообще, подобная полная открытость интерфейса - это благо, которому надо радоваться, а не ворчать на какие-то там возможные косяки, которые лично Вам кажутся нелогичными)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 16:01 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
Цитата:
а вы, собственно, кто? я не узнаю вас в гриме. странный выпад в сторону компании Подряд.. личный выпад в мою сторону..

Ничего странного, знаю не по наслышке о том, что и как делается в этой компании.
Личный выпад всего-лишь был ответом на то высокомерие и то пренебрежение знаниями разработчиков данного продукта. Вы практически вывалили свой толстый длинный член на стол (20 лет IT, CVS, subversion, фидо и еще куча разных умных слов) и сказали: "смотрите", а другие просто в силу природной скромности промолчали.
А я в силу своей природной нескромности ответил, куда запихать это добро.
Неужели вы надеетесь на помощь с вашими проблемами, после того, как вы прилюдно обвинили разработчиков в некомпетентности?

Цитата:
за сим, настоятельно рекомендую вам, милейший, засунуть ваш длинный язык натурально в двенадцатиперстную кишку и не флудить оффтопик.

А вот куда кому и что засунуть пусть решают админы этого форума.

Ce$$ писал(а):
skandinav, у Подряда куча филиалов от Сахалина до Урала. Таких как деревенька Victora с несколько десятков будет. Своих не трогаем пусть растут, а они видишь как к нам ... пригрели ... запазухой. Вы, Victor, с кодировкой CTI разобрались, то за 2 года? Модуль управления CTI вместе будем писать или нам всё самим?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 16:08 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
dimOn писал(а):
Не очень понятно, конечно, как система контроля версий зависима с описанием програмного интерфейса, но Вам лучше знать...
Но если интересно - у нас, конечно же, используется svn; уж не знаю как там было 20-лет-назад у программистов на паскале, но опять же непонятно, как по-Вашему выглядит в наше время коллективная разработка без подобной системы.
Ну а уж о стиле программирования я снова замечание проигнорирую, ибо это смешно как бы, подобное обсуждать... Но если у Вас есть в личном IT-опыте разработка, которая ведётся десяток лет немалой командой программистов, и с более красивой программной структурой - не знаю, как остальная часть команды, но я бы с удовольствием ознакомился :roll:

Да и вообще, подобная полная открытость интерфейса - это благо, которому надо радоваться, а не ворчать на какие-то там возможные косяки, которые лично Вам кажутся нелогичными)


блин... не нужно передергивать. сабвершн облегчает совместную разработку, РАДы ускоряют разработку. освобождая время на документирование и анализ. я лишь это имел ввиду. почему, в те далекие времена, когда РАДов как таковых не было... если конечно не считать РАДом multieditor... исходники товарищей по оружию читались легко и приятно благодаря обилию коментариев. за счет которых документировать АПИ можно было простым копипастом комментов из кода. хотя продукты писались по сложности кода не уступающие настоящим...

З.Ы.
#echo "kernel.holywar_mode = 0" >> /etc/sysctl.conf && sysctl -p /etc/sysctl.conf
P.P.S. На предыдущий пост ответите?
P.P.P.S. 2 Victor вы неадекватны.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 17:24 
Не в сети

Зарегистрирован: 27 апр 2007, 06:28
Сообщения: 32
Откуда: Владивосток
Карма: 0
Victor, хорошо, что ваша деревенька не крупнейшая на планете земля.
И полагаю ваши монтажники ездят на ролсах на работу.
Не знаю, что будет если шеф решит строится в Артёме. Но когда когда кончится кризис, и откроются кредиты, вымпелком прихлопнет вас да и нас наверно тоже как мух. На мой взгляд, вам уместнее митинговать на 14 км трассы Владивосток - Артём, у памятника неизвестного защитника оптических кабельных сетей.

Засим раскланиваюсь, прекращаю флудить и удаляюсь из этого топика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 18:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
skandinav писал(а):
блин... не нужно передергивать. сабвершн облегчает совместную разработку, РАДы ускоряют разработку. освобождая время на документирование и анализ. я лишь это имел ввиду.
блин... я и не передёргивал, а ответил на
Цитата:
я не могу уверенно утверждать знакомы ли лично вы с subvertion, git или любой другой, из великой кучи, систем контроля версий в разработке... но судя по ... описанию интерфейса прикладного программирования .... большинство вашей команды ни о чем подобном и слыхом не слыхивало.


з.ы. $killall -9 firefox && perl -e 'for( ; ; ){ print "Я никогда не кормил троллей\n" }'


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 18:51 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
skandinav писал(а):
из какой, чьорт побьери, таблицы берется инфа для:

Изображение

это в закладке CRM договора.


Код:
register_task_executor


1) вы код группы добавили, это может влиять на вывод в редакторе
2) после отработки скрипта, посмотрите в БД добвились ли записи, возможно проблема не в записи, а в отображении задачи в редакторе


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 20:09 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skandinav писал(а):
dimOn писал(а):
Не очень понятно, конечно, как система контроля версий зависима с описанием програмного интерфейса, но Вам лучше знать...
Но если интересно - у нас, конечно же, используется svn; уж не знаю как там было 20-лет-назад у программистов на паскале, но опять же непонятно, как по-Вашему выглядит в наше время коллективная разработка без подобной системы.
Ну а уж о стиле программирования я снова замечание проигнорирую, ибо это смешно как бы, подобное обсуждать... Но если у Вас есть в личном IT-опыте разработка, которая ведётся десяток лет немалой командой программистов, и с более красивой программной структурой - не знаю, как остальная часть команды, но я бы с удовольствием ознакомился :roll:

Да и вообще, подобная полная открытость интерфейса - это благо, которому надо радоваться, а не ворчать на какие-то там возможные косяки, которые лично Вам кажутся нелогичными)


блин... не нужно передергивать. сабвершн облегчает совместную разработку, РАДы ускоряют разработку. освобождая время на документирование и анализ. я лишь это имел ввиду. почему, в те далекие времена, когда РАДов как таковых не было... если конечно не считать РАДом multieditor... исходники товарищей по оружию читались легко и приятно благодаря обилию коментариев. за счет которых документировать АПИ можно было простым копипастом комментов из кода. хотя продукты писались по сложности кода не уступающие настоящим...



Мда. Своеобразная логика ..Если в у вас есть инструмент , то значит он работает сам и у вас больше времени на документирование , а если инструмента нет, то времени не хватает. И поскольку документация у нас плохая , значит и инструмента у нас нет . Просто железная логика :)
и если если лопату сменить на трактор, то пахать больше не надо , надо оставшееся время потратить на документацию ..Хорошо , закроем тогда форум и перестанем выпускать релизы , займемся документацией более вплотную .. или как вариант просто убрать апи биллинга , это проще, и шуму меньше.

всем : займитесь выяснениям отношений в другом месте. Почитайте правила форума. Иначе будем банить.

Подряду(или тому кто пишет от его имени): нам абсолютно без разницы что вы из подряда , здесь на форуме одинаковое отношение ко всем, хотите гарантии результата - используйте платную поддержку .

P.S А докуменатция - да описана плохо местатми , но мы работаем над этим . Она не успевает за стремительным циклом разработки. Мы уже говрили об этом на этом форуме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 22:19 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
skn писал(а):
skandinav писал(а):
из какой, чьорт побьери, таблицы берется инфа для:

Изображение

это в закладке CRM договора.


Код:
register_task_executor


1) вы код группы добавили, это может влиять на вывод в редакторе
2) после отработки скрипта, посмотрите в БД добвились ли записи, возможно проблема не в записи, а в отображении задачи в редакторе


гррр... начинаю сверкать глазами и биться головой об разработчиков...

ребят... ну несерьезно уже!

в CRM закладке, в добавленной только что задаче, имея ее ID, одновременно смотря на выборку SQL, ставлю галку в списке исполнителей и вижу что по "SELECT * FROM register_task_executor WHERE tid=<имеющийся у меня после RegisterTaskManager().updateTask() ну и там далее getID>" ни чего не меняется... так же как если я делаю "INSERT INTO register_task_executor SET tid=<ну тот самый ID задачи>, eid= <полученный ID исполнителя>" ни чего не меняется в списке привязанных исполнителей в закладке CRM....

ну может быть вы всеж таки посмотрите обработку которрая заполняет контрол формы с исполнителями, и скажете, из какой таблицы берется инфа в нее?

я устал уже, если честно...

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 22:22 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
dimOn писал(а):
з.ы. $killall -9 firefox && perl -e 'for( ; ; ){ print "Я никогда не кормил троллей\n" }'


мозилла то чем вам не угодил? зачем ему SIGKILL то? :)

З.Ы. про перл не говорю. ибо смысла в выводе в консоль фразы про троллей не вижу.

З.З.Ы. я тут подумал... а вроде как killall скрипт и параметров кроме как имени процесса не требует...

З.З.З.Ы. а может проще?
#kill -9 -1

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Последний раз редактировалось skandinav 29 янв 2009, 22:32, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2009, 22:24 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
stark писал(а):
всем : займитесь выяснениям отношений в другом месте. Почитайте правила форума. Иначе будем банить.

Нельзя закрывать театр... Иначе... Иначе форум станет не интересным и вымрет :lol: (шутка)
снимаю шляпу перед ораторами, колоритная тема)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 янв 2009, 00:50 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Код:
public class ActionGetRegisterTask
    extends ActionBase
{
    @Override
    public void doAction()
        throws SQLException
    {
        int id = getIntParameter( "id", -1 );
        if ( id < 0 )
        {
            setParamsError();
            return;
        }
        Element taskEl = createElement( rootNode, "task" );
        RegisterTaskManager taskManager = new RegisterTaskManager( con );
        RegisterTask task = taskManager.getTaskByID( id );
        if ( task != null )
        {
            taskEl.setAttribute( "type", String.valueOf( task.getTypeID() ) );
            taskEl.setAttribute( "apid", String.valueOf( task.getAddressParamID() ) );
            taskEl.setAttribute( "aObjectId", String.valueOf( task.getAddressObjectId() ) );
            taskEl.setAttribute( "target_date", TimeUtils.formatDate( task.getTargetDate() ) );
            taskEl.setAttribute( "execute_date", TimeUtils.formatDate( task.getExecuteDate() ) );
            taskEl.setAttribute( "group", String.valueOf( task.getGroupID() ) );
            taskEl.setAttribute( "executors", CommonUtils.listToString( task.getExecutors() ) );
            taskEl.setAttribute( "status", String.valueOf( task.getStatus() ) );
            taskEl.setAttribute( "open", buildRef( task.getOpenUserID(), task.getOpenTime() ) );
            taskEl.setAttribute( "accept", buildRef( task.getAcceptUserID(), task.getAcceptTime() ) );
            taskEl.setAttribute( "close", buildRef( task.getCloseUserID(), task.getCloseTime() ) );
            taskEl.setAttribute( "lastmod", buildRef( task.getLastmodUserID(),
                                                      task.getLastmodTime() ) );
            Element commentEl = createElement( taskEl, "comment" );
            stringToLines( commentEl, task.getComment() );
            Element resolutionEl = createElement( taskEl, "resolution" );
            stringToLines( resolutionEl, task.getResolution() );
            if ( task.getContractID() > 0 )
            {
                ContractManager cm = new ContractManager( con );
                Contract contract = cm.getContractByID( task.getContractID() );
                taskEl.setAttribute( "contract", contract.getTitle() );
                taskEl.setAttribute( "contract_id", String.valueOf( contract.getID() ) );
            }
        }
    }
}


Код:
   public RegisterTask getTaskByID( int id )
   {
      RegisterTask result = null;

      try
      {
         String query = "SELECT * FROM register_task WHERE id=?";
         PreparedStatement ps = con.prepareStatement( query );
         ps.setInt( 1, id );
         ResultSet rs = ps.executeQuery();
         if ( rs.next() )
         {
            result = new RegisterTask();
            loadTaskFromRS( "", rs, result );
            loadExecutorList( result );
         }
         ps.close();
      }
      catch ( Exception ex )
      {
         ex.printStackTrace();
      }

      return result;
   }


метод loadExecutorList я давал выше

P.S. спрашиваю в третий раз Код Группы Исполнителей при создание задачи указываете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 янв 2009, 05:24 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
skn писал(а):

P.S. спрашиваю в третий раз Код Группы Исполнителей при создание задачи указываете?


а я вам выше сказал, что при ручном изменении списка исполнителей в CRM задаче, содержимое register_task_executor НЕ МЕНЯЕТСЯ.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 янв 2009, 13:00 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
т.е. если задачу создать из клиента и потом поменять исполнителей, то в таблмце ни чего неменяется?

не меняется в задаче созданой скриптом или созданой из клиента?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 янв 2009, 16:30 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
  • тема - эпик фейл
  • читаем правила:
    Правила форума писал(а):
    Не разрешается:
    ...
    3) Брань, цензурная и нецензурная, грубость, переход от обсуждения проблемы "на личности".
    4) Излишне эмоциональное "выколачивание" ответа из разработчиков, либо других участников форума с выдачей оценок их работы. Это бесплатный форум, никаких гарантий и обязательств по срокам ответа и по ответу вообще он не предполагает.

    ...

    Не наказывается, но осуждается:
    1) Неконкретность в вопросах.
    2) Захламленность поста эмоциями и посторонними фразами.
    3) Недружелюбность к другим форумчанам.
    и прекращаем размазывать белую кашу по столу!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 16:55 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
Ну что ж. Шоу продолжается. :)

с исполнителями худо-бедно разобрался. осталось разобраться в том куда клиент пишет информацию об адресе в списке задач:

Изображение

те задачи, в которых адрес присутствует получились в результате просмотра уже сформированной скриптом задачи и нажатии кнопки ОК.

для заполнения задачи скриптом, я делаю отбор
Код:
query = "SELECT hid FROM contract_parameter_type_2 where address =?";
pa = con.prepareStatement(query);
pa.setString(1,capv.getAddress());
pa = pa.executeQuery(); pa.next();            

получаю значение поля hid этой таблицы, присваиваю его свойствам нового объекта задачи
Код:
nt.setAddressObjectId(pa.getInt(1));
nt.setAddressParamID(pa.getInt(1));


ЧЯДНТ?

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 фев 2009, 23:50 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Попробуйте так:

Код:
nt.setAddressObjectId( 0 );
nt.setAddressParamID(pa.getInt(1));


К задаче может быть привязан адрес ИЛИ из ДОГОВОРА ИЛИ из ОБЪЕКТА договора, поэтому заполнен должен быть один из параметров, второй 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 фев 2009, 06:47 
Не в сети

Зарегистрирован: 27 ноя 2008, 15:13
Сообщения: 56
Карма: 0
пробовал и
Код:
            nt.setAddressObjectId(0);
            nt.setAddressParamID(pa.getInt(1));


и

Код:
            nt.setAddressObjectId(pa.getInt(1));
            nt.setAddressParamID(0);


не помогает.

_________________
================================
ООО "Подряд" является зарегистрированным пользователем данного аддикта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 фев 2009, 13:31 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Код:
      query.append( "SELECT task.*, address.hid, address.flat, address.room, objecta.flat, objecta.room, contract.title, " );
        query.append(  "phone.val, " );
   query.append( "house.*, quarter.title, street.title, city.title" );
        query.append( " FROM register_task AS task  " );
        query.append( " LEFT JOIN object ON task.aobject_id=object.id" );
        query.append( " LEFT JOIN object_param_value_address as objecta " );
        query.append( " ON object.id=objecta.object_id AND task.apid=param_id" ); 
        query.append( " LEFT JOIN contract_parameter_type_2 AS address " );
      query.append( " ON task.cid=address.cid AND address.pid=task.apid AND task.aobject_id=0" );      
        // дом
      query.append( " LEFT JOIN address_house AS house" );
      query.append( " ON house.id=IF (address.hid IS NULL, objecta.hid, address.hid ) " );
      // квартал
      query.append( " LEFT JOIN address_quarter AS quarter" );
      query.append( " ON house.quarterid=quarter.id " );
      // название улицы
      query.append( " LEFT JOIN address_street AS street" );
      query.append( " ON house.streetid=street.id" );
      // город
      query.append( " LEFT JOIN address_city AS city" );
      query.append( " ON house.cityid=city.id" );


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

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


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

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


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

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