$PBExportHeader$f_open.srf global type f_open from function_object end type forward prototypes global function integer f_open (integer arg_openmode) end prototypes global function integer f_open (integer arg_openmode);Long rslt = 1 Long ls_rslt String lls_str String arg_msg Int li_loginflag = 0 ULong l_handle, lu_class String ls_name sys_ifoem = Long(ProfileString (sys_inioem, "oem", "ifoem",'0'))//是否OEM // 创建电话盒UO_CC301实例 uo_cc301_ins = create uo_cc301 IF Not IsValid(uo_email_power) THEN uo_email_power = Create uo_email_power_ew END IF IF Not IsValid(uo_ljjob_creator_spi) THEN uo_ljjob_creator_spi = Create uo_ljjob_creator_ew END IF sys_login = False String ls_network ls_network = f_psw_bczh(ProfileString(sys_inifilename_other,'sys_message', 'network' , '613444366637208268088'),1,sys_power_key) IF ls_network = 'network' THEN sys_if_network = 1 ELSE sys_if_network = 0 END IF //取消单机版注册 20121116 lhd //String ls_msg //IF f_reg_dll(ls_msg) = 0 THEN // MessageBox('提示',ls_msg, Information!, OK! ) // HALT; //END IF IF sys_if_network = 0 THEN //单机版 Long hwnd hwnd = Handle(This) IF hwnd > 0 THEN //检查是否有副本运行 IF f_ifexerun() > 1 THEN MessageBox('提示',sys_message_title + '已运行!', Information!, OK! ) HALT; END IF END IF String ls_version ls_version = f_psw_bczh(ProfileString(sys_inifilename_other,'sys_message', 'version' , '268578966903644066457208358988'),1,sys_power_key) //单机版取消工业+ //免注册 IF ls_version = 'business' THEN sys_version_type = 1 sys_version_id = '801001ewiserpv5.0' sys_version = 802001 sys_versionName = "商业版" sys_version_int = 1 ELSE //IF ls_version = 'enterprise' THEN sys_version_type = 0 sys_version_id = '801002ewiserpv5.0' sys_version = 802002 sys_versionName = "工业版" sys_version_int = 2 // ELSEIF ls_version = 'enterprise+' THEN // sys_version_type = 2 // sys_version_id = '801003ewiserpv4.0' // sys_version = 802003 // sys_versionName = "工业版+" // sys_version_int = 3 END IF String ls_bookname ls_bookname = ProfileString (sys_inifilename, "database", "bookname","") IF ls_bookname = '' THEN f_ini_book() END IF Long firstrun firstrun = Long(ProfileString (sys_inifilename, "database", "firstrun","0")) Long ll_return s_set_book_parm s_parm IF firstrun = 1 THEN s_parm.bookid = 1 s_parm.ifguid = 1 OpenWithParm(w_set_init, s_parm) ll_return = Message.DoubleParm IF ll_return <> 1 THEN HALT; MessageBox('提示','设置保存完成!系统必须重启!') Restart() // OpenWithParm(w_set_sqlca_ecl,'01') ELSE Open(w_sys_login_s) END IF ELSE //网络版 IF Not IsValid(w_ws) THEN Open(w_ws) END IF Open(w_sys_login) END IF li_loginflag = Message.DoubleParm f_init_version() IF arg_openmode = 0 Or li_loginflag = 2 THEN //初始化连接数量 uo_remote_sqlca uo_rsqlca uo_rsqlca.init_remote_sqlca() //////// // uo_yfimex uo_ins_imex uo_ins_imex = Create uo_yfimex ls_rslt = uo_ins_imex.f_init_syscurpath(lls_str) Open(w_sys_begin) //打开闪烁窗口(连接数据库) sys_db_spid = f_get_db_spid() //获取spid source_sqlca = Create Transaction IF f_switchdb_check() = 1 THEN //检查当前是否要切换数据库 //f_switch() f_sys_option() f_cntdb(source_sqlca) f_cnt_newdb(sys_option_switch_Sername,sys_option_switch_dbname,sys_option_switch_loginID,sys_option_switch_loginpsw) END IF //autoupdateexe begin in application's begin uo_atudexe uo_ins_atudexe uo_ins_atudexe = Create uo_atudexe ls_rslt = uo_ins_atudexe.f_init_syscurpath(lls_str) //////// // ls_rslt = uo_ins_atudexe.f_autoupdateexe(sqlca,lls_str) Destroy uo_ins_atudexe ////////// //autoupdateexe end // ls_rslt = f_synchronize(sqlca,lls_str) //同步服务器时间 // IF ls_rslt = 0 THEN // MessageBox('提示','同步服务器时间操作失败,请手动调节!', Information!, OK! ) // END IF //单机版 免注册 // IF sys_if_network = 0 THEN //单机版 // f_regcheck() // END IF IF sys_if_network = 0 THEN sys_if_register = 1 ELSE sys_message_timeoutdate = "2015.01.01" // IF Today() > RelativeDate(Date(sys_message_timeoutdate),-20) THEN // MessageBox(sys_message_timeoutdate,'系统即将超使用期限,请与软件供应商联系!', Information!, OK! ) // END IF // // IF Today() > Date(sys_message_timeoutdate) THEN // MessageBox(sys_message_timeoutdate,'超使用期限,请与软件供应商联系!', Information!, OK! ) // HALT; // END IF END IF Int rst //检查版本 uo_version uo_ver // uo_ver.uof_createtable_auto() rst = f_get_curdb(arg_msg) IF rst = 0 THEN //数据库错误 MessageBox("提示",arg_msg,Information!, OK! ) HALT; ELSEIF rst = -1 THEN //设定历史数据库 Open(w_set_scdb) //再读一次版本 rst = f_get_curdb(arg_msg) ELSEIF rst = -2 THEN //升级数据库 // f_createtable() uo_ver.uof_createtable(True) // //多币种本位币更新 // f_set_moneyid() //初始化单据抬头 IF f_init_billstyle(arg_msg) = 0 THEN MessageBox('错误',arg_msg,StopSign!, OK! ) END IF //初始化数据字典 IF f_init_table_field(arg_msg) = 0 THEN MessageBox('错误',arg_msg,StopSign!, OK! ) END IF //默认打印格式 IF f_init_dft_dwprint_dynamic(arg_msg) = 0 THEN MessageBox('错误',arg_msg,StopSign!, OK! ) END IF //升级初始化 打印格式pbl IF f_init_dftpbl(sys_pblname,'',arg_msg) = 0 THEN MessageBox('错误',arg_msg,StopSign!, OK! ) END IF //再读一次版本 rst = f_get_curdb(arg_msg) END IF if rst <> 1 then MessageBox('错误',arg_msg,StopSign!, OK! ) HALT; end if IF hwnd > 0 THEN //检查是否有副本运行 IF Not f_chk_login(arg_msg) THEN MessageBox('提示',arg_msg, Information!, OK! ) HALT; END IF END IF //初始化打印格式单据列表 f_init_billname() //设置打印格式库 f_setliblist() IF sys_if_network = 0 THEN //删数,截数初始化, 单机版用到 f_init_tntblinfo() END IF //解决方案初始化, 权限, 系统选项 f_init_sys_plan() //权限初始化 uo_sys_funcpwr uo_sfpwr uo_sfpwr.init_ds_funcinfo( ) //系统选项初始化 获取全局变量 uo_sys_option uo_opt uo_opt = Create uo_sys_option uo_opt.uof_init_sys_option() uo_opt.uof_sys_option() Destroy uo_opt //系统窗口,系统菜单, 对应权限 uo_sys_main uo_main uo_main.uof_init() // f_init_uccol() uo_sys_uccol uo_uccol uo_uccol.uf_init_uccol() Open(w_sys_wait) w_sys_wait.Hide() ///////////// //---附件数据库连接 Long ll_ConnectionID sys_fileDB_sqlca = Create Transaction IF Trim(sys_DataBaseFJ) = '' THEN IF f_get_outerconnection(ll_ConnectionID,arg_msg) = 1 THEN w_sys_wait.Show() w_sys_wait.wf_set_msg('正在连接附件数据库...') IF f_connect_db(ll_ConnectionID,sys_fileDB_sqlca,arg_msg) = 0 THEN arg_msg = '附件数据库连接失败,请检查设置.'+ arg_msg MessageBox("提示",arg_msg, Information!, OK! ) //return END IF w_sys_wait.Hide() END IF ELSE w_sys_wait.Show() w_sys_wait.wf_set_msg('正在连接附件数据库...') IF f_connect_db_new(sys_ServerNameFJ,sys_DataBaseFJ,sys_LoginIDFJ,sys_LoginPwdFJ,sys_fileDB_sqlca,arg_msg) = 0 THEN arg_msg = '附件数据库连接失败,请检查设置.'+ arg_msg MessageBox("提示",arg_msg, Information!, OK! ) //return END IF w_sys_wait.Hide() END IF ////////// //---- sys_email_sqlca = Create Transaction IF Trim(sys_DataBaseMsg) = '' THEN IF f_get_outerconnection_email(ll_ConnectionID,arg_msg) = 1 THEN w_sys_wait.Show() w_sys_wait.wf_set_msg('正在连接邮件数据库...') IF f_connect_db(ll_ConnectionID,sys_email_sqlca,arg_msg) = 0 THEN arg_msg = '邮件数据库连接失败,请检查设置.'+ arg_msg MessageBox("提示",arg_msg, Information!, OK! ) //return END IF w_sys_wait.Hide() END IF ELSE w_sys_wait.Show() w_sys_wait.wf_set_msg('正在连接邮件数据库...') IF f_connect_db_new(sys_ServerNameMsg,sys_DataBaseMsg,sys_LoginIDMsg,sys_LoginPwdMsg,sys_email_sqlca,arg_msg) = 0 THEN arg_msg = '邮件数据库连接失败,请检查设置.'+ arg_msg MessageBox("提示",arg_msg, Information!, OK! ) //return END IF w_sys_wait.Hide() END IF IF sys_email_sqlca.DBHandle() <> 0 THEN uo_version_email uo_ver_email uo_ver_email = Create uo_version_email uo_ver_email.uof_createtable(True) END IF IF f_connectdb_id(arg_msg) = 0 THEN MessageBox('系统提示',arg_msg) RETURN rslt END IF END IF rslt = f_sys_dl(publ_userid,sys_psw) IF rslt <> 1 THEN //不成功, 退出系统 HALT END IF f_set_sysmessage() f_set_accsetmessage() f_init_ds_subjecttree() sys_login = True Idle(sys_option_timeout) //设定注销时间 if_idle = False IF IsValid(w_main_scware) THEN w_main_scware.wf_init() ELSE Open (w_main_scware) END IF f_update_login(1) //0-注销; 1-登录;2-更新 //------日志 f_setsysoplog('系统登录','系统登录,用户:'+publ_operator,arg_msg,True) //自定义提醒 TRY IF f_oa_workremind() = 1 THEN Open(w_oa_workremind) END IF CATCH (runtimeerror e) messagebox('系统提示','自定义提醒初始化失败,'+e.text) END TRY IF sys_if_network = 0 THEN SetProfileString (sys_inifilename,'database', 'bookname', sys_bookname) SetProfileString (sys_inifilename,'database', 'Database', sys_DataBase) ELSEIF sys_if_network = 1 THEN Int I_DBSPID = 9 s_msgframe s_msg s_msg.FrameHead = I_DBSPID s_msg.frame_str[1] = String(sys_db_spid) s_msg.frame_str[2] = String(sys_Status) IF sys_wsc.getstate() = 7 THEN sys_wsc.setsendmsg( s_msg, 2) sys_wsc.TriggerEvent('ue_send') //发送命令 END IF END IF RETURN rslt end function