рдкрд╛рдпрдерди рдореЗрдВ рдмрд╣реБ-рдкреГрд╖реНрда рдПрд╕рдкреАрдП

рдЕрдЬрдЧрд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдкреБрд▓

рдПрдХ рдЙрд▓реНрд▓реВ рдПрдХ рдиреИрдиреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Sova.online рдХреА рддрд╕реНрд╡реАрд░, рдЬрд┐рд╕ рдкрд░ 3 http рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ:
http://sova.online/ - рд╕рд┐рд░реНрдл рдлрд╛рд▓реНрдХрди
http://sova.online:8000/ - рд╕рд┐рд░реНрдл Django
http://sova.online:8001/ - рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди (рд▓реЙрдЧрд┐рди: 1, рдкрд╛рд╕рд╡рд░реНрдб: 1)
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рд╡рд╣рд╛рдВ рдХреЛрдИ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рд╣реИред



рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдореЗрдВ рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрджреНрднреБрдд рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ https://plot.ly/products/dash/ , рдХреБрдЫ рдФрд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?
рд╕рдордЭрд╛рдПрдВ: рдЙрд▓реНрд▓реВ рдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдореЛрдЯреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред

- рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрдпрд╛ рд╣реИ?
- рдирд╣реАрдВред рдпрд╣ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред
"рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ред"
- рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрдИ рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЙрдЧреНрд░рд╛ рдмреИрдВрдХ рдХреЗ рдСрдирд▓рд╛рдЗрди рдЧреНрд░рд╛рд╣рдХ (рдмреИрдВрдХ рдмрдВрдж рд╣реИ)ред
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓реЗрдЯ рдерд╛, рдЕрд░реНрдерд╛рдд рдореЛрдЯреА рдХреНрд▓рд╛рдЗрдВрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдФрд░ рдЙрдЧреНрд░рд╛ рдХреЗ рдмреИрдВрдХ, рдФрд░ рдЕрддреАрдд рдореЗрдВ рдПрдкреНрд▓реЗрдЯред

VTB-24 рдмреИрдВрдХ рдСрдирд▓рд╛рдЗрди рдЧреНрд░рд╛рд╣рдХ (рдмреИрдВрдХ рдмрдВрдж рд╣реИ)ред
рдореИрдВ рдПрдХ рдорд╛рдирд╡рддрд╛рд╡рд╛рджреА рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЪрдорддреНрдХрд╛рд░, рдХреНрд░реВрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж: "рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕рдореЗрдВ 1000 рдкреЗрдЪреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ" рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреЗред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣ рд╕реБрдВрджрд░ рд╣реИред рдПрдиреАрдореЗрд╢рди рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдкрд░ рдЦреБрд▓рддрд╛ рд╣реИред рд╡рд╛рд╣! рдХреВрд▓!
рдореИрдВрдиреЗ рдПрдХ рдорд┐рддреНрд░ рд╕реЗ рдкреВрдЫрд╛: рдЖрдк рдЙрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?
рд╡рд╣ рдХрд╣рддреА рд╣реИ: рдорд╣рд╛рди! рдореИрдВ 1s рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, 1s рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред

Sberbank рдСрдирд▓рд╛рдЗрди рдХреНрд▓рд╛рдЗрдВрдЯ
рд╕рдВрддреЛрд╖рдЬрдирдХ рдЧреНрд░рд╛рд╣рдХ, рдЖрдк рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдореБрдЭреЗ рдЙрд╕реЗ рд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛, рддреЛ рдореИрдВрдиреЗ рдЙрд╕реЗ 5 рдореЗрдВ рд╕реЗ 3 рдЕрдВрдХ рджрд┐рдП рдФрд░ рдЙрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреАред рдпрд╣ рдореЗрд░реЗ 10 рднреБрдЧрддрд╛рди рдкреНрд░рддрд┐ рдорд╛рд╣ рдХреЗ рд╕рд╛рде рд╣реИред рдЬреЛ рд▓реЛрдЧ рдПрдХ рджрд┐рди рдореЗрдВ 100 рдмрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рд╡реЗ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред

рднреБрдЧрддрд╛рди рднрд░рдирд╛ред

рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рдХреНрд╖реЗрддреНрд░, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХрд╛ 20% рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдореЗрдиреВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╕реНрдерд┐рддрд┐: рдирд┐рд╢реНрдЪрд┐рдд), рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВрдиреЗ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╕реНрдХреНрд░реАрди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред 3 рдмрдЯрди: "рдмрдирд╛рдПрдБ", "рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ", "рд░рджреНрдж рдХрд░реЗрдВ"ред рдпреЗ рдмрдЯрди рд╣реИрдВ (рдиреАрдЪреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ)ред рдпрд╣ рдПрдХ рдмрд╣реБ-рдкреГрд╖реНрда рдПрд╕рдкреАрдП рдирд╣реАрдВ рд╣реИ: рдпрджрд┐ рдЖрдк рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреЙрд░реНрдо рдХрд╛ рдбреЗрдЯрд╛ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред
рдЬрд┐рд╕рдиреЗ рднреА рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╡рд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ рдХрд┐ рдорд╛рд░рдирд╛ рдХреНрдпрд╛ рд╣реИ: "рдЖрдо рддреМрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдХрд░рддрд╛ рд╣реИ, рдРрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рд▓реЛрдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ ..."ред рдФрд░ рд╡рд╣ рд╕рд╣реА рд╣реИред рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрд░ рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдмрд╛рдд рд╡реИрдЪрд╛рд░рд┐рдХ рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкрд░рддреЗрдВ рд╣реИрдВред рдФрд░ рд░реВрдк - рд╣рдо рд▓рдбрд╝рдХреЛрдВ рдХреЛ рдХрд╛рдо рдкрд░ рд░рдЦреЗрдВрдЧреЗ, рд╡реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдпрдж рдЗрд╕ рд╣реИрдХ рдкрд░ рдЧрд░реНрд╡ рд╣реИред

