рдЗрдВрд╕реНрдЯреЗрдВрдЯ рджрд▓рд┐рдпрд╛ - рдЬреЗрдХрдЧреНрд░реАрдб рдХреЗ рд╕рд╛рде рдХреИрдЪ рдореЗрдВ CRUD рдмрдирд╛рдирд╛

рдпрд╣ рд╕рд╛рд░рдгреАрдмрджреНрдз рдбреЗрдЯрд╛ - jqGrid рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Intersystems Cach├й рдкрд░ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЕрдХреНрд╕рд░ рд╣реИрдмреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рдзреНрдпрд╛рди рдХреИрдЪреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
JqGrid рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн :
рдбрд┐рд╢ рдХреА рд╕рдВрд░рдЪрдирд╛ : рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ, рдПрдХ рдкреГрд╖реНрда рд╡рд░реНрдЧ, рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рд╡рд░реНрдЧред рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдбрд┐рд▓реАрд╡рд░реА рдиреЗрдЯрд╡рд░реНрдХ ( рд╕реАрдбреАрдПрди ) рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЗрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

рдЖрджрд░реНрд╢


рдЗрд╕ рдбрд┐рд╢ рдХрд╛ рдЖрдзрд╛рд░ рдХреНрд▓рд╛рд╕ рдореЙрдбрд▓.рдкрд░реНрд╕рди рд╣реЛрдЧрд╛ ред
Cach├й Studio рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ рдмрдирд╛рдПрдБред рдлрд╝рд╛рдЗрд▓ - рдХреНрд░рд┐рдПрдЯ - рдХреИрдЪ рдХреНрд▓рд╛рд╕
рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╡рд░реНрдЧ рдореЙрдбрд▓.рдкрд░реНрд╕рди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
/// рд╕рд░рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ
рд╡рд░реНрдЧ рдореЙрдбрд▓ред рдкрд░реНрд╕рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ( % рд╕реНрдерд╛рдпреА , % рдЖрдмрд╛рдж ) {

/// рдирд╛рдо - рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рднрд░рдирд╛ рд╣реИ
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо % рд╕реНрдЯреНрд░рд┐рдВрдЧ ( POPSPEC = "рдирд╛рдо ()" );
рд╕реВрдЪрдХрд╛рдВрдХ рдирд╛рдо рдкрд░ рдирд╛рдо;

/// рдЬрдиреНрдо рдХрд╛ рд╡рд░реНрд╖
рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ % рдкреВрд░реНрдгрд╛рдВрдХ ( MAXVAL = 2012 , MINVAL = 1910 );

/// рд╡рд░реНрд╖ рджрд░ рд╡рд░реНрд╖ рдЦреЛрдЬ рдФрд░ рддреЗрдЬрд╝ рд╣реЛрдЧреА
рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд░реНрд╖ рдкрд░ рд╡рд░реНрд╖ [ рдкреНрд░рдХрд╛рд░ = рдмрд┐рдЯрдореИрдк];

}

рд╣рдо рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ - рд╕реНрдЯреВрдбрд┐рдпреЛ (Alt + 2) рдХреА "рдЖрдЙрдЯрдкреБрдЯ" рд╡рд┐рдВрдбреЛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
write ##class(model.person).Populate(100000) 

рд░рд╛рдп


рдЪрд▓реЛ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреГрд╖реНрда рдмрдирд╛рддреЗ рд╣реИрдВ - рдЖрд╡рд╢реНрдпрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд╕рд╣рд╛рдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде view.person рд╡рд░реНрдЧред
View.person рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
 ///     <class>model.person</class> ///   <a href="http://www.trirand.com/blog/">jqgrid</a> Class view.person Extends %CSP.Page { /// node     Parameter DOMAIN = "person"; ///     ClassMethod OnPage() As %Status { &html<<!DOCTYPE html> <html lang="ru"><head> <meta charset="ru"/> <title>#($$$Text("Intersystems Cach├й + jqGrid"))#</title> <style> /*      */ body {font-size: 11px; font-family: Georgia,Verdana,Arial,sans-serif; } </style> <!--     --> <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.8.24/themes/base/jquery-ui.css" /> <!--     --> <link rel="stylesheet" type="text/css" href="http://www.trirand.net/themes/ui.jqgrid.css" /> <!-- ,    --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!--   (, , etc.) --> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script> <!--    jgGrid--> <script src="http://www.trirand.net/js/trirand/i18n/grid.locale-ru.js"></script> <!--     --> <script src="http://www.trirand.net/js/trirand/jquery.jqGrid.min.js"></script> <!--    --> <script src="themeswitcher.js"></script> </head><body> <!--    c    --> <table id="grid"></table> <!--    --> <div id="bar"></div> <!--    --> <div id="theme"></div> <!--   --> <script type="text/javascript"> $( function(){ //  document.ready var $grid=$( "#grid" ) //     , bar="#bar" //    , url='#(..Link("service.person.cls"))#' ; $grid.jqGrid({ //  ,      caption: '#($$$Text("person"))#' , colModel: [ //    { name: 'name', width: 250, editable: true } ,{ name: 'year', editable: true } ] , pager: bar //      , url: url //  , editurl: url //    , datatype: "json" //    , mtype: 'POST' , jsonReader: { //     //      //      //       repeatitems: false } , height: 350, width: 900 //   , rownumbers: true //     , rownumWidth: 45 //       , viewrecords: true //      , gridview: true //   ,     , scroll: 1 //    , hoverrows: true //      , rowNum: 100 //   ,    , sortable: true //    , sortname: 'name' //      }) .jqGrid('filterToolbar',{searchOnEnter:false}) //  .jqGrid('gridResize', {}) //      ; ///        var serverHandler=function( resp ){ var array=[]; try { array=eval(resp.responseText); } catch(err){ return ["",e.description]; } return array; }; ///      / ,  var opts={ afterSubmit: serverHandler //    , closeAfterAdd: true //      , clearAfterAdd: true //       , closeAfterEdit: true //      //  .     .    , viewPagerButtons: false }; //    $grid.jqGrid('navGrid',bar, { edit: true, edittext: '#($$$Text(""))#' , add: true, addtext: '#($$$Text(""))#' , del: true, deltext: '#($$$Text(""))#' , view: false, search: false } , opts //  , opts //  , opts //  ); //     //   pager   $(bar+"_center").remove(); //  ,  UPD themeswitcher( $( "#theme" ) ); });</script></body></html>> Quit $$$OK } } 

