рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ 1 рд╕реА рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рджреЗрд░реА рдХреА рд╣реИ, рдореИрдВрдиреЗ 1 рд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдорд▓реНрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓ рдХреА рдХрдореА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рдФрд░ рд╕рд╛рдВрддреНрд╡рдирд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреМрдбрд╝ рдХреЗ рд▓рд┐рдП GUI рд▓рд┐рдЦрдХрд░ рдЗрд╕ рдХрдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рд╡рд┐рдХрд╛рд╕ рдХреА рднрд╛рд╖рд╛ рдХреЛ tcl / tk рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрддред рдФрд░ рдЕрдм, рдореИрдВ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╣рд▓реБрдУрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ tcl / tk рдФрд░ 1C рд╡рд┐рддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдмреБрдирд┐рдпрд╛рджреА tcl / tk рд╡рд┐рддрд░рдг рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА 8.6.7, рдЬрд┐рд╕рдореЗрдВ ttk рд╢рд╛рдорд┐рд▓ рд╣реИ - рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ ttk :: TreeView рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдбреЗрдЯрд╛ рдХреЛ рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ (рд╕реВрдЪреА) рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдХреЛрд╢рд┐рд╢ рдХрдорд╛рдВрдб, рдЬрд┐рд╕реЗ рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╕рдордп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рднреА рд╕рдм рдХреБрдЫ рдПрдХ рд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ):
rac_gui.cfg - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
rac_gui.tcl - рдореБрдЦреНрдп рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХрд╛рдордЧрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЛрдб рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ:
function.tcl - рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓
gui.tcl - рдореБрдЦреНрдп GUI
base.t64 рдореЗрдВ рдЗрдореЗрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, rac_gui.tcl рдлрд╝рд╛рдЗрд▓, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреА рд╣реИ, рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рддреА рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:
rac_gui.tcl#!/bin/sh exec wish "$0" -- "$@" # set dir(root) [pwd] # , set dir(work) [file join $env(HOME) .rac_gui] if {[file exists $dir(work)] == 0 } { file mkdir $dir(work) } # set dir(lib) "[file join $dir(root) lib]" # , , if {[file exists [file join $dir(work) rac_gui.cfg]] ==0} { file copy [file join [pwd] rac_gui.cfg] [file join $dir(work) rac_gui.cfg] } source [file join $dir(work) rac_gui.cfg] # rac # # if {[file exists $rac_cmd] == 0} { set rac_cmd [tk_getOpenFile -initialdir $env(HOME) -parent . -title " rac" -initialfile rac] file copy [file join $dir(work) rac_gui.cfg] [file join $dir(work) rac_gui.cfg.bak] set orig_file [open [file join $dir(work) rac_gui.cfg.bak] "r"] set file [open [file join $dir(work) rac_gui.cfg] "w"] while {[gets $orig_file line] >=0 } { if {[string match "set rac_cmd*" $line]} { puts $file "set rac_cmd $rac_cmd" } else { puts $file $line } } close $file close $orig_file #return "$host:$port" file delete [file join $dir(work) 1c_srv.cfg.bak] } else { puts "Found $rac_cmd" } set cluster_user "" set cluster_pwd "" set agent_user "" set agent_pwd "" ## LOAD FILE ## # gui.tcl foreach modFile [lsort [glob -nocomplain [file join $dir(lib) *.tcl]]] { if {[file tail $modFile] ne "gui.tcl"} { source $modFile puts "Loaded module $modFile" } } source [file join $dir(lib) gui.tcl] source [file join $dir(work) rac_gui.cfg] # 1 # if [file exists [file join $dir(work) 1c_srv.cfg]] { set f [open [file join $dir(work) 1c_srv.cfg] "RDONLY"] while {[gets $f line] >=0} { .frm_tree.tree insert {} end -id "server::$line" -text "$line" -values "$line" } }
рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд░реЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд┐рдВрдбреЛ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рдПрдЧреАред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рддреАрди рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ:
рдЯреВрд▓рдмрд╛рд░, рдкреЗрдбрд╝ рдФрд░ рд╕реВрдЪреА
рдореИрдВрдиреЗ 1 рд╕реА рд╕реЗ рдорд╛рдирдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реНрдиреИрдк рдХреЗ рд╕рдорд╛рди "рдкреЗрдбрд╝" рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ред

рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореБрдЦреНрдп рдХреЛрдб рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ
lib / gui.tcl # # topLevelGeometry if {[info exists topLevelGeometry]} { wm geometry . $topLevelGeometry } else { wm geometry . 1024x768 } # wm title . "1C Rac GUI" wm iconname . "1C Rac Gui" # ( lib/imges.tcl) wm iconphoto . tcl wm protocol . WM_DELETE_WINDOW Quit wm overrideredirect . 0 wm positionfrom . user ttk::style theme use clam # set frm_tool [frame .frm_tool] pack $frm_tool -side left -fill y ttk::panedwindow .panel -orient horizontal -style TPanedwindow pack .panel -expand true -fill both pack propagate .panel false ttk::button $frm_tool.btn_add -command Add -image add_grey_32 ttk::button $frm_tool.btn_del -command Del -image del_grey_32 ttk::button $frm_tool.btn_edit -command Edit -image edit_grey_32 ttk::button $frm_tool.btn_quit -command Quit -image quit_grey_32 pack $frm_tool.btn_add $frm_tool.btn_del $frm_tool.btn_edit -side top -padx 5 -pady 5 pack $frm_tool.btn_quit -side bottom -padx 5 -pady 5 # set frm_tree [frame .frm_tree] ttk::scrollbar $frm_tree.hsb1 -orient horizontal -command [list $frm_tree.tree xview] ttk::scrollbar $frm_tree.vsb1 -orient vertical -command [list $frm_tree.tree yview] set tree [ttk::treeview $frm_tree.tree -show tree \ -xscrollcommand [list $frm_tree.hsb1 set] -yscrollcommand [list $frm_tree.vsb1 set]] grid $tree -row 0 -column 0 -sticky nsew grid $frm_tree.vsb1 -row 0 -column 1 -sticky nsew grid $frm_tree.hsb1 -row 1 -column 0 -sticky nsew grid columnconfigure $frm_tree 0 -weight 1 grid rowconfigure $frm_tree 0 -weight 1 # bind $frm_tree.tree <ButtonRelease> "TreePress $frm_tree.tree" # () set frm_work [frame .frm_work] ttk::scrollbar $frm_work.hsb -orient horizontal -command [list $frm_work.tree_work xview] ttk::scrollbar $frm_work.vsb -orient vertical -command [list $frm_work.tree_work yview] set tree_work [ ttk::treeview $frm_work.tree_work \ -show headings -columns "par val" -displaycolumns "par val"\ -xscrollcommand [list $frm_work.hsb set] \ -yscrollcommand [list $frm_work.vsb set] ] # $tree_work tag configure dark -background $color(dark_table_bg) $tree_work tag configure light -background $color(light_table_bg) # grid $tree_work -row 0 -column 0 -sticky nsew grid $frm_work.vsb -row 0 -column 1 -sticky nsew grid $frm_work.hsb -row 1 -column 0 -sticky nsew grid columnconfigure $frm_work 0 -weight 1 grid rowconfigure $frm_work 0 -weight 1 pack $frm_tree $frm_work -side left -expand true -fill both #.panel add $frm_tool -weight 1 .panel add $frm_tree -weight 1 .panel add $frm_work -weight 1
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
1. рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдкрдХреЛ рдореБрдЦреНрдп рдХреНрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ (рдпрд╛рдиреА, рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрди рд╕рд░реНрд╡рд░ (linux рдореЗрдВ, рдХрдорд╛рдВрдб рдХреЛ "" /opt / 1C/v8.3/x86_64/ras рдХреНрд▓рд╕реНрдЯрд░-daemon ") рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "+" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рджрд░реНрдЬ рдХрд░реЗрдВ:

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдЙрд╕ рдЯреНрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдЦреБрд▓рддреА рд╣реИ рдпрд╛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред
2. рдХреНрд▓рд╕реНрдЯрд░ рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЦреБрд▓ рдЬрд╛рдПрдЧреАред
3. ...
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░, рдЕрд░реНрдерд╛рддреНред рдирдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рдореЗрдВ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ + рдмрдЯрди рджрдмрд╛рдПрдВ рдФрд░ рдирдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЯреВрд▓рдмрд╛рд░ рдХреЗ рдмрдЯрди рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдкреЗрдбрд╝ рдпрд╛ рд╕реВрдЪреА рдХреЗ рдХрд┐рд╕ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдпрд╛ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдРрдб рдмрдЯрди ("+") рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдмрдЯрди рдкреАрдврд╝реА рдХреЛрдб:
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
рдпрд╣рд╛рдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕рдХрд╛ рдХреЛрдб:
proc Add {} { global active_cluster host # set id [.frm_tree.tree selection] # set values [.frm_tree.tree item [.frm_tree.tree selection] -values] set key [lindex [split $id "::"] 0] # if {$key eq "" || $key eq "server"} { set host [ Add::server ] return } Add::$key .frm_tree.tree $host $values }
рддреЛ рдЧреБрджрдЧреБрджреА рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Add::$key .frm_tree.tree $host $values
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "+" рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЬреЛрдбрд╝реЗрдВ :: рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ :: рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ рдЗрд╕реА рддрд░рд╣ (рдореИрдВ рдереЛрдбрд╝рд╛ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ "рдЪрд╛рдмрд┐рдпрд╛рдБ" рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреА рд╣реИрдВред рдиреАрдЪреЗ), рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рддреА рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдлреЙрд░реНрдо рд╢реИрд▓реА рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ - рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдлреЙрд░реНрдо рдХрд╛ рдореБрдЦреНрдп рдлреНрд░реЗрдо (рд╡рд┐рдВрдбреЛ, рдмрдЯрди, рдЫрд╡рд┐, рд▓реЗрдмрд▓), рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо
AddTopLevel proc AddToplevel {lbl img {win_name .add}} { set cmd "destroy $win_name" if [winfo exists $win_name] {destroy $win_name} toplevel $win_name wm title $win_name $lbl wm iconphoto $win_name tcl # ttk::label $win_name.lbl -image $img # set frm [ttk::labelframe $win_name.frm -text $lbl -labelanchor nw] grid columnconfigure $frm 0 -weight 1 grid rowconfigure $frm 0 -weight 1 # set frm_btn [frame $win_name.frm_btn -border 0] ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { } ttk::button $frm_btn.btn_cancel -command $cmd -image quit_grey_24 grid $win_name.lbl -row 0 -column 0 -sticky nw -padx 5 -pady 10 grid $frm -row 0 -column 1 -sticky nw -padx 5 -pady 5 grid $frm_btn -row 1 -column 1 -sticky se -padx 5 -pady 5 pack $frm_btn.btn_cancel -side right pack $frm_btn.btn_ok -side right -padx 10 return $frm }
рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░: рд╢реАрд░реНрд╖рдХ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо (lib / images.tcl) рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдВрдбреЛ рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ .add)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓ рддрджрдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
AddToplevel " " server_grey_64
рдпрд╛
AddToplevel " " cluster_grey_64
рдЦреИрд░, рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП рдореИрдВ рдЙрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдРрдб рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
:: рд╕рд░реНрд╡рд░ рдЬреЛрдбрд╝реЗрдВ proc Add::server {} { global default # set frm [AddToplevel " " server_grey_64] # label $frm.lbl_host -text " " entry $frm.ent_host label $frm.lbl_port -text "" entry $frm.ent_port $frm.ent_port insert end $default(port) grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5 grid columnconfigure $frm 0 -weight 1 grid rowconfigure $frm 0 -weight 1 #set frm_btn [frame .add.frm_btn -border 0] # .add.frm_btn.btn_ok configure -command { set host [SaveMainServer [.add.frm.ent_host get] [.add.frm.ent_port get]] .frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host" destroy .add return $host } return $frm }
рдЬреЛрдбрд╝реЗрдВ :: рдХреНрд▓рд╕реНрдЯрд░ proc Add::cluster {tree host values} { global default lifetime_limit expiration_timeout session_fault_tolerance_level global max_memory_size max_memory_time_limit errors_count_threshold security_level global load_balancing_mode kill_problem_processes \ agent_user agent_pwd cluster_user cluster_pwd auth_agent if {$agent_user ne "" && $agent_pwd ne ""} { set auth_agent "--agent-user=$agent_user --agent-pwd=$agent_pwd" } else { set auth_agent "" } # () set lifetime_limit $default(lifetime_limit) set expiration_timeout $default(expiration_timeout) set session_fault_tolerance_level $default(session_fault_tolerance_level) set max_memory_size $default(max_memory_size) set max_memory_time_limit $default(max_memory_time_limit) set errors_count_threshold $default(errors_count_threshold) set security_level [lindex $default(security_level) 0] set load_balancing_mode [lindex $default(load_balancing_mode) 0] set frm [AddToplevel " " cluster_grey_64] label $frm.lbl_host -text " " entry $frm.ent_host label $frm.lbl_port -text "" entry $frm.ent_port $frm.ent_port insert end $default(port) label $frm.lbl_name -text " " entry $frm.ent_name label $frm.lbl_secure_connect -text " " ttk::combobox $frm.cb_security_level -textvariable security_level -values $default(security_level) label $frm.lbl_expiration_timeout -text " :" entry $frm.ent_expiration_timeout -textvariable expiration_timeout label $frm.lbl_session_fault_tolerance_level -text " " entry $frm.ent_session_fault_tolerance_level -textvariable session_fault_tolerance_level label $frm.lbl_load_balancing_mode -text " " ttk::combobox $frm.cb_load_balancing_mode -textvariable load_balancing_mode \ -values $default(load_balancing_mode) label $frm.lbl_errors_count_threshold -text " , %" entry $frm.ent_errors_count_threshold -textvariable errors_count_threshold label $frm.lbl_processes -text " :" label $frm.lbl_lifetime_limit -text " , ." entry $frm.ent_lifetime_limit -textvariable lifetime_limit label $frm.lbl_max_memory_size -text " , " entry $frm.ent_max_memory_size -textvariable max_memory_size label $frm.lbl_max_memory_time_limit -text " , ." entry $frm.ent_max_memory_time_limit -textvariable max_memory_time_limit label $frm.lbl_kill_problem_processes -justify left -anchor nw -text " " checkbutton $frm.check_kill_problem_processes -variable kill_problem_processes -onvalue yes -offvalue no grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_name -row 2 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_secure_connect -row 3 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.cb_security_level -row 3 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_expiration_timeout -row 4 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_expiration_timeout -row 4 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_session_fault_tolerance_level -row 5 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_session_fault_tolerance_level -row 5 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_load_balancing_mode -row 6 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.cb_load_balancing_mode -row 6 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_errors_count_threshold -row 7 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_errors_count_threshold -row 7 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_processes -row 8 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.lbl_lifetime_limit -row 9 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_lifetime_limit -row 9 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_max_memory_size -row 10 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_max_memory_size -row 10 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_max_memory_time_limit -row 11 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.ent_max_memory_time_limit -row 11 -column 1 -sticky nsew -padx 5 -pady 5 grid $frm.lbl_kill_problem_processes -row 12 -column 0 -sticky nw -padx 5 -pady 5 grid $frm.check_kill_problem_processes -row 12 -column 1 -sticky nw -padx 5 -pady 5 # .add.frm_btn.btn_ok configure -command { RunCommand "" "cluster insert \ --host=[.add.frm.ent_host get] \ --port=[.add.frm.ent_port get] \ --name=[.add.frm.ent_name get] \ --expiration-timeout=$expiration_timeout \ --lifetime-limit=$lifetime_limit \ --max-memory-size=$max_memory_size \ --max-memory-time-limit=$max_memory_time_limit \ --security-level=$security_level \ --session-fault-tolerance-level=$session_fault_tolerance_level \ --load-balancing-mode=$load_balancing_mode \ --errors-count-threshold=$errors_count_threshold \ --kill-problem-processes=$kill_problem_processes \ $auth_agent $host" Run::server $tree $host "" destroy .add } return $frm }
рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рдЕрдВрддрд░ рдирдЧреНрди рдЖрдВрдЦреЛрдВ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдореИрдВ рдареАрдХ рдмрдЯрди рдХреЗ рд╣реИрдВрдбрд▓рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЯреАрдХреЗ рдореЗрдВ, рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдЯрди рдЖрдЙрдЯрдкреБрдЯ рдХрдорд╛рдВрдб:
ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { }
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд░реВрдкреЛрдВ рдореЗрдВ, рдХрдорд╛рдВрдб рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
.add.frm_btn.btn_ok configure -command { RunCommand "" "cluster insert \ --host=[.add.frm.ent_host get] \ --port=[.add.frm.ent_port get] \ --name=[.add.frm.ent_name get] \ --expiration-timeout=$expiration_timeout \ --lifetime-limit=$lifetime_limit \ --max-memory-size=$max_memory_size \ --max-memory-time-limit=$max_memory_time_limit \ --security-level=$security_level \ --session-fault-tolerance-level=$session_fault_tolerance_level \ --load-balancing-mode=$load_balancing_mode \ --errors-count-threshold=$errors_count_threshold \ --kill-problem-processes=$kill_problem_processes \ $auth_agent $host" Run::server $tree $host "" destroy .add }
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "рднрд░рд╛ рд╣реБрдЖ" рдмрдЯрди рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдпрд╣ Tk рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ - рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдПрдВрдЯреНрд░реА рддрддреНрд╡реЛрдВ (рдПрдВрдЯреНрд░реА, рдХреЙрдореНрдмреЛрдХреНрд╕, рдЪреЗрдХрдмрдЯрди, рдЗрддреНрдпрд╛рджрд┐) рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдкрд╛рда рдЪрд░ (textvariable) рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
рдпрд╣ рдЪрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╛рдиреА рдлрд╝реАрд▓реНрдб рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЪрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ (рдмреЗрд╢рдХ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдпрд╣ рддрддреНрд╡ рдмрдирд╛рддреЗ рд╕рдордп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ)ред
рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ (рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП) рдкреНрд░рд╛рдкреНрдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
.add.frm.ent_name get
рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рджреМрдбрд╝ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде RunCommand рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:
/opt/1C/v8.3/x86_64/rac cluster insert --host=localhost --port=1540 --name=dsdsds --expiration-timeout=0 --lifetime-limit=0 --max-memory-size=0 --max-memory-time-limit=0 --security-level=0 --session-fault-tolerance-level=0 --load-balancing-mode=performance --errors-count-threshold=0 --kill-problem-processes=no localhost:1545
рддреЛ рд╣рдо рдореБрдЦреНрдп рдХрдорд╛рдВрдб рдкрд░ рдЖрдП, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рджреМрдбрд╝ рдХреЗ рд╢реБрднрд╛рд░рдВрдн рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рджреЗрддрд╛ рд╣реИ:
RunCommand proc RunCommand {root par} { global dir rac_cmd cluster work_list_row_count agent_user agent_pwd cluster_user cluster_pwd puts "$rac_cmd $par" set work_list_row_count 0 # # $rac - # $par - set pipe [open "|$rac_cmd $par" "r"] try { set lst "" set l "" # while {[gets $pipe line]>=0} { #puts $line if {$line eq ""} { lappend l $lst set lst "" } else { lappend lst [string trim $line] } } close $pipe return $l } on error {result options} { # ErrorParcing $result $options return "" } }
рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд Add: server рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
рдЕрдм, рдЯреНрд░реА рдореЗрдВ рд╕рд░реНрд╡рд░ рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдЙрд╕ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рддрддреНрд╡реЛрдВ (рд╕рд░реНрд╡рд░, рдЗрдиреНрдлреЛрдмреЗрд╕, рдЖрджрд┐) рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред рдпрд╣ рдЯреНрд░реАрдкреНрд░реЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ lib / function.tcl):
proc TreePress {tree} { global host server active_cluster infobase # set id [$tree selection] # SetGlobalVarFromTreeItems $tree $id # , .. set values [$tree item $id -values] set key [lindex [split $id "::"] 0] # # Run Run::$key $tree $host $values }
рддрджрдиреБрд╕рд╛рд░, рд░рди :: рд╕рд░реНрд╡рд░ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрдЧрд╛ (рд░рди :: рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░, рд░рди :: рд╡рд░реНрдХ_рд╕реЗрд╡рд░, рдкреНрд░реЛрдбрдХреНрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрджрд┐)ред рдпрд╛рдиреА $ рдХреБрдВрдЬреА рдЪрд░ рдХрд╛ рдореВрд▓реНрдп
-id рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЗрдбрд╝ рддрддреНрд╡ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
рд░рди :: рд╕рд░реНрд╡рд░ proc Run::server {tree host values} { # set lst [RunCommand server::$host "cluster list $host"] if {$lst eq ""} {return} set l [lindex $lst 0] #puts $lst # .frm_work.tree_work delete [ .frm_work.tree_work children {}] # foreach cluster_list $lst { # InsertItemsWorkList $cluster_list # () foreach i $cluster_list { #puts $i set cluster_list [split $i ":"] if {[string trim [lindex $cluster_list 0]] eq "cluster"} { set cluster_id [string trim [lindex $cluster_list 1]] lappend cluster($cluster_id) $cluster_id } if {[string trim [lindex $cluster_list 0]] eq "name"} { lappend cluster($cluster_id) [string trim [lindex $cluster_list 1]] } } } # foreach x [array names cluster] { set id [lindex $cluster($x) 0] if { [$tree exists "cluster::$id"] == 0 } { $tree insert "server::$host" end -id "cluster::$id" -text "[lindex $cluster($x) 1]" -values "$id" # InsertClusterItems $tree $id } } if { [$tree exists "agent_admins::$id"] == 0 } { $tree insert "server::$host" end -id "agent_admins::$id" -text "" -values "$id" #InsertClusterItems $tree $id } }
рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ RunCommand рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдкреЗрдбрд╝ рд╕реЗ рдЬреЛрдбрд╝ рджреЗрддреА рд╣реИ - рдХреНрд▓рд╕реНрдЯрд░, рд╡рд┐рднрд┐рдиреНрди рд░реВрдЯ рддрддреНрд╡ (рдбреЗрдЯрд╛рдмреЗрд╕, рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░, рд╕рддреНрд░, рдФрд░ рдЗрд╕реА рддрд░рд╣)ред рдпрджрд┐ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЙрд▓ рдХреЛ InsertItemsWorkList рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдлрд╝рд┐рдХ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд░реЗрд╕ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд▓рд┐рд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ $ s рдкрд░ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреЗрдХреНрд╢рди рдХреА рдПрдХ рд╕реВрдЪреА:
svk@svk ~]$ /opt/1C/v8.3/x86_64/rac connection list --cluster=783d2170-56c3-11e8-c586-fc75165efbb2 localhost:1545 connection : dcf5991c-7d24-11e8-1690-fc75165efbb2 conn-id : 0 host : svk.home process : 79de2e16-56c3-11e8-c586-fc75165efbb2 infobase : 00000000-0000-0000-0000-000000000000 application : "JobScheduler" connected-at : 2018-07-01T14:49:51 session-number : 0 blocked-by-ls : 0 connection : b993293a-7d24-11e8-1690-fc75165efbb2 conn-id : 0 host : svk.home process : 79de2e16-56c3-11e8-c586-fc75165efbb2 infobase : 00000000-0000-0000-0000-000000000000 application : "JobScheduler" connected-at : 2018-07-01T14:48:52 session-number : 0 blocked-by-ls : 0
рдЪрд┐рддреНрд░рдордп рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИ:
InsertItemsWorkList proc InsertItemsWorkList {lst} { global work_list_row_count # if [expr $work_list_row_count % 2] { set tag dark } else { set tag light } # - foreach i $lst { if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] { lappend column_list [string trim $param] lappend value_list [string trim $value] } } # .frm_work.tree_work configure -columns $column_list -displaycolumns $column_list .frm_work.tree_work insert {} end -values $value_list -tags $tag .frm_work.tree_work column #0 -stretch # foreach j $column_list { .frm_work.tree_work heading $j -text $j } incr work_list_row_count }
рдпрд╣рд╛рдВ, рд╕рд╛рдзрд╛рд░рдг рдХрдорд╛рдВрдб рдХреЗ рдмрдЬрд╛рдп [рд╕реНрдкреНрд▓рд┐рдЯ $ str ":"], рдЬреЛ ":" рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдореЗрдВ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рднреА рд╣реЛрддрд╛ рд╣реИред
InsertClusterItems рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдХрдИ рд╕рдорд╛рди рдореЗрдВ рд╕реЗ рдПрдХ) рдмрд╕ рдкреЗрдбрд╝ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреНрд▓рд╕реНрдЯрд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ
InsertClusterItems proc InsertClusterItems {tree id} { set parent "cluster::$id" $tree insert $parent end -id "infobases::$id" -text " " -values "$id" $tree insert $parent end -id "servers::$id" -text " " -values "$id" $tree insert $parent end -id "admins::$id" -text "" -values "$id" $tree insert $parent end -id "managers::$id" -text " " -values $id $tree insert $parent end -id "processes::$id" -text " " -values "workprocess-all" $tree insert $parent end -id "sessions::$id" -text "" -values "sessions-all" $tree insert $parent end -id "locks::$id" -text "" -values "blocks-all" $tree insert $parent end -id "connections::$id" -text "" -values "connections-all" $tree insert $parent end -id "profiles::$id" -text " " -values $id }
рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрдорд╛рдВрдб рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЬрд╛рдБрдЪ рдорд╛рдереЗ рдкрд░ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИ:
InsertBaseItems proc InsertBaseItems {tree id} { set parent "infobase::$id" if { [$tree exists "sessions::$id"] == 0 } { $tree insert $parent end -id "sessions::$id" -text "" -values "$id" } if { [$tree exists "locks::$id"] == 0 } { $tree insert $parent end -id "locks::$id" -text "" -values "$id" } if { [$tree exists "connections::$id"] == 0 } { $tree insert $parent end -id "connections::$id" -text "" -values "$id" } }
рдФрд░ рдпрд╣рд╛рдБ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ:
InsertProfileItems proc InsertProfileItems {tree id} { set parent "profile::$id" set lst { {dir " "} {com " COM-"} {addin " "} {module " "} {app " "} {inet " "} } foreach i $lst { append item [lindex $i 0] "::$id" if { [$tree exists $item] == 0 } { $tree insert $parent end -id $item -text [lindex $i 1] -values "$id" } unset item } }
рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдХрдорд╛рдВрдб (рдПрд╕) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рд╣рдордиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рдпрд╣ рд╕рдВрдкрд╛рджрди рдкрд░ рд░реЛрдХ рдХрд╛ рд╕рдордп рд╣реИред рдЪреВрдВрдХрд┐, рдореВрд▓ рд░реВрдк рд╕реЗ, рд╕рдВрдкрд╛рджрди рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдкрд╡рд╛рдж infobase рд╣реИ), рд╕рдВрд╡рд╛рдж рдлрд╝реЙрд░реНрдо рд╕рдорд╛рди рд╣реИрдВред рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
Add :: $ key-> AddToplevelрдФрд░ рдЗрд╕ рддрд░рд╣ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП:
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ :: $ рдХреБрдВрдЬреА-> рдЬреЛрдбрд╝реЗрдВ :: $ рдХреБрдВрдЬреА-> AddTopLevelрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдЕрд░реНрдерд╛рддреНред рдЯреНрд░реА рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЯреВрд▓рдмрд╛рд░ (рдкреЗрдВрд╕рд┐рд▓) рдореЗрдВ рдПрдбрд┐рдЯ рдмрдЯрди рджрдмрд╛рдПрдБ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛:

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ :: рдХреНрд▓рд╕реНрдЯрд░ proc Edit::cluster {tree host values} { global default lifetime_limit expiration_timeout session_fault_tolerance_level global max_memory_size max_memory_time_limit errors_count_threshold security_level global load_balancing_mode kill_problem_processes active_cluster \ agent_user agent_pwd cluster_user cluster_pwd auth if {$cluster_user ne "" && $cluster_pwd ne ""} { set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd" } else { set auth "" } # set frm [Add::cluster $tree $host $values] # $frm configure -text " " set active_cluster $values # set lst [RunCommand cluster::$values "cluster info --cluster=$active_cluster $host"] # FormFieldsDataInsert $frm $lst # , $frm.ent_host configure -state disable $frm.ent_port configure -state disable # .add.frm_btn.btn_ok configure -command { RunCommand "" "cluster update \ --cluster=$active_cluster $auth \ --name=[.add.frm.ent_name get] \ --expiration-timeout=$expiration_timeout \ --lifetime-limit=$lifetime_limit \ --max-memory-size=$max_memory_size \ --max-memory-time-limit=$max_memory_time_limit \ --security-level=$security_level \ --session-fault-tolerance-level=$session_fault_tolerance_level \ --load-balancing-mode=$load_balancing_mode \ --errors-count-threshold=$errors_count_threshold \ --kill-problem-processes=$kill_problem_processes \ $auth $host" $tree delete "cluster::$active_cluster" Run::server $tree $host "" destroy .add } }
рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдмрдЯрди рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ FormFieldsDataInsert рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рднрд░рддреА рд╣реИ рдФрд░ рдЪрд░ рдХреЛ рдЖрд░рдВрдн рдХрд░рддреА рд╣реИ:FormFieldsDataInsert proc FormFieldsDataInsert {frm lst} { foreach i [lindex $lst 0] { # if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] { # regsub -all -- "-" [string trim $param] "_" entry_name # if [winfo exists $frm.ent_$entry_name] { $frm.ent_$entry_name delete 0 end $frm.ent_$entry_name insert end [string trim $value "\""] } if [winfo exists $frm.cb_$entry_name] { global $entry_name set $entry_name [string trim $value "\""] } # if [winfo exists $frm.check_$entry_name] { global $entry_name if {$value eq "0"} { set $entry_name no } elseif {$value eq "1"} { set $entry_name yes } else { set $entry_name $value } } } } }
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдПрдХ рдФрд░ рдкреНрд▓рд╕ tcl рд╕рд╛рдордиреЗ рдЖрдпрд╛ - рдЕрдиреНрдп рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╛рдиреА
рдлрд╝реЙрд░реНрдо рднрд░рдиреЗ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝реАрд▓реНрдб рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдирд╛рдо, рд░реЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдФрд░ рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ - рдбреИрд╢ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╕реВрдЪрд┐рдд-рдЬреЙрдм-рдЗрдирдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ ent_scheduled_jobs_deny рдФрд░ рдЪрд░ scheduled_jobs_deny редрдлрд╝реАрд▓реНрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрди рдХреЗ рд░реВрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛:рдЖрдИрдмреА рдПрдбрд┐рдВрдЧ рдЖрдИрдмреА рдЬреЛрдбрд╝рдирд╛
рдПрдбрд┐рдЯрд┐рдВрдЧ
:: рдЗрдиреНрдлреЛрдмреЗрд╕ рд╕рдВрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдбреНрд╕ рдлреЙрд░реНрдо рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВредрд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ, рд╕рдВрдкрд╛рджрди, рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВредрдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд░реНрд╡рд░, рдХреНрд▓рд╕реНрдЯрд░, рдЗрдиреНрдлреЛрдмреЗрд╕ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд░реНрд╡рд░ рдпрд╛ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХрд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдорд╛рди рд╣рд░ рдмрд╛рд░ рдкреЗрдбрд╝ рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╛рдиреА
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрди: рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреА рд╣реИ рдФрд░ рдЪрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ:SetGlobalVarFromTreeItems proc SetGlobalVarFromTreeItems {tree id} { global host server active_cluster infobase set parent [$tree parent $id] set values [$tree item $id -values] set key [lindex [split $id "::"] 0] switch -- $key { server {set host $values} work_server {set server $values} cluster {set active_cluster $values} infobase {set infobase $values} } if {$parent eq ""} { return } else { SetGlobalVarFromTreeItems $tree $parent } }
1 рд╕реА рдХреНрд▓рд╕реНрдЯрд░ рдЖрдкрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдХ рд╣реИрдВ - рдХреНрд▓рд╕реНрдЯрд░ рдПрдЬреЗрдВрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХред рддрджрдиреБрд╕рд╛рд░, рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдпреБрдХреНрдд 4 рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рдпрд╛рдиреА
рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЦрд╛рддрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛редрддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИредErrorParcing proc ErrorParcing {err opt} { global cluster_user cluster_pwd agent_user agent_pwd switch -regexp -- $err { "Cluster administrator is not authenticated" { AuthorisationDialog " " .auth_win.frm_btn.btn_ok configure -command { set cluster_user [.auth_win.frm.ent_name get] set cluster_pwd [.auth_win.frm.ent_pwd get] destroy .auth_win } #RunCommand $root $par } "Central server administrator is not authenticated" { AuthorisationDialog " " .auth_win.frm_btn.btn_ok configure -command { set agent_user [.auth_win.frm.ent_name get] set agent_pwd [.auth_win.frm.ent_pwd get] destroy .auth_win } } " " { AuthorisationDialog " " .auth_win.frm_btn.btn_ok configure -command { set cluster_user [.auth_win.frm.ent_name get] set cluster_pwd [.auth_win.frm.ent_pwd get] destroy .auth_win } #RunCommand $root $par } " " { AuthorisationDialog " " .auth_win.frm_btn.btn_ok configure -command { set agent_user [.auth_win.frm.ent_name get] set agent_pwd [.auth_win.frm.ent_pwd get] destroy .auth_win } } (.+) { tk_messageBox -type ok -icon error -message "$err" } } }
рдпрд╛рдиреА
рдЖрджреЗрд╢ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреАредрдлрд┐рд▓рд╣рд╛рд▓, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ 95 рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ, рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рдкрд░реАрдХреНрд╖рдг =) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред рдореИрдВ рдХреБрдЯрд┐рд▓ рдХрдерд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБредрдХреЛрдб рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ редрдЕрджреНрдпрддрди: рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд╛рдоред рдЕрдм рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ 100% рд▓рд╛рдЧреВ рд╣реИредрдЕрджреНрдпрддрди 2: рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рд░реВрд╕реА рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, win7 рдореЗрдВ рдХрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