рдЯреНрд░реЗрдбрд┐рдВрдЧ рдлреНрд▓реЛрд░ (5 рдЯреБрдХрдбрд╝реЗ, 44 рд╕рдВрдШреАрдп рдХрд╛рдиреВрди)
рдпреЗ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ (рд╡реЗрдм тАЛтАЛрдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ)ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдлреАрд▓реНрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг:


рдпрд╣ рдЕрдЬреАрдм рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИ, рдХреНрд╖реЗрддреНрд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдИ рдСрдЯреЛрд╣рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдгред "рдкреНрд░рдХрд╛рд╢рди рддрд┐рдерд┐" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХреЛрдИ dd.mm.yyy рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдХреИрд▓реЗрдВрдбрд░ рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╣реИ, рдХреИрд▓реЗрдВрдбрд░ рдЖрдЗрдХрди рдбрд░рд╛рд╡рдирд╛ рд╣реИ:


Rts-рдирд┐рд╡рд┐рджрд╛ рдкрд░ рд╕реВрдЪреА: рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ, рддреАрд░ рд╕реВрдЪреА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдСрдЯреЛрд╕реНрд░реЙрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ (рдЖрдк рд╕реНрдХреНрд░реАрди рдмреЙрд░реНрдбрд░ рд╕реЗ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ), рди рддреЛ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рди рд╣реА рд╕реНрдкреЗрд╕ рдмрд╛рд░ рд▓рд┐рдВрдХ рдЦреЛрд▓реЗрдВ, рдЯреИрдм рд╡рд░реНрддрдорд╛рди рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рдХреЗрд╡рд▓ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдПрдХ рдкреНрд▓рд╕ рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд░реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рд╡рд░реНрддрдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдФрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛) mail.ru рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ

рдпрд╣ рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреЗрд╢реЗрд╡рд░ рдЖрд╡реЗрджрди рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЕрд░реНрдз-рдкреЗрд╢реЗрд╡рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд▓рд╛рдирдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдФрд░ рд╡реИрдЪрд╛рд░рд┐рдХ рдореЙрдбрд▓ рдореЗрдВ рдХрд┐рддрдиреА рдкрд░рддреЗрдВ рд╣реИрдВред рдпрд╣ рд╕реНрдХреНрд░реАрди рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА 3 рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ: рдХрд╛рд░реНрдпрд╛рддреНрдордХ, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рддреЗрдЬред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдИрдЯреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдФрд░ рдорд╛рд▓рд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдпрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╡реЗ рдЧрддрд┐ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕реБрдВрджрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рд╛рдк рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдкрд╛рд╡реЗрд▓ рд╡рд╛рд▓реЗрд░реАрд╡рд┐рдЪ рдбреНрдпреВрд░реЛрд╡ рдиреЗ рдпрд╛ рддреЛ рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдпрд╛ рдПрдХ рджреВрдд рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЙрд╕рдиреЗ рд╡рд╣реА рдХрд┐рдпрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реБрдВрджрд░ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА, рдЬрд┐рд╕рдореЗрдВ рдЖрд░реНрдерд┐рдХ рд░реВрдк рд╕реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЙрд▓реНрд▓реВ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдИрдбреАрдПрдордПрд╕ред

EDMS рд╣реИ, рдЗрд╕рдореЗрдВ 3 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рд╣реИрдВ:
рдЕрдзрд┐рдХрд╛рд░
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ
рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд▓рд┐рдкрд┐рдХред

рдорд╛рд▓рд┐рдХреЛрдВ, рд╡реЗ рдмрдЪреНрдЪреЛрдВ рдХреА рддрд░рд╣ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╕рд░рд▓ рдФрд░ рд╕реБрдВрджрд░ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ 1 рдмрдЯрди рдФрд░ 1 рдлрд╝реАрд▓реНрдбред рдФрд░ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╢реЗрд╖рдЬреНрдЮред рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ, рдХреНрд░реЙрд╕ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ / рдореЗрд▓рд░ред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдХрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрд╡рд╛ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рддреЛ рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рднреА рдХрд╛рдо рдЖрдПрдЧрд╛ред

рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд▓рд┐рдкрд┐рдХред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЙрд▓реНрд▓реВ рдХрд╛рдо рдореЗрдВ рдЖрддрд╛ рд╣реИред рдСрдлрд┐рд╕ рдХреНрд▓рд░реНрдХ рдпреВрдЬрд░реНрд╕ рдХрд╛ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░реБрдк рд╣реИред рдмрд╛рдХреА рд╕рднреА рдмреАрдорд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ / рдЫреБрдЯреНрдЯреА рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ / рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - EDMS рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдкрдВрдЬреАрдХрд░рдг рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдХрд╛рдЧрдЬреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рдХрдиреНрд╡реЗрдпрд░ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рддрд┐рдкрд╣рд┐рдпрд╛: рдлреЛрдВрдЯ, рд╣рд╛рдлрд╝рдЯреЛрди, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднрд░рдирд╛, рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдЗрдирдкреБрдЯ рдореЗрдВ рдЖрд╕рд╛рдиреА рдЖрджрд┐ред
рдИрдбреАрдПрд╕ "рдХреЗрд╕"ред рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрд╛рд▓рдп рдПрдХ рдореЛрдЯрд╛ рдЧреНрд░рд╛рд╣рдХ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рд╕рд░рдХрд╛рд░ рд╕рд░рдХрд╛рд░реА рдПрдЬреЗрдВрд╕рд┐рдпреЛрдВ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддреАред рдореИрдВ рд╡рд┐рди 7 рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╢рд╛рд╕рдХ рдерд╛, рддреЛ рдЗрд╕реЗ рдирдП рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдордПрд╕ рдЙрдЬреНрдЬреНрд╡рд▓ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛ рд░рд╣рд╛ред рд╡реИрд╕реЗ, 6 рджрд┐рд╕рдВрдмрд░ рдХреЛ, рдПрдВрдЯреЛрди рд╕рд┐рд▓реБрдЖрдиреЛрд╡ рдиреЗ рдШрд░реЗрд▓реВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдПред

