{"id":174655,"date":"2013-04-19T07:58:03","date_gmt":"2013-04-19T03:58:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=174655"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=174655","title":{"rendered":"<span class=\"post_title\">\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Persistent-\u043a\u043b\u0430\u0441\u0441\u0430\u0445 Cach\u00e9<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 Cach\u00e9 \u043f\u0440\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u0436\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u0431\u0435\u0437\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043d\u043e. \u041d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u00ab\u0432\u0441\u0435 \u0445\u043e\u0434\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b\u00bb. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043b\u0438\u0446, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435, \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 \u00ab\u0437\u0430\u043c\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u044b\u00bb \u0432 \u0431\u0430\u0437\u0435.<br \/>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Cach\u00e9.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a Persistent-\u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 %OnBeforeSave() \u0438 SQL-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 Update. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Persistent-\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u2014 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0443\u0437\u043b\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0430 ^ClassData(id), \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u043a\u0440\u043e\u043c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u2014 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u00ab\u043a\u043e\u0440\u0437\u0438\u043d\u044b\u00bb \u0432 Windows.<br \/>  \u041a \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 PersHist \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 %Persistent, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 TestPersHist, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a PersHist, \u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e %Persistent. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432 \u043d\u0451\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u043c, \u0442\u0430\u043a \u0438 SQL-\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043c \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u0431\u0435\u0441\u0441\u043b\u0435\u0434\u043d\u043e \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430 PersHist<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">\/\/\/&nbsp;This&nbsp;ancestor&nbsp;of&nbsp;the&nbsp;%Persistent&nbsp;class<br \/>  \/\/\/&nbsp;contains&nbsp;triggers&nbsp;to&nbsp;enable&nbsp;updates&nbsp;history&nbsp;recording.<br \/>  Class&nbsp;PersHist&nbsp;Extends&nbsp;%Persistent&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Abstract<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">ClassType&nbsp;<\/font><font color=\"#000000\">=&nbsp;&quot;&quot;,&nbsp;<\/font><font color=\"#000080\">ProcedureBlock&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;This&nbsp;callback&nbsp;method&nbsp;is&nbsp;invoked&nbsp;by&nbsp;the&nbsp;&lt;METHOD&gt;%Save&lt;\/METHOD&gt;&nbsp;method&nbsp;to&nbsp;<br \/>  \/\/\/&nbsp;provide&nbsp;notification&nbsp;that&nbsp;the&nbsp;object&nbsp;is&nbsp;being&nbsp;saved.&nbsp;It&nbsp;is&nbsp;called&nbsp;before&nbsp;<br \/>  \/\/\/&nbsp;any&nbsp;data&nbsp;is&nbsp;written&nbsp;to&nbsp;disk.<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;&lt;P&gt;&lt;VAR&gt;insert&lt;\/VAR&gt;&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;1&nbsp;if&nbsp;this&nbsp;object&nbsp;is&nbsp;being&nbsp;saved&nbsp;for&nbsp;the&nbsp;first&nbsp;time.<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;&lt;P&gt;If&nbsp;this&nbsp;method&nbsp;returns&nbsp;an&nbsp;error&nbsp;then&nbsp;the&nbsp;call&nbsp;to&nbsp;&lt;METHOD&gt;%Save&lt;\/METHOD&gt;&nbsp;will&nbsp;fail.<br \/>  Method&nbsp;<\/font><font color=\"#000000\">%OnBeforeSave(<\/font><font color=\"#ff00ff\">insert&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Boolean<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Final<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">Private&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">insert&nbsp;<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;q<\/font><font color=\"#000000\">:&#8217;..<\/font><font color=\"#0000ff\">%ObjectModified<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;q&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">SaveLastRevision<\/font><font color=\"#000000\">(..<\/font><font color=\"#0000ff\">%Id<\/font><font color=\"#000000\">())<br \/>  }<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;This&nbsp;callback&nbsp;method&nbsp;is&nbsp;invoked&nbsp;by&nbsp;the&nbsp;&lt;METHOD&gt;%Delete&lt;\/METHOD&gt;&nbsp;method&nbsp;to&nbsp;<br \/>  \/\/\/&nbsp;provide&nbsp;notification&nbsp;that&nbsp;the&nbsp;object&nbsp;specified&nbsp;by&nbsp;&lt;VAR&gt;oid&lt;\/VAR&gt;&nbsp;is&nbsp;being&nbsp;deleted.<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;&lt;P&gt;If&nbsp;this&nbsp;method&nbsp;returns&nbsp;an&nbsp;error&nbsp;then&nbsp;the&nbsp;object&nbsp;will&nbsp;not&nbsp;be&nbsp;deleted.<br \/>  ClassMethod&nbsp;<\/font><font color=\"#000000\">%OnDelete(<\/font><font color=\"#ff00ff\">oid&nbsp;<\/font><font color=\"#000080\">As&nbsp;%ObjectIdentity<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Final<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">Private&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$lg<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">oid<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">SaveLastRevision<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">GetDataLocation()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">=<\/font><font color=\"#000080\">##Class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%ClassDefinition<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%OpenId<\/font><font color=\"#000000\">(..<\/font><font color=\"#0000ff\">%ClassName<\/font><font color=\"#000000\">())<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Storages<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Count<\/font><font color=\"#000000\">()&#8217;=1&nbsp;<\/font><font color=\"#008000\">&quot;&quot;&nbsp;;&nbsp;sofisticated&nbsp;storages&nbsp;not&nbsp;supported<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Storages<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">GetAt<\/font><font color=\"#000000\">(1).<\/font><font color=\"#0000ff\">DataLocation<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;Returns&nbsp;next&nbsp;or&nbsp;previuos&nbsp;(similar&nbsp;to&nbsp;$o())&nbsp;id&nbsp;of&nbsp;saved&nbsp;revision<br \/>  Method&nbsp;<\/font><font color=\"#000000\">OrderIdSave(<\/font><font color=\"#ff00ff\">ids&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;&quot;<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#ff00ff\">Direction&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#000080\">1<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">%Id<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">),<\/font><font color=\"#800000\">Direction<\/font><font color=\"#000000\">)<br \/>  }<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;Returns&nbsp;timestamp&nbsp;of&nbsp;saved&nbsp;revision<br \/>  Method&nbsp;<\/font><font color=\"#000000\">GetTimeStampByIdSave(<\/font><font color=\"#ff00ff\">ids&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">%Id<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#0000ff\">$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">))&lt;10&nbsp;<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">))<br \/>  }<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;Makes&nbsp;revision&nbsp;saved&nbsp;at&nbsp;or&nbsp;after&nbsp;specified&nbsp;time&nbsp;actual&nbsp;again<br \/>  \/\/\/&nbsp;and&nbsp;load&nbsp;it.&nbsp;All&nbsp;unsaved&nbsp;changes&nbsp;will&nbsp;be&nbsp;lost.<br \/>  Method&nbsp;<\/font><font color=\"#000000\">MakeActual(<\/font><font color=\"#ff00ff\">timestamp&nbsp;<\/font><font color=\"#000080\">As&nbsp;%StringTimeStamp<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0&nbsp;<\/font><font color=\"#008000\">;&nbsp;unsupported&nbsp;storage<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">%Id<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#000000\">0&nbsp;<\/font><font color=\"#008000\">;&nbsp;never&nbsp;saved<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">timestamp<br \/>  &nbsp;&nbsp;<\/font><font color=\"#008000\">;&nbsp;searching&nbsp;saved&nbsp;revision&nbsp;with&nbsp;zts&gt;=timestamp<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">i&nbsp;$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;ZI&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">))&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;ZI&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">),-1)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">e&nbsp;&nbsp;s&nbsp;<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;ZI&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">))&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0&nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;ZI&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;$s<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">:..<\/font><font color=\"#0000ff\">MakeActualByIdSave<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">),1:0)<br \/>  }<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;Makes&nbsp;saved&nbsp;revision&nbsp;actual&nbsp;again&nbsp;and&nbsp;load&nbsp;it&nbsp;by&nbsp;idsave.<br \/>  \/\/\/&nbsp;All&nbsp;unsaved&nbsp;changes&nbsp;will&nbsp;be&nbsp;lost.<br \/>  Method&nbsp;<\/font><font color=\"#000000\">MakeActualByIdSave(<\/font><font color=\"#ff00ff\">ids&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0&nbsp;<\/font><font color=\"#008000\">;&nbsp;unsupported&nbsp;storage<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">%Id<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#000000\">0&nbsp;<\/font><font color=\"#008000\">;&nbsp;never&nbsp;saved<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#0000ff\">$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">))&lt;10&nbsp;0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">))&nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">SaveLastRevision<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">k&nbsp;<\/font><font color=\"#000000\">@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">m&nbsp;<\/font><font color=\"#000000\">@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)=@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">%Reload<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">%SetModified<\/font><font color=\"#000000\">(1)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">%Save<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#008000\">;&nbsp;save&nbsp;again&nbsp;to&nbsp;make&nbsp;indices&nbsp;correct<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">\/\/\/&nbsp;returns&nbsp;next&nbsp;or&nbsp;previous&nbsp;(similar&nbsp;to&nbsp;$o())&nbsp;id&nbsp;of&nbsp;deleted&nbsp;record<br \/>  ClassMethod&nbsp;<\/font><font color=\"#000000\">OrderDeletedId(<\/font><font color=\"#ff00ff\">id&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;&quot;<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#ff00ff\">Direction&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#000080\">1<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Final&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">f&nbsp;&nbsp;s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">),<\/font><font color=\"#800000\">Direction<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#0000ff\">$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;<\/font><font color=\"#800000\">id<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">SaveLastRevision(<\/font><font color=\"#ff00ff\">id<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Final&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$g<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id&nbsp;<\/font><font color=\"#0000ff\">$$$OK&nbsp;<\/font><font color=\"#008000\">;&nbsp;no&nbsp;previous&nbsp;revision&nbsp;to&nbsp;save<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$i<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)),<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$zu<\/font><font color=\"#000000\">(188)&nbsp;<\/font><font color=\"#008000\">;&nbsp;$ZTIMESTAMP&nbsp;in&nbsp;local&nbsp;timezone<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">m&nbsp;<\/font><font color=\"#000000\">@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">)=@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#000000\">@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;ZI&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">)=<\/font><font color=\"#008000\">&quot;&quot;<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">UnDeleteId(<\/font><font color=\"#ff00ff\">id&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">Final&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">GetDataLocation<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#0000ff\">$g<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)&nbsp;0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#0000ff\">$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">))&nbsp;0&nbsp;<\/font><font color=\"#008000\">;&nbsp;not&nbsp;deleted<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#0000ff\">$d<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">))&#8217;&gt;1&nbsp;0&nbsp;<\/font><font color=\"#008000\">;&nbsp;no&nbsp;saved&nbsp;revisions<br \/>  &nbsp;&nbsp;;&nbsp;searching&nbsp;latest&nbsp;revision<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">),-1)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">ids&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$o<\/font><font color=\"#000000\">(@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;&quot;<\/font><font color=\"#000000\">),-1)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#000000\">0<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">m&nbsp;<\/font><font color=\"#000000\">@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)=@<\/font><font color=\"#800000\">dl<\/font><font color=\"#000000\">@(<\/font><font color=\"#008000\">&quot;History&quot;<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">zts<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">=..<\/font><font color=\"#0000ff\">%OpenId<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">%SetModified<\/font><font color=\"#000000\">(1)&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">res<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">ix<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">%Save<\/font><font color=\"#000000\">()&nbsp;<\/font><font color=\"#0000ff\">k&nbsp;<\/font><font color=\"#800000\">ix<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q&nbsp;<\/font><font color=\"#800000\">res<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">Trigger&nbsp;<\/font><font color=\"#000000\">OnBeforeDeleteForSQL&nbsp;[&nbsp;<\/font><font color=\"#000080\">Event&nbsp;<\/font><font color=\"#000000\">=&nbsp;DELETE&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">n&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ix&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">{ID}&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">SaveLastRevision<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  <\/font><font color=\"#000080\">Trigger&nbsp;<\/font><font color=\"#000000\">OnBeforeSaveForSQL&nbsp;[&nbsp;<\/font><font color=\"#000080\">Event&nbsp;<\/font><font color=\"#000000\">=&nbsp;UPDATE&nbsp;]<br \/>  {<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">n&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">ix&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">{ID}&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:&#8217;<\/font><font color=\"#800000\">id<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">d&nbsp;<\/font><font color=\"#000000\">..<\/font><font color=\"#0000ff\">SaveLastRevision<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">id<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;<\/font><font color=\"#0000ff\">q<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  }<\/font><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430 TestPersHist<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">\/\/\/&nbsp;How&nbsp;to&nbsp;Test<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;\/\/&nbsp;Create&nbsp;and&nbsp;initialize&nbsp;an&nbsp;instance:<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;s&nbsp;ix=##class(TestPersHist).%New()<br \/>  \/\/\/&nbsp;s&nbsp;ix.TestVal=$H<br \/>  \/\/\/&nbsp;w&nbsp;ix.TestArray.SetAt(&quot;Abra&quot;,1)<br \/>  \/\/\/&nbsp;w&nbsp;ix.TestArray.SetAt(&quot;Shvabra&quot;,2)<br \/>  \/\/\/&nbsp;w&nbsp;ix.TestList.InsertAt(&quot;Cadabra&quot;,1)<br \/>  \/\/\/&nbsp;s&nbsp;id=ix.%Id()<br \/>  \/\/\/&nbsp;w&nbsp;ix.%Save()&nbsp;k&nbsp;ix<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;\/\/&nbsp;Try&nbsp;to&nbsp;update<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;s&nbsp;ix=##class(TestPersHist).%OpenId(id)<br \/>  \/\/\/&nbsp;s&nbsp;ix.TestVal=$J<br \/>  \/\/\/&nbsp;w&nbsp;ix.TestArray.SetAt(&quot;Swim&quot;,3)<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;w&nbsp;ix.%Save()&nbsp;k&nbsp;ix<br \/>  \/\/\/&nbsp;<br \/>  \/\/\/&nbsp;\/\/&nbsp;Look&nbsp;at&nbsp;the&nbsp;global&nbsp;^User.TestPersHistD.&nbsp;All&nbsp;changes&nbsp;recorded!<br \/>  Class&nbsp;TestPersHist&nbsp;Extends&nbsp;PersHist&nbsp;<\/font><font color=\"#000000\">[&nbsp;<\/font><font color=\"#000080\">ClassType&nbsp;<\/font><font color=\"#000000\">=&nbsp;persistent,&nbsp;<\/font><font color=\"#000080\">ProcedureBlock&nbsp;<\/font><font color=\"#000000\">]<br \/>  {<\/p>\n<p>  <\/font><font color=\"#000080\">Property&nbsp;<\/font><font color=\"#000000\">TestArray&nbsp;<\/font><font color=\"#000080\">As&nbsp;array&nbsp;of&nbsp;%String<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">MAXLEN&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#000080\">255<\/font><font color=\"#000000\">);&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;[&nbsp;Collection&nbsp;=&nbsp;array&nbsp;];<\/p>\n<p>  <\/font><font color=\"#000080\">Property&nbsp;<\/font><font color=\"#000000\">TestList&nbsp;<\/font><font color=\"#000080\">As&nbsp;list&nbsp;of&nbsp;%String<\/font><font color=\"#000000\">;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;[&nbsp;Collection&nbsp;=&nbsp;list&nbsp;];<\/p>\n<p>  <\/font><font color=\"#000080\">Property&nbsp;<\/font><font color=\"#000000\">TestVal&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">MAXLEN&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#000080\">255<\/font><font color=\"#000000\">)&nbsp;[&nbsp;<\/font><font color=\"#000080\">Required&nbsp;<\/font><font color=\"#000000\">];<\/p>\n<p>  }<\/font><\/div>\n<\/div>\n<p>  \u0412\u043a\u0440\u0430\u0442\u0446\u0435 \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e \u043c\u0435\u0442\u043e\u0434\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043b\u0430\u0441\u0441 PersHist.<br \/>  \u041a\u043b\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 GetDataLocation() \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f.<br \/>  \u041a\u043b\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 SaveLastRevision(id) \u2014 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0438\u0433\u0443\u0440\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0437 SQL-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0437 \u0443\u0437\u043b\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u0430 ^ClassData(id) \u0432 ^ClassData(\u00abHistory\u00bb,id,id_\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439_\u0432\u0435\u0440\u0441\u0438\u0438,$ZTIMESTAMP). \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u043c\u0435\u0441\u0442\u043e ^ClassData \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c GetDataLocation().<br \/>  \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 %OnBeforeSave() \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 SaveLastRevision() \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0442\u043e\u0434 %Save() \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439\u0441\u044f \u0432 \u0431\u0430\u0437\u0435 \u0437\u0430\u043f\u0438\u0441\u0438.<br \/>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438 SQL-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 OnBeforeSaveForSQL().<br \/>  \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 $ZTIMESTAMP (\u0442\u043e\u0447\u043d\u0435\u0435, $ZU(188) \u2014 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f $ZTIMESTAMP) \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043c\u0435\u0442\u043e\u0434 MakeActual(timestamp). \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u043c\u043e\u0442\u0440\u0438\u0442, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u043e\u0447\u043d\u043e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043b\u0438\u0431\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e, \u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0430\u0441\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u0443\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,<\/p>\n<p>  <font color=\"#0000ff\">do&nbsp;<\/font><font color=\"#800000\">oref<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">MakeActual<\/font><font color=\"#000000\">((<\/font><font color=\"#0000ff\">$h<\/font><font color=\"#000000\">-7)_<\/font><font color=\"#008000\">&quot;,&quot;<\/font><font color=\"#000000\">_(12.5*3600))<\/font><\/p>\n<p>  \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043d\u0430\u0437\u0430\u0434 \u0432 12:30, \u0430 \u043a\u043e\u043f\u0438\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442.<br \/>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/p>\n<p>  <font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;<\/font><font color=\"#0000ff\">f&nbsp;&nbsp;s&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">oref<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">OrderIdSave<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#0000ff\">q<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;&quot;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">w&nbsp;<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">,!<\/font><\/p>\n<p>  \u0432\u044b\u0434\u0430\u0441\u0442 \u0432\u0441\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0410 \u043c\u0435\u0442\u043e\u0434<\/p>\n<p>  <font color=\"#0000ff\">write&nbsp;<\/font><font color=\"#800000\">oref<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">GetTimeStampByIdSave<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">)<\/font><\/p>\n<p>  \u0432\u0435\u0440\u043d\u0451\u0442 \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443:<\/p>\n<p>  <font color=\"#0000ff\">do&nbsp;<\/font><font color=\"#800000\">oref<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">MakeActualByIdSave<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">ids<\/font><font color=\"#000000\">)<\/font><\/p>\n<p>  \u041d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0431\u0435\u0437\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043d\u043e \u043b\u0438\u0448\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0451 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. \u041e\u0442 \u044d\u0442\u043e\u0439 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u0445\u0443\u044e\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 %OnDelete() \u0438 SQL-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 OnBeforeDeleteForSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 UndeleteId(id).<br \/>  \u041a\u0430\u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439, \u0438 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043b\u0436\u0435\u043d, \u0432\u0438\u0434\u0438\u043c\u043e, \u0443\u0436\u0435 \u043f\u043e \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c. \u0418 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 OrderDeletedId(id,dir), \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 $ORDER(), \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 (\u043f\u0440\u0438 dir=-1) \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>  \u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 TestPersHist, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 PersHist, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043a\u043b\u0430\u0441\u0441\u0443), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u044f\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f ^User.TestPersHistD \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Cach\u00e9 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u043e\u043e\u0447\u0438\u044e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0435\u0442\u043a\u0435 ^User.TestPersHistD(\u00abHistory\u00bb).<\/p>\n<p>  \u041a\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 PersHist \u0438 TestPersHist \u0432 \u0432\u0438\u0434\u0435, \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0432 Cach\u00e9, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e <a href=\"http:\/\/yadi.sk\/d\/Bn_4ZTOH4AFqD\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>: \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 CDL \u0434\u043b\u044f Cach\u00e9 \u0432\u0435\u0440\u0441\u0438\u0438 5.0 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445, \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/174655\/\"> http:\/\/habrahabr.ru\/company\/intersystems\/blog\/174655\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 Cach\u00e9 \u043f\u0440\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u0436\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u0431\u0435\u0437\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043d\u043e. \u041d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u00ab\u0432\u0441\u0435 \u0445\u043e\u0434\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b\u00bb. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043b\u0438\u0446, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435, \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 \u00ab\u0437\u0430\u043c\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u044b\u00bb \u0432 \u0431\u0430\u0437\u0435.<br \/>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Cach\u00e9.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-174655","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/174655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=174655"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/174655\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=174655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=174655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=174655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}