рдирд┐рдпрдВрддреНрд░рдХ


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

?rows=100&page=2&_search=true&name=McCormick&sidx=name&sord=desc

рдХрд╣рд╛рдБ: рдкрдВрдХреНрддрд┐рдпрд╛рдБ - рднрд╛рдЧ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдкреГрд╖реНрда - рднрд╛рдЧ рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛, _search - рдЦреЛрдЬ рдореЛрдб (рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж), рдореИрдХрдХреЙрд░реНрдорд┐рдХ - рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕реНрддрдВрдн рдирд╛рдо рдореЗрдВ рдЦреЛрдЬ рдорд╛рди, рд╕рд╛рдЗрдбреЗрдХреНрд╕ - рд╕реЙрд░реНрдЯ рдлрд╝реАрд▓реНрдб, рд╕реЙрд░реНрдб - рдХреНрд░рдо рдХреНрд░рдо
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, jqGrid рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд json рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ)
 {"records": 102, "total": 2, "page": 2, "rows": [ { "id": 1,"name": "McCormick,Diane Z.", "year": 1910 } ,{ "id": 2,"name": "McCormick,Christen G.", "year": 1911 } ]} 


рдХрд╣рд╛рдБ, рд░рд┐рдХреЙрд░реНрдб - рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛, рдХреБрд▓ - рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛, рдкреГрд╖реНрда - рдбреЗрдЯрд╛ рдХрд╛ рдкрдВрдХреНрдб рд╣рд┐рд╕реНрд╕рд╛, рдкрдВрдХреНрддрд┐рдпрд╛рдБ - рдбреЗрдЯрд╛ рд╕рд░рдгреА

рдПрдбрд┐рдЯреВрд░рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓рдЧрдЗрди рд╕реЗ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

рдирд┐рд░реНрдорд╛рдг ?oper=add&id=_empty&name=habra&year=2005
рдкрд░рд┐рд╡рд░реНрддрди ?oper=edit&id=1&name=habra&year=2006
рд╣рдЯрд╛рдПрдВ ?oper=del&id=1

рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдХреЛ рдЖрдлреНрдЯрд░рд╕реБрдорд┐рдЯ рдлрдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлреЙрд░реНрдо рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
[ result, error, id ]
рдХрд╣рд╛рдВ: рдкрд░рд┐рдгрд╛рдо рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ (рд╕рд╣реА || рдЧрд▓рдд), рддреНрд░реБрдЯрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо == рдЧрд▓рдд, рдЖрдИрдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдореВрд▓реНрдп рд╣реИ (рдирд┐рд░реНрдорд╛рдг рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)

рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗрд╡рд╛.рдкрд░реНрд╕рди рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд┐рд╕ рдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрд░реЛрдз рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╡рд░реНрдЧ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
  #;    csp.inc #;      service.person ///      ///    %request #define get(%name) $g(%request.Data(%name,1)) 


 Include csp ///  -  Class service.person Extends %CSP.Page { /// node    Parameter DOMAIN = "person"; /// Can only be referenced from another CSP page Parameter PRIVATE = 1; ClassMethod OnPage() As %Status { #; . csp.inc set oper=$$$get("oper") ;   #;    -     if ( oper = "add" ) Quit ..Add() Q:oper="edit" ..Edit() Q:oper="del" ..Del() #;     -    #;          set rows=$$$get("rows")\1 ;  if ( rows < 1 ) { set rows = 100 ;       } #;       s page=$$$get("page")\1 s:page<1 page=1 #;     (   - ) #;  sql  where    s where="", params="", search=$CASE( $$$get("_search"), "true": 1, : 0 ) if ( search ) { s name=$$$get( "name" ) if ( name'="" ) { #;  name  ,     #;     s where=where_$ListBuild( "name Like ?" ) s params( $increment(params) )="%"_name_"%" } s year=$$$get( "year" ) if ( year'="" ) { #; year -   SQL -     s where=where_$LB( """year"" = ?" ) ;  -  , params( $i( params ) )=year\1 ; } s where=$ListToString(where," AND ") } #;      #;          s countSQL=" SELECT Count(*) as records FROM model.person " if ( search ) s countSQL=countSQL_" WHERE "_where s records=0 #dim RS as %SQL.StatementResult s stmt=##class(%SQL.Statement).%New() s sc=stmt.%Prepare(countSQL) if 'sc d ..ShowError(sc) Q $$$OK s RS=stmt.%Execute(params...) if RS.%SQLCODE d ##class(%SYSTEM.SQL).SQLCODE(RS.%SQLCODE) Q $$$OK s:RS.%Next() records=RS.records kill RS #;     s total = records\rows ;  , part=records#rows ; s:part total=total+1 ;       #;   ,       s:page>total page=total ; #;        s end=page*rows, start=end-rows #;       #;    sql order by #;    jqgrid    s order="",sidx=$$$get( "sidx" ), sord=$$$get( "sord" ) #;       if $ListFind( $ListBuild("name","year"), sidx ) { s:sidx="year" sidx="""year""" ;year -    sql s order=sidx _ " "_$CASE( sord, "desc": "desc", : "asc" ) } #;      #;    ,   ID s sql=" SELECT ID From model.person " s:search sql=sql_" WHERE "_where s:order'="" sql=sql_" ORDER BY "_order s sc=stmt.%Prepare(sql) if 'sc d ..ShowError(sc) Q $$$OK s RS=stmt.%Execute(params...) if RS.%SQLCODE d ##class(%SYSTEM.SQL).SQLCODE(RS.%SQLCODE) Q $$$OK write "{" ;    , """records"": ", records ;     , ", ""total"": ", total ;   , ", ""page"": ", page ;    , ", ""rows"": [" ;   #;      #;    JSON - http://json.org #;  ..QuoteJS()   #;-    #define json(%str) """"_$replace($zcvt(%str,"O","JS"),"\'","'")_"""" #;  s sc="" for { s sc=RS.%Next() Quit:sc=0 s rnum=RS.%ROWCOUNT if (rnum < start) continue ;    if (rnum > end) Quit ;    #;    ,   #;rnum>1 -    ,  start=0 if ( rnum > start ) && ( rnum > 1 ) { w "," } s name=##class(model.person).nameGetStored(RS.ID) , year=##class(model.person).yearGetStored(RS.ID) w "{""id"":",RS.ID,",""name"":",$$$json(name),",""year"":",$$$json(year),"}" } w "]}" Q $$$OK } ///    ClassMethod Add() As %Status { s obj=##class(model.person).%New() Q ..Set(.obj) } ///     ClassMethod Edit() As %Status { s id=$$$get("id"), obj=##class(model.person).%OpenId(id,.sc) if $$$ISERR( sc ) { Q ..wResult( sc, id ) } Q ..Set(.obj) } ///  ,  ,   ClassMethod Set(obj As model.person) As %Status { if ( $g(obj) = "" ) || ( '$IsObject(obj) ) { s sc=$$$ERROR( $$$GeneralError, $$$Text("   ") ) Q ..wResult( sc ) } s obj.name=$$$get("name") s obj.year=$$$get("year") s id="", sc=obj.%Save() s:$$$ISOK(sc) id=obj.%Id() Q ..wResult( sc, id ) Q $$$OK } ///   ClassMethod Del() As %Status { s id=$$$get("id"), sc=##class(model.person).%DeleteId(id) Q ..wResult( sc, id ) Q $$$OK } ///   ClassMethod wResult(sc As %String = "", id As %String) As %Status { s result="false", msg="", id=$g(id) if $$$ISOK( $g(sc) ) { s result="true" } else { s msg=##class(%SYSTEM.Status).GetOneErrorText(sc) } w "[",result,",",..QuoteJS(msg),",",..QuoteJS(id),"]" Q $$$OK } } 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреИрд╢ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рд╡реНрдпреВ.рдкрд░реНрд╕рди рдХреНрд▓рд╛рд╕ рдЦреЛрд▓реЗрдВ рдФрд░ F5 рджрдмрд╛рдПрдВред рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рддреИрдирд╛рдд рд╣реИред

рдирдордХ рдФрд░ рдЪреАрдиреА рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП


рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рднрд╛рд╡ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрдЪ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдбреАрдмреАрдПрдордПрд╕ рд╣реИ рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЛ рдкреИрд░реЗрдВрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд░рдЦрд╛ рдФрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕рдВрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдФрд░ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреАред

UPD: рдпрд╣ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рджрд┐рди рдерд╛ рдХрд┐ jqueryui.com рдиреЗ рдЕрдкрдиреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдереАрдоwitchertool.js рдХреЛ рдПрдХреНрд╕реЗрд╕ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдЕрдм рдЗрд╕рдХреЗ рд╕рд░рд▓реАрдХреГрдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдордХрдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд░реЛрдд рдХреЛ рдпрд╣рд╛рдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

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


All Articles