Sova.online

рдПрдХ рдЙрд▓реНрд▓реВ рдХреИрд╕реЗ рдПрдХ рдлрд╛рд░реНрдо рдЦреЛрд▓рддрд╛ рд╣реИред
рдорд▓реНрдЯреА-рдкреЗрдЬ рдХреЗ рдмрд┐рдирд╛ред
рдЙрд▓реНрд▓реВ рдХрд╛ рдХреЗрдВрджреНрд░реАрдп рддрддреНрд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдШрдЯрдХ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рдкрд░ ctrl-U рджрдмрд╛рдХрд░, рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд┐рдП:
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб;
- рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд░реНрдо рдХрд╛ рдпреВрдЖрд░рдПрд▓;
- dbAlias, unid - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП;
- рд╡рд╣рд╛рдБ рдХреБрдЫ рдФрд░ред

рдХреБрдЫ рд╣рдж рддрдХ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ Redux-form рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
рдлреЙрд░реНрдо рдХреЛ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдкреВрд░реНрд╡ рд╢рдмреНрджрдХреЛрд╢ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢реИрд▓реА, рдХреНрд▓рд╛рд╕рдиреЗрдо рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рд╕реВрдЪреА) рд╣реЛрддреА рд╣реИред рд╕рд░рдгреА рдореЗрдВ рдЖрдИрдбреА = рд░реВрдЯ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛
<div style className>тАжтАж</div> 

рдПрд░реЗ рддрддреНрд╡ рдРрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬреЛ рдЯреИрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
 <div>, <a>, <img>, <button> 
, рдпрд╛ рдПрдХ рд╕рд░рдгреА, рдпрд╛ рдШрдЯрдХреЛрдВред
рдмреЙрдХреНрд╕рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдгреА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдРрд░реЗ рд╕реЗ рдпреБрдХреНрдд рдХреЛрдИ рддрддреНрд╡ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрд╡рдпрдВ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╣реЗрдЧрд╛ред
рдкреГрдереНрд╡реА рдХреА рдирд╛рднрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ div рд╣реИред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ: рддрд╛рдирд╛рд╢рд╛рд╣ (div = 'Hello', className = 'h2')
рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рд░рдгреА (рд╕рд╛рд░рдгреА рдХрд╛ рд╕рд╛рд░рдгреА) рд╣реЛ рд╕рдХрддреА рд╣реИ:
 def style(**par): return {'style': {**par}} dict( #     sova.online style(position='relative'), readOnly = 1, div = [ dict( style(width=1000, margin='auto', paddingTop=20), div=[ { 'div': subFormTop.panel() }, { 'div': [subFormLeft.panel(), subFormRight.panel()], 'className': 'row' }, # { 'div': [subFormDown.panel()] }, ]), ] ) 


3 рдкреИрдирд▓ рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ: рд╕рдмрдлрд╝реЙрд░реНрдордЯреЙрдкреНрдбреЛ, рдЖрджрд┐)ред
subFormTop.panel () рд╢реАрд░реНрд╖ рдкреИрдирд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред
subFormLeft.panel () рдФрд░ subFormRight.panel () рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ ('className': 'row') рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдкреИрдирд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
subFormDown.panel () рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ (рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ)ред

рдпрд╣ рдЬрдЯрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рдпрдерди рд╣реИ: рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
"рд░рд┐рдкреЛрд░реНрдЯ" рдкрддреНрд░рд┐рдХрд╛ рд╕реЗ рдПрдХ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред LabField рдлрд╝рдВрдХреНрд╢рди (рд▓реЗрдмрд▓, DB_field_name) рджреЛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ (рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐) рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╢рдмреНрджрдХреЛрд╢ {'div': рд▓реЗрдмрд▓}, рджреВрд╕рд░рд╛ {'рдлрд╝реАрд▓реНрдб': [DB_field_name, 'tx']} рд╣реИред
 div = [ docTitle(''), dict ( wl='40mm', className='cellbg-green', div=_table( labField('', 'nodafd'), labField(' ', '_STARTINGTIME'), labField('', '_ENDTIME'), labField('', 'CREATOR'), labField('', 'REPORTCAT'), labField('', 'REPORTNAME'), labField('', 'REPORTTITLE'), labField(' ', 'dt1'), labField(' ', 'dt2'), labField('  2', 'dt3'), labField('  2', 'dt4'), labField('', 'LBYEARS'), labField('', 'GRGROUP'), labField(' ', 'QUERYMAIN'), labField('', 'NOTES'), )), sent(), ] 




рд╕реЛрд╡рд╛ / рдПрдкреАрдЖрдИ / рдлреЙрд░реНрдо / рд╣реЛрдо / рдЯреЙрдк-рдереНрд░реАрдбреА (sova.online рдкрд░ рд╢реБрд░реВ) рд╕реЗ рдЙрджрд╛рд╣рд░рдг:

