แ แแแแกแแช แฉแแแ แฉแแแฃแฆแ แแแแแแ แแแแแก, แแฃ แ แแแแ แแฃแจแแแแก 1C แแ แแแฃแฅแขแแแ Linux แแแ แแแแจแ, แแฆแแแแแฉแแแแ แแ แแ แแแแแ - แแแกแแฎแแ แฎแแแแแ แแ แแคแแแฃแแ แแ แแแแ แแแแขแคแแ แแแก แฎแแแกแแฌแงแแก แแ แแ แกแแแแแ 1C แกแแ แแแ แแแแก แแแแกแขแแ แแก แแแ แแแแกแแแแก. แแ แแแแแฌแงแแ แแ แฎแแ แแแแแก แแแแแกแฌแแ แแแ rac แแแแกแแแแก แแ แแแ แแแแกแแแแก GUI-แแก แแแฌแแ แแ. Tcl/tk แจแแแ แฉแ แแแแแแแแ แแแแก แแแแ, แ แแแแ แช, แฉแแแ แแแ แแ, แงแแแแแแ แจแแกแแคแแ แแกแ แแ แแแแชแแแแกแแแแก. แแกแ แ แแ, แแ แแแแแ แฌแแ แแแแแแแแแแ แแแแแฌแงแแแขแแก แ แแแแแแแแ แกแแแแขแแ แแกแ แแกแแแฅแขแ แแ แแแกแแแแจแ.
แกแแแฃแจแแแ แแแแญแแ แแแแแ tcl/tk แแ 1C แแแกแขแ แแแฃแชแแ. แแ แ แแแแแ แแแแแแฌแงแแแขแ แซแแ แแแแแ tcl/tk แแแฌแแแแแแก แจแแกแแซแแแแแแแแแ แแแฅแกแแแแแฃแ แแ แแแแแแแงแแแแแแแ แแแกแแแ แแฎแแ แแก แแแแแขแแแแก แแแแแงแแแแแแก แแแ แแจแ, แแแแญแแ แแแแ แแแ แกแแ 8.6.7, แ แแแแแแช แแแแชแแแก ttk - แแแแแขแก แแแแแขแแแแแ แแ แแคแแแฃแแ แแแแแแแขแแแแ, แ แแแแแแแแแ แซแแ แแแแแแ แแแญแแ แแแแ ttk. ::TreeView, แแก แแซแแแแ แแแแแชแแแแแแก แฉแแแแแแแก แกแแจแฃแแแแแแก แ แแแแ แช แฎแแก แกแขแ แฃแฅแขแฃแ แแก, แแกแแแ แชแฎแ แแแแก (แกแแแก) แกแแฎแแ. แแกแแแ, แแฎแแ แแแ แกแแแจแ แแแแแแฃแจแแแแ แกแแแฃแจแแ แแแแแแแแแแกแแแแ (แแ แซแแแแแ try, แ แแแแแแช แแแแแแงแแแแแ แแ แแแฅแขแจแ แแแ แ แแ แซแแแแแแแแก แแแจแแแแแกแแก).
แแ แแแฅแขแ แจแแแแแแ แ แแแแแแแแ แคแแแแแกแแแแ (แแฃแแชแ แแ แแคแแ แ แแแจแแแ แฎแแแก, แ แแ แงแแแแแคแแ แ แแแแแแแแ แแ แแจแ):
rac_gui.cfg - แแแแฃแแแกแฎแแแแ แแแแคแแแฃแ แแชแแ
rac_gui.tcl - แแแแแแ แ แแแจแแแแแก แกแแ แแแขแ
lib แแแ แแฅแขแแ แแ แจแแแชแแแก แคแแแแแแก, แ แแแแแแแช แแแขแแแแขแฃแ แแ แแขแแแ แแแแ แแแจแแแแแกแแก:
function.tcl - แคแแแแ แแ แแชแแแฃแ แแแแ
gui.tcl - แแแแแแ แ แแ แแคแแแฃแแ แแแขแแ แคแแแกแ
images.tcl - base64 แกแฃแ แแแแแแก แแแแแแแแแแ
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"
}
}
แงแแแแแคแ แแก แฉแแแแขแแแ แแแแก แจแแแแแ, แ แแช แกแแญแแ แแ แแ แจแแแแแฌแแแ rac แแแแฃแแแแฃแ แ แแ แแแ แแแแก แแ แกแแแแแแก แจแแกแแฎแแ, แแฎแกแแแแ แแ แแคแแแฃแแ แคแแแฏแแ แ. แแ แแแ แแแแก แแแขแแ แคแแแกแ แจแแแแแแ แกแแแ แแแแแแแขแแกแแแ:
แฎแแแกแแฌแงแแแแแก แแแแแแ, แฎแ แแ แกแแ
"แฎแแก" แจแแแแแ แกแ แแแฅแกแแแแแฃแ แแ แแแแฃแแแแ Windows-แแก แกแขแแแแแ แขแฃแ แแฆแญแฃแ แแแแแแแก 1C-แแแ.
แแแแแแ แ แแแแ, แ แแแแแแช แฅแแแแก แแ แคแแแฏแแ แแก, แจแแแชแแแก แคแแแแก
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
}
แแฅ แแ แแก tickle-แแก แแ แ-แแ แแ แฃแแแ แแขแแกแแแ: แแฅแแแ แจแแแแซแแแแ แแแแแกแชแแ แชแแแแแแก แแแแจแแแแแแแ, แ แแแแ แช แแ แแชแแแฃแ แแก แกแแฎแแแ:
Add::$key .frm_tree.tree $host $values
แแแฃ, แแแแแแแแแ, แแฃ แแแแฃแแแแแแ แแแแแแ แกแแ แแแ แแ แแ แแแแแญแแ แ โ+โ, แแแจแแ แแแแฅแแแแแแแ Add::server แแ แแชแแแฃแ แ, แแฃ แแแแกแขแแ แแ - Add::cluster แแ แแกแ แจแแแแแ (แแแแฌแแ แกแแ แแ แแก แกแแญแแ แ โแแแกแแฆแแแแแโ แแแแแแแแ แแแแก แชแแขแ แฅแแแแแ), แฉแแแแแแแแแ แแ แแชแแแฃแ แแแ แฎแแขแแแก แแแแขแแฅแกแขแแก แจแแกแแแแแแก แแ แแคแแแฃแ แแแแแแแขแแแก.
แ แแแแ แช แฃแแแ แจแแแแจแแแ, แคแแ แแแแ แแกแแแแกแแ แกแขแแแจแ - แแก แแแกแแแแแ แ แแ แแ แแก, แ แแแแแ แแกแแแ แแแฉแแแแแแแ แแ แแ แแ แแชแแแฃแ แแก แกแแจแฃแแแแแแ, แฃแคแ แ แแฃแกแขแแ, แคแแ แแแก แซแแ แแแแแ แฉแแ แฉแ (แคแแแฏแแ แ, แฆแแแแแแแ, แกแฃแ แแแ, แแขแแแแขแ), แแ แแชแแแฃแ แแก แกแแฎแแแฌแแแแแ. 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
}
แแ แแ แแชแแแฃแ แแแแก แแแแแก แจแแแแ แแแแกแแก แแแแกแฎแแแแแแ แจแแฃแแแ แแฆแแแแแ แแแแแแแแช แฉแแแก; แแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแ แฆแแแแแแ โOkโ แแแแแฃแจแแแแแแแแ. Tk-แจแ, แแ แแคแแแฃแแ แแแแแแแขแแแแก แแแแกแแแแแ แจแแแซแแแแ แแแแแแแแฎแแก แแ แแแ แแแแก แจแแกแ แฃแแแแแกแแก แแคแชแแแก แแแแแงแแแแแแ แแแแคแแแฃแ แแชแแแก. แแแแแแแแแ, แกแแฌแงแแกแ แแ แซแแแแแ แฆแแแแแแก แฉแแแแแแแกแแแแก:
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-แจแ - แแแแแชแแแแ แจแแงแแแแแก แกแฎแแแแแกแฎแแ แแแแแแแขแแแแกแแแแก (แจแแกแแแ, แแแแแแแแฅแกแ, แแแแจแแแแ แฆแแแแแ แแ แ.แจ.) แจแแแแฆแแแฃแ แแฅแแ แแแ แแแแขแ แ, แ แแแแ แช แขแแฅแกแขแฃแ แ แชแแแแแ:
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
แแก แชแแแแแ แแแแกแแแฆแแ แฃแแแ แแแแแแแฃแ แกแแฎแแแแ แกแแแ แชแแจแ แแ แจแแแชแแแก แแแแแแแ แจแแงแแแแแ แแแแจแแแแแแแแก. แแแแ. แแแแแแแ แจแแงแแแแแแ แขแแฅแกแขแแก แแแกแแฆแแแแ, แแฅแแแ แฃแแ แแแแ แฃแแแ แฌแแแแแแฎแแ แชแแแแแแก แจแแกแแแแแแกแ แแแแจแแแแแแแ (แ แ แแฅแแ แฃแแแ, แแ แแแ แแแแ, แ แแ แแแ แแแแแกแแแฆแแ แแก แแแแแแแขแแก แจแแฅแแแแกแแก).
แจแแงแแแแแแ แขแแฅแกแขแแก แแฆแแแแแแก แแแแ แ แแแแแแ (แจแแกแแแแก แขแแแแก แแแแแแแขแแแแกแแแแก) แแ แแก get แแ แซแแแแแแก แแแแแงแแแแแ:
.add.frm.ent_name get
แแ แแแ แแก แแแแแแ แจแแแแซแแแแ แแฎแแแแ แแแแแ แแแชแแแฃแ แแแแจแ.
แแ แฆแแแแแแ แแแฌแแแแฃแแแแแ, แแ แจแแแแฎแแแแแจแ, แแฌแงแแแ RunCommand แแ แแชแแแฃแ แ แแแแแ แแ แแแฃแแ แแ แซแแแแแแก แฎแแแแ rac-แแก แแแแแกแแแ แแกแแ แแแแกแขแแ แแก แแแกแแแแขแแแแแ:
/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
แแฎแแ แฉแแแ แแแแแแแแ แ แแแแแแ แแ แซแแแแแแแ, แ แแแแแแช แแแแแขแ แแแแแก rac-แแก แแแจแแแแแก แฉแแแแแแแก แกแแญแแ แ แแแ แแแแขแ แแแแ, แแกแแแ แแแแแแแแแแก แแ แซแแแแแแแแก แแแแแแแแแแก แกแแแแจแ แแ แแแ แฃแแแแก, แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ:
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"
แแฎแแ แฎแแแ แกแแ แแแ แแก แกแแฎแแแแ แแแฌแแแแฃแแแแแ แแแฆแแแ แแ แกแแ แแแ แแก แแแแ แแแ แแฃแแ แแแแกแขแแ แแแแก แฉแแแแแแแแแแก, แฎแแแ แแแแกแขแแ แแ แแแฌแแแแฃแแแแแ แแแฆแแแ แแแแกแขแแ แแก แแแแแแแขแแแแก แกแแแก (แกแแ แแแ แแแ, แแแคแแแแแแแ แแ แ.แจ.). แแก แฎแแ แชแแแแแแแ TreePress แแ แแชแแแฃแ แแจแ (แคแแแแ 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
}
แจแแกแแแแแแกแแ, Run::server แแแแฅแแแแแแแ แแแแแแ แ แกแแ แแแ แแกแแแแก (แแแแกแขแแ แแกแแแแก - Run::cluster, แกแแแฃแจแแ แกแแ แแแ แแกแแแแก - Run::work_server แแ แ.แจ.). แแแแ. $key แชแแแแแแก แแแแจแแแแแแแ แแ แแก แแคแชแแแแแก แแแแ แแแแแแแแฃแแ แฎแแก แแแแแแแขแแก แกแแฎแแแแก แแแฌแแแ -แแแ.
แแแแแ แงแฃแ แแแฆแแแ แแแแแฅแชแแแ แแ แแชแแแฃแ แแก
แแแฃแจแแแ:: แกแแ แแแ แ
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 แแ แซแแแแแแก แแแจแแแแแแ แแ แแแแขแแแก แฎแแก แงแแแแ แกแแฎแแก แแแแแก - แแแแกแขแแ แแแก, แกแฎแแแแแกแฎแแ root แแแแแแแขแแแก (แแแแแแ, แกแแแฃแจแแ แกแแ แแแ แแแ, แกแแกแแแแ แแ แ.แจ.). แแฃ แแแ แแแ แแแแแแแ แแแแแ, แจแแแแแ แจแแแแฉแแแแ แแแ แก InsertItemsWorkList แแ แแชแแแฃแ แแแ. แแแ แแแแแแงแแแแแ แแ แแคแแแฃแ แกแแแจแ แแแแแแแขแแแแก แแแกแแแแขแแแแแ rac แแแแกแแแแก แฃแขแแแแขแแก แแแแแกแแแแแก แแแแฃแจแแแแแแ, แ แแแแแแช แแแ แ แแแแ แฃแแแแฃแแ แแงแ แกแแแจแ $lst แชแแแแแจแ. แแก แแ แแก แกแแแแแก แกแแ, แ แแแแแแช แจแแแชแแแก แแแแแแแขแแแแก แฌแงแแแแแแก, แ แแแแแแแช แแแแแงแแคแแแแ แแ แฌแแ แขแแแแ.
แแแแแแแแแ, แแแแกแขแแ แฃแแ แแแแจแแ แแแแก แกแแ:
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
}
แแฅ, แแแ แขแแแ แแ แซแแแแแแก แแแชแแแแ [split $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
}
}
แแแ แจแแ แแก แแแแกแฎแแแแแแ แแ แแก แแแ แงแฃแแแก แแแแแงแแแแแ, แ แแแแแจแแช แจแแกแ แฃแแแแฃแแแ แแแแแแแ แแแแแ แแ แซแแแแ(แแ)แ. แ แแแแแ แแแแแแแแก แแแแแงแแแแแ แแ แแก แแแแแแแแแ แแก แจแแฎแแแฃแแแแแกแแแแแ .
แฉแแแ แแแแแแฎแแแแ แแแแแแแขแแแแก แแแแแขแแแ แแ แแแแแชแแแแแแก แแแซแแแแ, แแฎแแ แแ แแ แคแแแฃแกแแ แแแ แแแแฎแแแแแ แ แแแแฅแขแแ แแแแแ. แแแแแแแแ, แซแแ แแแแแแ, แแแแแ แแแ แแแแขแ แแแ แแแแแแงแแแแแ แ แแแแฅแขแแ แแแแกแแแแก แแ แแแกแแแแขแแแแแ (แกแแแแคแแ แแแชแแ แแแแแก แแแ แแ), แแแแแแงแแแแแ แแแแแ แแแแแแแฃแ แ แคแแ แแแแ. แแแแแขแแแแก แแ แแชแแแฃแ แแแแก แแแแแซแแฎแแแแก แแแแแ แแแแ แแกแ แแแแแแงแฃแ แแแ:
Add::$key->AddToplevel
แแ แแกแแแ แ แแแแฅแขแแ แแแแกแแแแก:
Edit::$key->Add::$key->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-แแก แแแแแ แแ แแ แฃแแแ แแขแแกแแแ - แกแฎแแ แชแแแแแแแแก แแแแจแแแแแแแแแ แฉแแแแชแแแแแฃแแแ แชแแแแแแก แกแแฎแแแแแแ. แแแแ. แคแแ แแแแแก แจแแแกแแแแก แแ แชแแแแแแแแก แแแแชแแแแแแแชแแแก แแแขแแแแขแแแแชแแแกแแแแก, แแแแแแแก แแ แชแแแแแแแแก แกแแฎแแแแแ แจแแแกแแแแแแแ rac แฃแขแแแแขแแก แแ แซแแแแแแก แฎแแแแก แแแแแแ แแแแแแแก แแ แแ แซแแแแแแก แแแแแแแแแแ แแแ แแแแขแ แแแแก แกแแฎแแแแแก แแแ แแแแฃแแ แแแแแแแแแแกแแ - แขแแ แ แแชแแแแแ แฅแแแแ แฎแแแแ. แฒแแแแแแแแ แแแแแแแแแ-แกแแแฃแจแแ-แฃแแ แ แแแแฎแแแแ แแแแแแแก ent_scheduled_jobs_แฃแแ แ แแ แชแแแแแ แแแแแแแแแ_แกแแแฃแจแแ_แฃแแ แ.
แแแแแขแแแแกแ แแ แ แแแแฅแขแแ แแแแก แคแแ แแแแ แจแแแซแแแแ แแแแกแฎแแแแแแแแแแก แแแแแแแก แจแแแแแแแแแแแแ, แแแแแแแแแ, แกแแแแคแแ แแแชแแ แแแแแกแแแ แแฃแจแแแแ:
แแแคแแ แแแชแแแก แฃแกแแคแ แแฎแแแแแก แแแแแขแแแ
แแแคแแ แแแชแแแก แฃแกแแคแ แแฎแแแแแก แ แแแแฅแขแแ แแแ
แ แแแแฅแขแแ แแแแก แแ แแชแแแฃแ แแจแ Edit::infobase แคแแ แแแก แแแแขแแแ แกแแญแแ แ แแแแแแ, แแแแ แแแชแฃแแแแแแแ, แแแแขแแ แแฅ แแ แฌแแ แแแแแแแแ.
แแแแแแแแแ, แกแฎแแ แแแแแแแขแแแแกแแแแก แฎแแ แชแแแแแแแ แแแแแขแแแแก, แ แแแแฅแขแแ แแแแก, แฌแแจแแแก แแ แแชแแแฃแ แแแ.
แแแแแแแแ แแแแฃแแแแฃแ แ แคแฃแแฅแชแแแแแ แแแ แแฃแแแกแฎแแแแก แจแแฃแแฆแฃแแแแ แ แแแแแแแแแก แกแแ แแแ แแแก, แแแแกแขแแ แแแก, แกแแแแคแแ แแแชแแ แแแแแแก แแ แ.แจ., แแแแก แแแกแแแแแแแ, แแฃ แ แแแแแ แแแแกแขแแ แ แ แแแแ แกแแ แแแ แก แแ แแแคแแ แแแชแแฃแแ แฃแกแแคแ แแฎแแแแแก แกแแกแขแแแแก แแแฃแแแแแก, แแแแแ แแแแแ แ แแแแแแแแ แแแแแแแฃแ แ แชแแแแแ, แ แแแแแแ แแแแจแแแแแแแแแ แแแงแแแแแฃแแแ แแแแแแฃแแจแ. แแ แ, แ แแแแกแแช แแแแญแแ แแ แฎแแก แแแแแแแขแแแก. แแแแ. แแ แแชแแแฃแ แ แ แแแฃแ แกแแฃแแแ แแแแแก แงแแแแ แแแแแแ แแแแแแแขแจแ แแ แแแแแแก แชแแแแแแแก:
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
}
}
1C แแแแกแขแแ แ แกแแจแฃแแแแแแก แแแซแแแแ แแแฃแจแแแ แแแขแแ แแแแชแแแก แแแ แแจแ แแ แแแก แแแ แแจแ. แแ แกแแแแแก แแแแแแแกแขแ แแขแแ แแแแก แแ แ แขแแแ - แแแแกแขแแ แฃแแ แแแแแขแแก แแแแแแแกแขแ แแขแแ แ แแ แแแแกแขแแ แแแแแแแกแขแ แแขแแ แ. แจแแกแแแแแแกแแ, แกแฌแแ แ แแฃแจแแแแแกแแแแก แแแแแแ แแ แแแแแ 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-แจแ
แฌแงแแ แ: www.habr.com