рдЕрдЬрдЧрд░ рд╢рдмреНрджрдХреЛрд╢
{a тАЩ: ct рд░рд┐рдПрдХреНрдЯ v16тАЩ,: href тАЩ: ct https://reactjs.orgтАЩ}
рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ
 <a href={'https://reactjs.org'}>React v16</a> 


Img рдорд╛рдирдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реИ - рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдЖрдк href рдФрд░ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЕрдЬрдЧрд░:
рддрд╛рдирд╛рд╢рд╛рд╣реА (img = 'image; react.ico', style = {'width': 16}, href = 'https: //reactjs.org')

рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ (boxing.js):
 if ( td.img ) { // td тАУ    let img = <img src={td.img} _/>; return td.href ? <a href={td.href} key={i} target={td.target}>{img}</a> : img; } 


рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп"ред рдкрд░рд┐рдгрд╛рдо рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ - рдмрд╣реБрдд рдХреБрдЫред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдмрд╣реБрддрд╛рдпрдд рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рди рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП:
рд╕реНрдорд╛рд░реНрдЯ-рдЯреЗрдХреНрд╕рд╛рд░рд┐рдпрд╛ рд╢рд╛рдпрдж рдПрдХрдорд╛рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЕрдиреБрдХреВрд▓ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЪрдпрди - рд╕рд░рд▓реАрдХреГрдд рдФрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛
рдбреЗрдЯрд╛-рдкрд┐рдХрд░ / рдХреИрд▓реЗрдВрдбрд░ - рдХреБрдЫ рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрд╛, рдмрд┐рд▓реНрдЯ-рдЗрди рдЬреА.рдХреНрд░реЛрдо рдХреЛ рдПрдХ рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ред
рдЕрдкрд▓реЛрдб / рдбрд╛рдЙрдирд▓реЛрдб - рдХреБрдЫ рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ, рдореЗрд░рд╛ рдЕрдкрдирд╛ рд▓рд┐рдЦрд╛ред

рдЗрдореНрд╣реЛ: рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рднрд╡рд┐рд╖реНрдп рджреБрдЦрдж рд╣реИред рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдВрдж) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред рдЯреИрдмрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдлреЛрди рдмрдврд╝реЗрдЧрд╛, рдФрд░ 10 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ 1 рдбреИрд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЛ рдмрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ, рдЬреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдИ-рдореЗрд▓ рдкрддрд╛ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреНрдпреЛрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рджреБрдирд┐рдпрд╛ рдмрджрд▓ рд░рд╣реА рд╣реИред

рдЙрд▓реНрд▓реВ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдереЗ, рди рдХрд┐ рд╡реЗрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, "рдЯреНрд░рд╛рдВрд╕рдлрд░ рдорд╛рд░реНрдХ" рдлреЙрд░реНрдоред рдПрдХ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдк, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╣рд╛рдБ рд╣реИ рдЬрд╣рд╛рдБ рдПрдХ рдмреЙрд╕ рд╣реИред рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рдЫреБрдкрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдкрд░рд┐рдХреНрд░рдорд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВ, рдпрджрд┐ рдСрдкрд░реЗрдЯрд┐рд╡ рднрд╛рдЧ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХреЗ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдХрдИ рд╕рдореВрд╣ рд╣реИрдВред рдкреНрд░рддрд┐ рд╕рдореВрд╣ рджреЛ рд╢рдмреНрдж: рдкрд╣рд▓реА рдЕрд╡рдзрд┐ 1 рдХрд▓рд╛рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, 2 рд╢рдмреНрдж рд╕рд╣-рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдПред


рдЖрдк рдпрд╣рд╛рдВ рдлреЙрд░реНрдо рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝реАрд▓реНрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред
рдЙрдирдХреЗ рдСрдкрд░реЗрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг Sova.online рдкрд░ рд╣реИред
Rtf рдФрд░ json рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред Rtf рдХреЛ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдкрд╛рда рдореЗрдВ рдПрдХ {_ {рдСрдмреНрдЬреЗрдХреНрдЯ} _} рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд▓реНрд▓реВ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП json.parse рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ред рдЯрд╛рдЗрдк рдЬрд╕рди рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдорд╛рд░реНрдХрдЕрдк рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд░рдгреА рдХрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: [{ele1}, {ele2}, ...]ред json.parse рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред

рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдирд┐рдпрдВрддреНрд░рдХреЛрдВ.рдЬреЗрдПрд╕) рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╕реВрдЪреА:
 export const controller = prop => { switch (prop.type) { //  case 'chb': return <Checkbox {...prop}/>; case 'lbse': // listbox single enable (    ) case 'lbme': // listbox multivalue enable // lbse/lbme -     ,   case 'tx': return <Text {...prop}/>; // smart-textarea case 'lbsd': // listbox single disables (    ) case 'lbmd': return <ListBox {...prop}/>; case 'dt': return (prop.readOnly ? <Text {...prop} xValue={Util.dtRus(prop.xValue)} /> : <Datepicker {...prop}/>); case 'fd': return <ForDisplayOnly {...prop}/>; case 'table': case 'gr': return <Table {...prop}/>; case 'rtf': return <RTF {...prop}/>; case 'json': return <JsonArea {...prop}/>; case 'list': return <List {...prop}/>; case 'view': return <View {...prop}/>; default: console.warn('  ', prop.xName, prop.type); return <Text {...prop}/>; }; }; 


рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдПрдХ рдЙрд▓реНрд▓реВ рдореЗрдВ, рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
this.register
рдореИрдВ рдЕрдлрд╡рд╛рд╣реЛрдВ рдХреЗ рдХрд╛рд░рдг рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рд╕рдВрдкрд╛рджрдХреАрдп рдХрд░реНрдордЪрд╛рд░реА рдЗрд╕реЗ рд░рджреНрдж рдХрд░ рджреЗрдВрдЧреЗред
рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
getValue (рдкрд░рдо)
рд╕реЗрдЯрд╡реИрд▓реНрдпреВ (рдореВрд▓реНрдп, рдкрд░рдо)
рд╕реЗрдЯрдлреЛрдХрд╕ ()
changeDropList ()

рд╡рд╛рдВрдЫрд┐рдд рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ
getField (рдлрд╝реАрд▓реНрдбрдирд╛рдо, рдкрд░рдо)
рд╕реЗрдЯрдлрд┐рд▓реНрдб (рдлрд╝реАрд▓реНрдбрдирд╛рдо, рдорд╛рди, рдкрд░рдо)
changeDropList (рдлрд╝реАрд▓реНрдбрдирд╛рдо, рдкрд░рдо)
рд╕реЗрдЯрдлреЛрдХрд╕ (рдлрд╝реАрд▓реНрдбрдирд╛рдо)
FileShow рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзрд┐ fileShow ['FILES1 _'] рд╣реИред HasAtt (), рдЬрд╣рд╛рдБ FILES1_ рдлрд╝рд╛рдЗрд▓ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо рд╣реИред рдпрджрд┐ рдЕрдиреБрд▓рдЧреНрдирдХ рд╣реИрдВ рддреЛ рд╕рд╣реА рд╣реИред рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдЪрд┐рд╣реНрди рдореЗрдВ 2ред

рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдПрдХ рдкреБрдирд░реНрдЧрдгрдирд╛ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рд╣реИ, рддреЛ рд╡рд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рд╣реИрдВрдбрд▓рд░ рд▓реЛрдбреЗрдмрд▓ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХреБрдЫ рд╕рд░рд▓ рд╡рд┐рд╡рд░рдг:
рдПрдХ рдлреЙрд░реНрдо "рдЯреНрд░рд╛рдВрд╕рдлрд░ рдорд╛рд░реНрдХ" (o.py) рд╣реИред рдЗрд╕рдореЗрдВ рднрд░реА рд╣реБрдИ o.js рдлрд╝рд╛рдЗрд▓ рд╣реИ
O.js рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ
 recalc: { PROJECTO: doc => doc.forceUpdate(), WHOPRJ2: doc => doc.forceUpdate(), WHOPRJ3: doc => doc.forceUpdate(), тАж   } 

, рдФрд░ рдпрд╣ рднреА рдЫрд┐рдкрд╛рдиреЗ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкрд░рд┐рдпреЛрдЬрдирд╛, рд╕реЗрд╢рди, prj1, prj2 ... prj5 divs рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ "рдирд╛рдо" рд╕рдВрдкрддреНрддрд┐ рд╣реИ):
 hide: { project: doc => !doc.getField('projectO'), // ,   PROJECTO  op: doc => doc.getField('projectO'), // ,   PROJECTO   prj1: doc => !doc.getField('projectO'), prj2: doc => !doc.getField('projectO'), prj3: doc => !doc.getField('projectO') || (!doc.getField('whoPrj2') && !doc.getField('whoPrj3')), prj4: doc => !doc.getField('projectO') || (!doc.getField('whoPrj3') && !doc.getField('whoPrj4')), prj5: doc => !doc.getField('projectO') || (!doc.getField('whoPrj4') && !doc.getField('whoPrj5')), }, 


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: PROJECTO рдлрд╝реАрд▓реНрдб рдПрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╣реИ, рдЬрдм рдореВрд▓реНрдп рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдкреБрдирд░реНрдЧрдгрдирд╛ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ recalc.PROJECTO (рдЗрд╕) рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рд╣реИрдВрдбрд▓рд░ рдмрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП forceUpdate () рдХрд╣рддрд╛ рд╣реИред
рдЬрдм redrawing, рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЙрдкрд░ рдореЗрдВ рдШрдЯрдХ рдХрд╛ рдХреЛрдИ рдирд╛рдо рд╣реИ, рдХреНрдпрд╛ рдЗрд╕ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд┐рдкрд╛ [props.name] рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд▓реМрдЯреЗрдЧрд╛ред
prj3: doc =>! doc.getField ('projectO') || (! doc.getField ('whoPrj2') &&! doc.getField ('whoPrj3'))
рддреАрд╕рд░рд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди (props.name === 'prj3' рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░) рдЫреБрдкрд╛рдПрдВ рдпрджрд┐ 'рдкреНрд░реЛрдЬреЗрдХреНрдЯрдУ' рдЪреЗрдХрдмреЙрдХреНрд╕ рдмрдВрдж рд╣реИ рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдлрд╝реАрд▓реНрдбреНрд╕ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдлрд╝реАрд▓реНрдб 2 рдФрд░ 3 ('whoPrj2' рдФрд░ 'whorrj3' рдлрд╝реАрд▓реНрдб рд░рд┐рдХреНрдд рдирд╣реАрдВ рд╣реИрдВ) рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдлрд╝реАрд▓реНрдб рдирд╛рдо рдХреЗрд╕-рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
WHOPRJ2 рдПрдХ рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕ рд╣реИ, рдЬрдм рдЖрдк рдПрдХ рдореВрд▓реНрдп рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдкреБрдирд░реНрдЧрдгрдирд╛ рдШрдЯрдирд╛ рднреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЬреЛ рдПрдХ рд░реАрдбреНрд░рд╛ рдХрд╛ рдХрд╛рд░рдг рднреА рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдПрдХ рдХрд▓рд╛рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ, рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреАрд╕рд░реЗ рдХреЛ рдЦреЛрд▓реЗрдВрдЧреЗред

рднрд░реА рд╣реБрдИ js рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЫрд┐рдкрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди;
- рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди;
- рдлрд╝реАрд▓реНрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛;
- рдмрдЯрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд;
- рдмрдЪрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреЗрддреЛрдВ рдФрд░ рд░реВрдкреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд░рдирд╛;

рдлреЙрд░реНрдо 'рдлреЛ' рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
 window.sovaActions = window.sovaActions || {}; window.sovaActions.fo = { // fo тАУ      recalc: { //           PROJECTO: doc => doc.forceUpdate(), }, hide: { //   ,  true project: doc => !doc.getField('projectO'), }, readOnly: { //     ,  true who: doc => doc.getField('SENTFROMDB'), }, validate: { //         who: doc => doc.getField('who') ? '' : '   " "', form: doc => new Promise( (yes, no) => { let disableAutoOrder = false; for (let i = 1; i <= 5; i++) { let val = doc.getField('RESPRJ' + i); disableAutoOrder |= /  /.test(val); } disableAutoOrder && doc.setField('AUTOORDER', ''); yes(); }), }, cmd: { //    logoff: doc => { window.location.href = '/logoff' }, }, } 


рдЦреЗрддреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдЦрд╛рд▓реА рд▓реМрдЯрддрд╛ рд╣реИ, рдпрд╛ рдЬреЛ рдЧрд▓рдд рд╣реИ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ред рдПрдХ рдЙрд▓реНрд▓реВ рдПрдХ рдЕрдорд╛рдиреНрдп рдХреНрд╖реЗрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рдкреНрд░рдкрддреНрд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди - рд╡рд╛рджрд╛ред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЛрдИ рдЪреЗрдХ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рдБ рд╣рдореЗрд╢рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Redux-form рдореЗрдВ рд╕рддреНрдпрд╛рдкрди trow - рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрдВрдЧрд▓реАрдкрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд╛рджреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╕рд░рд▓рддрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 const confirmDlg = msg => new Promise((ok, cancel) => confirm(msg) ? ok('  ') : cancel('  cancel')); confirmDlg('  ') .then( s => console.log(s)) .catch( s => console.log(s)); 


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрдорд╛рдВрдб рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдЯрдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рдВрдкрд╛рджрди рдореЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
рд╕рд╣реЗрдЬреЗрдВ: рдлрд╝реЙрд░реНрдо рд╕рд╣реЗрдЬреЗрдВ
рдХрд░реАрдм: рдлрд╛рд░реНрдо рдмрдВрдж рдХрд░реЗрдВ
saveClose: рдлреЙрд░реНрдо рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ

prn: рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рдлреЙрд░реНрдо рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
docOpen: рдЦреБрд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
dbOpen: рдУрдкрди рд▓реЙрдЧ
xopen: url рдЦреЛрд▓реЗрдВ
newDoc: рд╡рд╛рдВрдЫрд┐рдд рдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдБ

Redux-form api рдЕрдореАрд░ рд╣реИ - рдЙрд▓реНрд▓реВ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдорд▓реНрдЯреА рдкреЗрдЬред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдкреНрд░рдкрддреНрд░) рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рддрддреНрд╡ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред
 <div id="root"></div> 
ред
рд╣рдо рдЗрд╕реЗ "рд░реВрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ" рдХрд╣реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
<div style = {рд╕реНрдерд┐рддрд┐: 'рдирд┐рд░рдкреЗрдХреНрд╖', zIndex: 999}} />, рдЖрдк рдЗрд╕рдореЗрдВ рдПрдХ рдФрд░ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдпрд╣ рд╕рд░рд▓ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЙрд░реНрдо рдХрд╛ рдЕрдкрдирд╛ рд╣реИрдВрдбрд▓рд░ (рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ js) рд╣реИ, рдФрд░ рд░реВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда sova.online (home.py) рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг
рдорд▓реНрдЯреА-рдкреГрд╖реНрда рдкреНрд░рдХреГрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реЛрдордХреЙрдореНрдлрд╝ рдкреНрд░рдкрддреНрд░, "rkckg", "рдЖрдЙрдЯрд▓реЗрдЯ", "рдЖрдЙрдЯрд▓реЗрдЯ.gru", "o" рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рддрд╛ рд╣реИред
рд╕рднреА рд░реВрдкреЛрдВ рдХреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ home.py рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 javaScriptUrl = ['jsv?api/forms/rkckg/rkckg.js', 'jsv?api/forms/outlet_gru/outlet_gru.js', 'jsv?api/forms/outlet/outlet.js', 'jsv?api/forms/o/o.js', 'jsv?api/forms/home/home.js'] 


рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ, рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╡рд╛рдВрдЫрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреАред

OOP рдФрд░ рдХреЛрдИ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдлреЙрд░реНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рдмрдВрдзрдХ (рддреАрд░ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛") рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рд╕реНрд╡рдпрдВ рд░рд┐рдкреЛрд░реНрдЯ (рддреАрд░ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ") HTML рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ "rreport" рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдЕрдзреАрдирд╕реНрде рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рдо рдЙрди рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рдереЗ рдЬрдм рд░рд┐рдПрдХреНрдЯ рдирд╣реАрдВ рдерд╛, "rreport" рдлреЙрд░реНрдо рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ (HTML рдХреА 20 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ 15-рдкрдВрдХреНрддрд┐рдпрд╛рдБ-js), рдХреНрдпреЛрдВ 8 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рдмрдВрдзрдХ рдЦреЛрд▓реЗрдВред

Rreport рдлреЙрд░реНрдо рдореЗрдВ 4 рдмрдЯрди рдФрд░ рдПрдХ iframe рд╣реЛрддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реВ src = "" рдХреЛ iframe рдореЗрдВ html рдЕрдЯреИрдЪрдореЗрдВрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП url рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╛рдХреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
EXCEL / WORD рдмрдЯрди рд╕рдорд╛рди рд╣реИрдВ: рдлрд╝рд╛рдЗрд▓ рдирд╛рдо "report.html.xls" рдпрд╛ "report.html.doc" рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдЗрдо-рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП url рдмрдЯрди рдбрд╛рд▓реЗрдВред рдмрд╛рдХреА рдПрдХреНрд╕реЗрд▓ / рд╡рд░реНрдб ("рдпреЗ рд╕реНрдорд╛рд░реНрдЯ рдЬрд╛рдирд╡рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕рдордЭрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЙрдирд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ") рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Do_get.py рд╕реЗ:

 downloadUrl = '/download/' + fn + '?' + '&'.join([d.db.alias, d.unid, idbl, fsName, fzip, ctype, flen]) excel = '/download/%s.xls?%s' % (fn, '&'.join([d.db.alias, d.unid, idbl, fsName, fzip, 'application/x-excel', flen])) word = '/download/%s.doc?%s' % (fn, '&'.join([d.db.alias, d.unid, idbl, fsName, fzip, 'application/msword', flen])) html = html.replace('src=""', 'src="%s"' % downloadUrl).replace('openExcel', excel).replace('openWord', word) 


Excel / Word рдореЗрдВ html рдЦреЛрд▓рддреЗ рд╕рдордп, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЕрдВрддрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рд▓реЗрдЦ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдЖрдХреГрддрд┐ рдмрдирд╛рдПрдВред

рд╕реНрд░реЛрдд рдбреЗрдЯрд╛:
3 рдХрд╛рд░реНрдп рд╣реИрдВ
def snd (* рд╕рдВрджреЗрд╢, рдмрд┐рд▓реНрд▓реА = 'snd'):
рдЧрд▓рддреА (* рд╕рдВрджреЗрд╢, рдмрд┐рд▓реНрд▓реА = 'рд╕рдм'):
def dbg (* msg, cat = 'snd'):
, рдЬреЛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╕рдВрджреЗрд╢ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
'% (asctime) s% (levelname) s [% (рдирд╛рдо) s]% (рд╕рдВрджреЗрд╢) s'
рдлрд╝рд╛рдЗрд▓ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рднрд░ рдЬрд╛рддреА рд╣реИ
...
09/02/2018 17:50:07 DEBUG [http-server] addr ('127.0.0.1', 49964), "GET / рдЖрд░реНрдо HTTP / 1.1" 200 -
09/02/2018 17:54:07 INFO [рдореБрдХреНрдд рд╕реНрдерд╛рди] рдЕрдиреБрд▓рдЧреНрдирдХ "ред \ DB \ рдлрд╝рд╛рдЗрд▓реЛрдВ" рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╣реИрдВ
09/02/2018 17:58:07 ERROR [do_get.py] getScript: [Errno 2] рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ: 'sova / api / рдлрд╝реЙрд░реНрдо / o / oo.js'
...
рддрд┐рдерд┐-рд╕рдордп, рдлрд┐рд░ рд╕реНрддрд░, рдлрд┐рд░ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЗ рд╕реНрддрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╢реНрд░реЗрдгреА, рдлрд┐рд░ рдПрдХ рд╕рдВрджреЗрд╢ред

рдЙрджреНрджреЗрд╢реНрдп:
рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдЬ рдмрдирд╛рдПрдБред рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛


рд╣рдо рдлреЙрд░реНрдо рдХреЛ "рдПрд▓рдПрдо" рдХрд╣реЗрдВрдЧреЗ, рдпрд╣ рдПрдкреА / рдлреЙрд░реНрдо / рдПрд▓рдПрдордбреАрдПрдордУ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
 def page(dbAlias, mode, userName, multiPage): return dict( style(background='url(/image?bg51.jpg)', backgroundSize='100% 100%'), div=[ dict( style(width='200px', float='left', background='rgba(210,218,203, 0.5)', padding='0 5px'), div=[ _field('type', 'list', [' |all', '|err', '|info', '|debug'], saveAlias=1, **style(margin='10px auto', width=170, height=110) ), _field('cat', 'list', 'TYPE_ALIAS|||api.get?loadDropList&logger|keys_{FIELD}', listItemClassName='repName', listItemSelClassName='repNameSel', **style(height='calc(100vh - 133px)', overflow='auto') ) ], ), _field('msg', 'fd', br=1, **style(overflow='auto', height='100vh', font='bold 12px Courier', background='rgba(255,255,255, 0.8)') ), ] ) 


рдмрд╛рдИрдВ рдУрд░ 2 рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде: рдкреНрд░рдХрд╛рд░ рдФрд░ рдмрд┐рд▓реНрд▓реА (рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╢реНрд░реЗрдгреА)ред
рджрд╛рдИрдВ рдУрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдлрд╝реАрд▓реНрдб рд╣реИ fd (forDisplayOnly)ред
рдореИрд╕реЗрдЬ рд╡рд┐рд╡рд░рдг рдлрд╝реАрд▓реНрдб рд╡рд┐рд╡рд░рдг рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ([are рдСрд▓ рд▓реЙрдЧ | рдСрд▓ тАЩ, | рддреНрд░реБрдЯрд┐рдпрд╛рдВ | рддреНрд░реБрдЯреАтАЩ,тАж) |
рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдПрдХ рдЖрдХрд░реНрд╖рдХ рдпреВрдЖрд░рдПрд▓ рдХреЙрд▓ рдХреЗ рд╕рд╛рде xhr рджреНрд╡рд╛рд░рд╛ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ:
api.get; loadDropList рдФрд░ logger | keys_err json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рд╕реВрдЪреА) рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ ('рд▓рдХрдбрд╝рд╣рд╛рд░рд╛', 'keys_err')ред
рдЬрдм рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ lO.py рдореЗрдВ рдХреНрд╡реЗрд░реАрдУрдкреЗрди рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ
 def queryOpen(d, mode, ground): logParser() ls = well('logger_all', 'AL L') s = '\n'.join(reversed(ls)) d.msg = s d.type_alias = 'all' 

logParser рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХрдИ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИред рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ: 2 рд╕рд░рд▓ рдлрд┐рд░ рд╕реЗ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд▓реВрдкред
рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп:
toWell (o, Key1, [key2]) - рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ "o" рдХреЛ рд╕рд╣реЗрдЬреЗрдВ
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (рдХреА 1, [рдХреА 2]) - рдХреБрдВрдЬреА (рджреЛ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛) рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рд▓реЗрдВред
рдпрд╣ рдкрд╣рд▓реА рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рд╢реНрд░реЗрдгреА рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп js рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
Lm.py рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
javaScriptUrl = 'jsv? api / forms / lm / lm.js'
рдФрд░ lm.js рдмрдирд╛рдПрдВ:
 window.sovaActions = window.sovaActions || {}; window.sovaActions.lm = { //   "lm" init: doc => doc.changeDropList('CAT'), recalc: { TYPE: (doc, label, alias) => { doc.changeDropList('CAT'); getLogData(doc, alias + '|AL L'); }, CAT: (doc, label) => getLogData(doc, doc.getField('type_alias') + '|' + label), }, }; // *** *** *** let getLogData = (doc, keys) => { fetch('api.get?getLogData&' + keys, {method: 'get', credentials: 'include'}) .then( response => response.text() ) .then( txt => doc.setField('msg', txt) ) .catch( err => doc.setField('msg', err.message) ); }; 


getLogData рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдЦреАрдВрдЪрддрд╛ рд╣реИ:
 def getLogData(par, un): lg, _, cat = par.partition('|') msg = well('logger_' + lg, cat) return 200, 'text/html; charset=UTF-8', '\n'.join(reversed(msg)) 


рдЖрдк рдпрд╣рд╛рдВ рдлреЙрд░реНрдо рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд▓реЙрдЧрд┐рдВрдЧ рдорд╛рдирдХ рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
logging.FileHandler, .addHandler рдФрд░ рдЕрдиреНрдп getLogger рдФрд░ setFormatter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
рдХреИрд╕реЗ рд╕рд┐рдЦрд╛рдирд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдереАред рдЖрдк рдкрддреНрдерд░ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдФрд░ рдмрд╕ рдПрдХ рдлрд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рддреЛ рдХреЛрдб рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛, рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рдФрд░ рдЧрдбрд╝рдмрдбрд╝ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИред

рд╢рд╛рдорд┐рд▓ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб wsgi рд╕рд░реНрд╡рд░ рд╣реИред рдпрд╣ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЙрд╕рдХреА рдЖрдЦрд┐рд░ рдЬрд░реВрд░рдд рдХреНрдпреЛрдВ рдереА?
рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ 40 рдЬреВрд░ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ 1-2-3 рд▓реЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕реНрдЯреЛрд░ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИред рд╕рднреА рдЬреАрдд 7. рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдорд╛рдзрд╛рди: cx-Freeze рдФрд░ Inno рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ Windows рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рдиреА-http рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рдЖрдк рдкрд╛рдЗрдерди рдореЗрдВ рдирд┐рд░реНрдорд┐рдд wsgiref.simple_server рдпрд╛ wsgi_Werkzeug рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИрдВ: рдЬрдмрдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдХреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдмрд┐рд▓реНрдЯ-рдЗрди Django WSGIServer / 0.2 CPython / 3.5.3 рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ - рд░реВрдк рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреИрд╢реНрдб рд╣реИрдВ, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╣реИ: рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдлрд╛рдЗрд▓реЗрдВ, рд╕реНрдХреИрдирд░ ...) рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕рдорд╛рди рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ http-рд╕рд░реНрд╡рд░ рд▓рдЯрдХрд╛ рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реВрдБрдШ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрд▓реНрд▓реВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред DbToolkit рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, SQLite3 рдореЗрдВ MongoDB (рдпрд╛ рд▓реЛрдЯрд╕ рдиреЛрдЯреНрд╕) рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рд╣реИ:
рдкреБрд╕реНрддрдХ рд╡рд░реНрдЧ - db (рдореЛрдВрдЧреЛрдбреАрдмреА рдФрд░ рд▓реЛрдЯрд╕ рдиреЛрдЯреНрд╕ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ)
рдХрдХреНрд╖рд╛ DocumentCollection - рдкреБрд╕реНрддрдХ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рдлрд╝реАрд▓реНрдб рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдпреБрдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ) рд╣реИред

рд╕реНрдерд╛рдкрдирд╛:
Sova.online рд╕реЗ рдЙрд▓реНрд▓реВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЙрд▓реНрд▓реВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк django, рдмрд╛рдЬрд╝ рдпрд╛ рдмрд┐рдирд╛ рдЪреМрдЦрдЯреЗ рдХреЗ рдЙрд▓реНрд▓реВ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд╛рдЙрдирд▓реЛрдб, рдЕрдирдЬрд╝рд┐рдкред
рдкрд╛рдпрдерди 3 (3.5+) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

1. рдЙрд▓реНрд▓реВ - рдЪреМрдЦрдЯреЗ рдХреЗ рдмрд┐рдирд╛ред рдЪреЗрддрд╛рд╡рдиреА! рд▓реЙрдЧрд┐рди: 1, рдкрд╛рд╕рд╡рд░реНрдб: 1

linux:
cd ./owl
python3 wsgi_sova.py

рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдореЗрдВ
рд╕реНрдХреНрд░реАрди -Udm python3 wsgi_server.py

рд╡рд┐рдВрдбреЛрдЬ:
cd ./owl
wsgi_sova.py

2. Django

linux:
Django рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
pip3 рд╕реНрдерд╛рдкрд┐рдд django
cd ./owl
python3 manage.py runserver

рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдореЗрдВ
рд╕реНрдХреНрд░реАрди -UDM python3 рдореИрдиреЗрдЬрдбреЛрдорд░ рд░рдирд╕рд░ 127.0.0.1:8000

рд╡рд┐рдВрдбреЛрдЬ:
Django рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд django
cd ./owl
рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛

3. рдмрд╛рдЬрд╝

linux:
pip3 рд╕реНрдерд╛рдкрд┐рдд рдлрд╛рд▓реНрдХрди
cd ./owl
python3 wsgi_sova.py falconApp: api 8001 log_falcon / рдмрд╛рдЬрд╝

рд╡рд┐рдВрдбреЛрдЬ:
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдлрд╛рд▓реНрдХрди
cd ./owl
wsgi_sova.py falconApp: api 8001 log_falcon / рдмрд╛рдЬрд╝

*********************

- рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпрд╛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ "рдорд▓реНрдЯреАрдкрдЬ рдПрд╕рдкреАрдП" рдХреНрдпрд╛ рд╣реИ?
- рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдкрдгрди рдЪрд╛рд▓
- рдмрд┐рдирд╛ Redux рдХреЗ рдХреНрдпреЛрдВ? рд╣рд░ рдХреЛрдИ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- рдореБрдЭреЗ "reducer" рд╢рдмреНрдж рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ
- рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ? рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░ ombineReducers ... рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рд╣реИ
рдмрд╣реБ рд╣реИ, рдмрдЪреНрдЪрд╛ рд╣реИред рдХрдорд╛рди рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдлреЙрд░реНрдо рдХреЗ рдЕрдВрджрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рд╣рд┐рд░рдг рдХреЗ рд╕реАрдВрдЧреЛрдВ рдХреА рддрд░рд╣
- рдЖрдкрдиреЗ рдПрдХ рд▓реЗрдЦ рднреА рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛?
- рдкреАрдЖрд░

Source: https://habr.com/ru/post/hi424779/


All Articles