{"id":326439,"date":"2021-07-14T15:01:15","date_gmt":"2021-07-14T15:01:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=326439"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=326439","title":{"rendered":"\u041a\u0430\u043a \u0432 \u0426\u0424\u0422 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435 (\u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438)"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78b\/793\/939\/78b793939c1c643b3c30e339ec6e0a95.jpg\" width=\"780\" height=\"440\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f, \u043d\u0443 \u0442\u0430\u043a \u044f \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443:) \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0411\u0430\u0440\u0430\u043d\u043e\u0432 \u041c\u0438\u0445\u0430\u0438\u043b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0431\u043e\u043b\u0435\u0435 20 \u043b\u0435\u0442. \u0412 \u0434\u0430\u043b\u0435\u043a\u043e\u043c, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 2003-\u043c, \u0433\u043e\u0434\u0443 \u0443\u043c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u043c\u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438: \u00ab\u0411\u0440\u043e\u0441\u0430\u0439 \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Progress 4Gl, \u043e\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u043b, \u0441\u0440\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0439\u00bb. \u042f \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u043b\u0441\u044f. \u00ab\u041d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0438 \u044f \u0431\u0443\u0434\u0443 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u00bb, &#8212; \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f. \u0422\u043e\u0433\u0434\u0430 \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0411\u0430\u043d\u043a\u0438\u0440\/\u041f\u0440\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Progress. \u0420\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043d\u0435\u0439 \u043e\u043a\u043e\u043b\u043e 5 \u043b\u0435\u0442. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u0431\u0430\u043d\u043a\u0438 \u0441\u0442\u0430\u043b\u0438 \u043e\u0442 \u043d\u0435\u0435 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0422\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0411\u0438\u0441\u043a\u0432\u0438\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Progress. <\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0435\u0449\u0435 10 \u043b\u0435\u0442 \u0438 \u043e\u0442 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430 \u0441\u0442\u0430\u043b\u0438 \u0431\u0430\u043d\u043a\u0438 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0418 \u0432\u043e\u0442 \u0432 2019 \u0433\u043e\u0434\u0443 \u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438: \u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u043d\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u043c\u0430\u043b\u043e \u043a\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e. \u041e\u0441\u0435\u043d\u044c\u044e 2019 \u0433\u043e\u0434\u0430 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0420\u0421\u0425\u0411-\u0418\u041d\u0422\u0415\u0425, \u0433\u0434\u0435 \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e. \u042f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0442\u0443\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0411\u0438\u0441\u043a\u0432\u0438\u0442 \u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0426\u0424\u0422 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Pl Plus. \u0423\u0436\u0435 \u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0440\u043e\u043a\u0435 \u043c\u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043b\u0438 14 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0430\u043b\u0435 \u0426\u0424\u0422 \u0438 \u0441\u0442\u0430\u043b\u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0426\u0424\u0422. \u0410 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u043b\u0435\u0442\u0430 2020 \u0433\u043e\u0434\u0430 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0426\u0424\u0422 (\u0438 \u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434). <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0426\u0424\u0422 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u044f \u0435\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0432\u0430\u0436\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0426\u0424\u0422 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. <\/p>\n<h3>\u041f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445<\/h3>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 <em>\u043a\u0443\u0440\u0441\u0438\u0432\u043e\u043c<\/em>, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0426\u0424\u0422 &#8212; <strong>\u0436\u0438\u0440\u043d\u044b\u0435<\/strong> \u0438\u043b\u0438 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u0434\u0430:<\/p>\n<p><u>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0442\u043e\u043a<\/u>:<\/p>\n<p><em>MESSAGE \u201cHello world\u201d.<\/em><\/p>\n<pre><code class=\"pgsql\">debug_pipe('Hello world', 0);<\/code><\/pre>\n<hr>\n<p><u>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u043a\u043d\u043e<\/u>:<\/p>\n<p><em>MESSAGE \u201cHello world\u201d VIEW-AS ALERT-BOX.<\/em><\/p>\n<pre><code class=\"pgsql\">debug('Hello world', 0);    <\/code><\/pre>\n<hr>\n<p><u>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b:<\/u><\/p>\n<p><em>+ (\u0434\u043b\u044f \u0446\u0438\u0444\u0440)<\/em> <strong>+<\/strong><\/p>\n<p><em>+ (\u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a)<\/em> <strong>|| (\u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f)<\/strong><\/p>\n<p><em>= (\u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f)<\/em> <strong>=<\/strong><\/p>\n<p><em>= (\u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f)<\/em> <strong>:=<\/strong><\/p>\n<p><em>&lt;&gt;<\/em> <strong>!=<\/strong><\/p>\n<p>\u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0442\u0430\u043a \u0436\u0435.<\/p>\n<hr>\n<p><u>\u0415\u0441\u043b\u0438:<\/u><\/p>\n<p>&nbsp;<em>if \u2026.. then do:<\/em><\/p>\n<p><em>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/em><\/p>\n<p><em>&nbsp;end.<\/em><\/p>\n<p><em>else do:<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434<\/em><\/p>\n<p><em>end.<\/em><\/p>\n<pre><code class=\"pgsql\">If \u2026. then  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 elsif \u2026. then \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 else  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 end if;<\/code><\/pre>\n<hr>\n<p><u>\u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c<\/u>:<\/p>\n<p><em>ENTRY<\/em><\/p>\n<pre><code class=\"pgsql\">Inp_str                    string;  --\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u2018;\u2019 item_command            rtl.string_table; --\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432  item_command := STR_2.split(p_expression == Inp_str, p_delimiter == ';');  debug_pipe(item_command(1) , 0); -- \u042d\u0442\u043e \u043a\u0430\u043a MESSAGE ENTRY(1\u2026 debug_pipe(item_command(2) , 0); -- \u042d\u0442\u043e \u043a\u0430\u043a MESSAGE ENTRY(2\u2026<\/code><\/pre>\n<hr>\n<p><u>\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0431\u0430\u0437\u044b<\/u><\/p>\n<p>1) \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0438\u0441\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 (\u0432 \u0422\u0411\u041f)<\/p>\n<p><em>FIND<\/em><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<p>\u041f\u043e\u0438\u0441\u043a \u0441\u0447\u0435\u0442\u0430 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 r_ac_fin ref [AC_FIN]; --\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0447\u0435\u0442 r_AC_FIN := ::[AC_FIN]([MAIN_V_ID] = s_ac_str); --\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || r_AC_FIN.[NAME], 0);  --\u0432\u044b\u0432\u043e\u0434 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0447\u0435\u0442\u0430<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u0442\u043e \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0426\u0424\u0422 \u0435\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u0412 \u043d\u0435\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430, \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u00bb.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0447\u0435\u0442 (\u043d\u0430\u0448\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435), \u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0441\u0447\u0435\u0442\u0430. <\/p>\n<p>\u042d\u0442\u043e \u0438\u043c\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 CLIENT, \u043d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a: <\/p>\n<pre><code class=\"pgsql\">debug_pipe(r_AC_FIN. [CLIENT_V].[NAME], 0);&nbsp;<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0435 <strong>CLIENT_V<\/strong> \u043d\u0430 \u0441\u0447\u0435\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 &#8212; \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0441\u0447\u0435\u0442\u0430.<\/p>\n<p>2) \u041f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.<\/p>\n<p><em>FIND FIRST \u2026\u2026 NO-ERROR.<\/em><\/p>\n<p><em>\u2026.<\/em><\/p>\n<p><em>IF NOT AVAILABLE<\/em><\/p>\n<p>\u2026..<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 r_ac_fin ref [AC_FIN]; --\u0441\u0441\u044b\u043b\u043a\u0430 \u0441\u0447\u0435\u0442 begin     locate r_ac_fin in ::[AC_FIN]           where r_ac_fin.[MAIN_V_ID] = s_ac_str           order by r_ac_fin.[MAIN_V_ID] asc;          debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || r_AC_FIN.[NAME], 0);      exception when NO_DATA_FOUND then          debug_pipe('\u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430', 0); end;<\/code><\/pre>\n<p>3) \u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p><em>FIND LAST<\/em><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e asc \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c des<\/p>\n<p>4) \u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p><em>FOR EACH<\/em><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1:<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 for acc in ::[AC_FIN] all where acc.[MAIN_V_ID] = s_ac_str loop         debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || acc.[NAME], 0); end loop;<\/code><\/pre>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2:&nbsp;<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 for (     select acc(         acc.[NAME] : C_NAME         )         in ::[AC_FIN] all         where acc.[MAIN_V_ID] = s_ac_str ) loop     debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || acc.[C_NAME], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0421\u043b\u044b\u0448\u0430\u043b (\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b), \u0447\u0442\u043e \u043e\u0431\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0434 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 Pl Plus \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 Pl SQL.<\/p>\n<\/blockquote>\n<p>5) \u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446.<\/p>\n<p><em>FOR EACH\u2026.<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,EACH\u2026<\/em>&nbsp;<\/p>\n<p>\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0441\u0447\u0435\u0442\u0430 \u0438 \u0438\u043c\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430.<\/p>\n<pre><code class=\"pgsql\">for (     select acc(         acc.[NAME]  : C_NAME,         cl.[NAME]   : C_NAME2         )         in ::[AC_FIN], (::[CLIENT] all : cl) all         where acc.[MAIN_V_ID] = s_ac_str           and acc.[CLIENT_V]  = cl ) loop     debug_pipe('\u0418\u043c\u0435\u043d\u0430_: ' || acc.[C_NAME] || ' ' || acc.[C_NAME2], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 2-\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043e\u0434\u043d\u043e\u0439&nbsp; <strong>[AC_FIN]<\/strong> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/p>\n<pre><code class=\"pgsql\">for (     select acc(         acc.[NAME]             : C_NAME,         acc.[CLIENT_V].[NAME]   : C_NAME2         )         in ::[AC_FIN] all         where acc.[MAIN_V_ID] = s_ac_str ) loop     debug_pipe('\u0418\u043c\u0435\u043d\u04302_ : ' || acc.[C_NAME] || ' ' || acc.[C_NAME2], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434, \u043d\u043e \u0443 \u0432\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0432\u044b \u0437\u0430\u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u0441\u043b\u043e\u0432\u043e &#171;all&#187;, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u043b \u044f \ud83d\ude42<\/p>\n<\/blockquote>\n<hr>\n<p><u>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0434\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439:<\/u><\/p>\n<p><em>RUN oper.p (par1, par2).<\/em>&nbsp;<\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0442\u0435\u043b\u043e\u00bb \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/strong><\/p>\n<pre><code class=\"pgsql\">::[tbp_oper].[oper](     P_PAR1 == par1,     P_PAR2 == par1     );<\/code><\/pre>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u043e\u0440\u043c\u043e\u0439.<\/p>\n<p>\u041d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0442\u043e\u044f\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0430 \u00ab\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0431\u0443\u0444\u0435\u0440 \u0441\u0435\u0441\u0441\u0438\u0438\u00bb.<\/p>\n<pre><code class=\"pgsql\">stdio.put_line_buf('&lt;% PLPCALL [TBP_OPER].[OPER](%PARAM%.P_PAR1 =&gt; %VAR%.PAR1, %PARAM%.P_PAR2 =&gt; %VAR%.PAR2) %&gt;'); <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 PAR1 \u0438 PAR2 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\u00bb.<\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 3. \u0412\u044b\u0437\u043e\u0432 \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0442\u043e\u0436\u0435 \u0432\u0441\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"pgsql\">Runtime.PlayEx(\"&lt;% PLPCALL [TBP_OPER].[OPER](%PARAM%.P_PAR1 =&gt; %VAR%.PAR1, %PARAM%.P_PAR2 =&gt; %VAR%.PAR2) %&gt;\")<\/code><\/pre>\n<hr>\n<p><u>\u0418\u043d\u043a\u043b\u044e\u0434\u044b:<\/u><\/p>\n<p><em>{globals.i}<\/em><\/p>\n<pre><code class=\"pgsql\">pragma include(::[RUNTIME].[MACRO_LIB]);<\/code><\/pre>\n<hr>\n<p><u>\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b:<\/u><\/p>\n<p><em>&amp;GLOBAL-DEFINE DELIM &#171;;&#187; \/* \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f csv \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *\/<\/em><\/p>\n<pre><code class=\"pgsql\">pragma macro(DELIM, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ';'); -- \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f csv \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435: <strong>&amp;DELIM<\/strong><\/p>\n<hr>\n<p><em><u>NO-UNDO, NO-LOCK:<\/u><\/em><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a NO-UNDO. <\/p>\n<p><strong>bank.[DEPART]&nbsp; <\/strong><em>&#8212;NO-LOCK<\/em><\/p>\n<p><em>EXCLUSIVE-LOCK:<\/em><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1. <\/p>\n<p><strong>bank=&gt;[DEPART] \u2013-\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0438<\/strong><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2.<\/p>\n<p><strong>bank%lock \u2013-\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438<\/strong><\/p>\n<p>\u0413\u0434\u0435 bank \u2013 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0430\u043d\u043a\u0438.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0438\u043f\u0430 bank.[DEPART],&nbsp; \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 NO-LOCK \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430, \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 bank=&gt;[DEPART] \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e.<\/p>\n<hr>\n<p><u>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438:<\/u><\/p>\n<p><em>DO TRANSACTION:<\/em><\/p>\n<p><em>\u2026\u2026\u2026<\/em><\/p>\n<p><em>END.<\/em><\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432:<\/p>\n<p><strong>commit;<\/strong><\/p>\n<p>\u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p><strong>savepoint &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;;<\/strong><\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u043a\u0430\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;.<\/p>\n<p><strong>rollback [ to &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt; ]<\/strong><\/p>\n<p>\u041e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e commit \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0442\u043e\u0447\u043a\u0430 \u043e\u0442\u043a\u0430\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b commit \u0438 rollback \u0441\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<hr>\n<p><u>\u041e\u0431\u043c\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0431\u0430\u0437\u043e\u0439 \u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445<\/u>:<\/p>\n<p>1) \u0412\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 XLS.<\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 XLS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d. \u0415\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u00ab\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\u00bb.<\/p>\n<pre><code class=\"pgsql\">pragma macro(xl, '::[OOXML].[API_XL]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 pragma macro(lib_ooxml,'::[SHABLON_DOC].[LIB_OOXML]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 &amp;lib_ooxml.xl_init(p_shablon_code == 'RSB_REP_KSPL'); -- \u0432\u044b\u0437\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 &amp;xl.Open_Sheet(1); -- \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043b\u0438\u0441\u0442 &amp;xl.put(3, 6, \u2018\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 3 6 \u043b\u0438\u0441\u0442\u0430 1\u2019)); -- \u0432\u044b\u0432\u043e\u0434 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 3, \u043a\u043e\u043b\u043e\u043d\u043a\u0443 6 &amp;lib_ooxml.xl_finish; --\u0432\u044b\u0432\u043e\u0434 xls \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/code><\/pre>\n<p>2) \u0412\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 word.<\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 word \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d. \u0415\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u00ab\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\u00bb.<\/p>\n<pre><code class=\"pgsql\">pragma macro(wd, '::[OOXML].[API_DOC_SAX]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 p_shablon_ref ref [SHABLON_DOC]; --\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d v_tf_field constant.MEMO_TABLE_S; --\u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 p_shablon_ref := ::[SHABLON_DOC]%locate(x where x.CODE = 'SHABLON_CODE'); --\u043f\u043e\u0438\u0441\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043e \u043a\u043e\u0434\u0443 v_report_data := ::[SHABLON_DOC].[LIB_OOXML].wd_init( p_shablon_ref         == p_shablon_ref                            ,p_filial             == stdlib.userid().[FILIAL]                        ,p_stop_on_error == false); --\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430     v_tf_field := &amp;wd.GetDocVars; --\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432     v_tf_field('\u0414\u0410\u0422\u0410'):= vDate_Str; --\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0414\u0410\u0422\u0410 \u043d\u0435\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c     v_tf_field('\u0424\u0418\u041e'):= P_CLIENT; --\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0424\u0418\u041e \u043d\u0435\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c     &amp;wd.PutDocVars(v_tf_field); --\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442     &amp;wd.finish(v_report_data); --\u0432\u044b\u0432\u043e\u0434 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/code><\/pre>\n<p>3) \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 csv (\u0444\u0430\u0439\u043b \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438)<\/p>\n<pre><code class=\"pgsql\">--\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ifile            integer; ofile            [FILE$LOAD];sbuffer            varchar2(1000); --\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0443\u0442\u044c \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 ofile.[SRC_PATH]    := stdio.Get_Env('FIO_ROOT_DIR'); ofile.[SRC_NAME]    := 'for_test.csv'; ofile.[SRC_TYPE]    := true; --\u0412\u044b\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 ifile := stdio.open(ofile.[SRC_PATH], ofile.[SRC_NAME], 'r');         while stdio.get_line(ifile, sbuffer, True, stdio.WINTEXT, Null) loop                 if sbuffer is not null then                         sbuffer:= replace(replace(sbuffer, chr(10), ''), chr(13), '');          --\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 sbuffer \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 for_test.csv.         --\u0414\u0430\u043b\u0435\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c         --\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u043d\u0430\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ENTRY (\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435)                 end if;         end loop; stdio.f_close(ifile);<\/code><\/pre>\n<p>4) \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 XLS (\u0444\u0430\u0439\u043b \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c).<\/p>\n<p>\u0423 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<strong> P_FILE <\/strong>\u0442\u0438\u043f\u0430<strong> FILE$LOAD <\/strong>\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<strong> V_FILEPATH <\/strong>\u0442\u0438\u043f\u0430<strong> STRING_4000, V_FILENAME <\/strong>\u0442\u0438\u043f\u0430<strong> STRING_4000.<\/strong><\/p>\n<p><strong>&nbsp;P_FILE <\/strong>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435<strong>.<\/strong><\/p>\n<p>\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 \u00ab<strong>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f<\/strong>\u00bb \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434:<strong>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/strong><\/p>\n<pre><code class=\"pgsql\">pragma macro (xl, '::[OOXML].[API_XL]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 xls pragma macro (get, '&amp;xl.getSheetRowColVal(             p_row        == [1]        --\u0421\u0442\u0440\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f\u0447\u0435\u0439\u043a\u0438             ,p_col        == [2]        --\u041a\u043e\u043b\u043e\u043d\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f\u0447\u0435\u0439\u043a\u0438             ,p_sheet    == 1        --\u041d\u043e\u043c\u0435\u0440 \u043b\u0438\u0441\u0442\u0430             ,p_tp        == v_s_tp        --\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438 \u0441\u043c. xl_tp_...             ,p_st        == v_n_st        --\u0418\u043d\u0434\u0435\u043a\u0441 \u0441\u0442\u0438\u043b\u044f \u044f\u0447\u0435\u0439\u043a\u0438         )', substitute); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u044f\u0447\u0435\u0439\u043a\u0438 xlsv_s_tp                string(128); --\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f &amp;get v_n_st                number; --\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f &amp;get v_blob_file            blob := empty_blob(); --\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 <\/code><\/pre>\n<p>\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 <strong>\u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u00bb <\/strong>\u0434\u043b\u044f<strong> p_message = &#8216;VALIDATE&#8217; <\/strong>\u0438<strong> p_info = &#8216;OK&#8217; <\/strong>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434:<\/p>\n<pre><code class=\"pgsql\">if nvl(P_FILE.[SRC_TYPE], false) then         P_FILE.[SRC_TYPE]        := null;         P_FILE.[DST_TYPE]        := null;    end if;     P_FILE.[DST_NAME]        := P_FILE.[SRC_NAME];               V_FILEPATH := P_FILE.[SRC_PATH];               V_FILENAME := P_FILE.[SRC_NAME]; <\/code><\/pre>\n<p>\u0412 \u0441\u0435\u043a\u0446\u0438\u0438<strong> \u00ab\u0442\u0435\u043b\u043e\u00bb <\/strong>\u0440\u0430\u0437\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u0430 XLS<strong>:<\/strong> <\/p>\n<pre><code class=\"pgsql\">::[SHABLON_DOC].[LIB_OOXML].read_from_file(    p_blob        == v_blob_file        --\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 (BLOB)         ,p_dir        == V_FILEPATH        --\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435         ,p_fname    == V_FILENAME    --\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 ,p_delete    == false            --\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u0447\u0442\u0435\u043d\u0438\u044f         ); -- \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e v_blob_fileif v_blob_file is null      then         pragma error('\u0424\u0430\u0439\u043b \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d!');     end if;    if not &amp;xl.open_file(v_blob_file)     then         pragma error('\u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430!');     end if;    &amp;xl.open_sheet(1); --    \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b 1 \u0444\u0430\u0439\u043b\u0430     Debug_pipe(&amp;get(6, 3), 0);  --\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u044f\u0447\u0435\u0439\u043a\u0438 (\u0441\u0442\u0440\u043e\u043a\u0430 6,\u0441\u0442\u043e\u043b\u0431\u0435\u0446 3,\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 1)    <\/code><\/pre>\n<hr>\n<p><u>\u0410 \u0433\u0434\u0435 \u0432 \u0426\u0424\u0422 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b?<\/u><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <strong>(FP_TUNE)<\/strong> \u0438 \u0442\u043e, \u0438 \u0434\u0440\u0443\u0433\u043e\u0435.&nbsp;<\/p>\n<p><u>\u0410 \u0433\u0434\u0435 \u0441 \u0426\u0424\u0422 <\/u><em><u>\u0448\u0435\u0434\u0443\u043b\u0435\u0440 \u0438 \u0431\u0438\u0441\u043c\u0430\u0440\u043a<\/u><\/em><u>?<\/u><\/p>\n<ol>\n<li>\n<p><strong>SYSTEM_JOBS (\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e): <\/strong>\u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0442\u043e\u0440\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0421\u0438\u0441\u0442\u0435\u043c\u0430\/\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e<\/p>\n<\/li>\n<li>\n<p><strong>TEXT_JOBS (\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439): <\/strong>\u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0442\u043e\u0440\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0421\u0438\u0441\u0442\u0435\u043c\u0430\/\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439<strong>.<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a BGP(\u0424\u043e\u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b)<\/strong><\/p>\n<\/li>\n<\/ol>\n<hr>\n<p><u>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/u><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>DEFINE temp-table<\/em><\/p>\n<p>\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430 \u043d\u0438\u0447\u0443\u0442\u044c \u043d\u0435 \u0445\u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446. \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u0432 \u0426\u0424\u0422 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u0415\u0441\u0442\u044c 3 \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u0445\u0443\u0436\u0435.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1. \u0422\u0438\u043f <strong>TEMP_TABLE_S<\/strong> (\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430). <\/p>\n<p>\u041e\u043d\u0430 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430. \u041e\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0431\u0430\u0437\u0435.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0440\u0435\u0434\u043a\u043e.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0435 &#171;\u0422\u0430\u0431\u043b\u0438\u0446\u0430&#187; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#171;\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438&#187; = &#171;\u041f\u0440\u043e\u043f\u0430\u0434\u0435\u0442 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0441\u0435\u0441\u0441\u0438\u0438&#187;. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u044f\u0442\u044c \u0411\u0414.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 3. \u041c\u0430\u0441\u0441\u0438\u0432\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 (\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e).<\/p>\n<p>\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 temp-table \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430. \u0412 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0432\u0441\u0435\u0433\u043e 1 \u0438\u043d\u0434\u0435\u043a\u0441, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439. \u041d\u0435\u043b\u044c\u0437\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043f\u043e\u043b\u044e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u041c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440. <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430:<\/p>\n<pre><code class=\"pgsql\">type strucType is record (    FileName      string,                                  helloString   string,                                procName      string );  type rezType is table of  strucType index by integer;  rez   rezType;<\/code><\/pre>\n<p>\u041a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u2013 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e.<\/p>\n<hr>\n<p><u>\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e<\/u><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>\u041e\u0431\u044a\u0435\u043a\u0442\u044b browse, navigate.<\/em><\/p>\n<p>&nbsp;\u0421\u043f\u043e\u0441\u043e\u0431 1. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0435\u043c\u0430 \u043e\u0431\u0448\u0438\u0440\u043d\u0430\u044f, \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u041c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c SQL-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0434\u043b\u044f \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440. \u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 SQL-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432 Admin 2.0 (Eclipse).<\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2. <strong>GRID<\/strong> \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f31\/433\/bbd\/f31433bbde0cf4effd2d58f5da4c1eab.png\" width=\"906\" height=\"137\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432 \u0431\u0430\u0437\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 (\u043f\u0440\u0438\u043c\u0435\u0440 2, \u043f\u0443\u043d\u043a\u0442\u0430 22 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438).<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0444\u043e\u0440\u043c\u044b \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043e\u0442\u0442\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 GRID.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/627\/058\/6b7\/6270586b7de3dfeaa7a75e082f42319a.png\" width=\"355\" height=\"393\"><figcaption><\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ad5\/645\/e73\/ad5645e7380454c1c72e7e01ac8e509d.png\" width=\"702\" height=\"319\"><figcaption><\/figcaption><\/figure>\n<hr>\n<p><u>\u0417\u0430\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435 \u00abOK\u00bb<\/u>:<\/p>\n<p>\u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0440\u0430\u0437\u0438\u043b\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435 \u0438 \u043a\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e \u0432 \u0426\u0424\u0422.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438 \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u044e \u041e\u043b\u0435\u0433\u0443 \u041e\u043f\u0430\u043b\u0438\u0445\u0438\u043d\u0443.<\/p>\n<p>\u0412 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435:<\/p>\n<p><em>if is_question then DO:<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp; MESSAGE &#171;\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?&#187; <\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO UPDATE is_need_bl_process AS LOGICAL.<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp; if not is_need_bl_process then RETURN.<\/em><\/p>\n<p><em>end.<\/em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <\/p>\n<p>\u0412 \u0426\u0424\u0422:&nbsp; <\/p>\n<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <strong>V_IS_QUESTION<\/strong> \u0442\u0438\u043f\u0430 <strong>\u041b\u043e\u0433\u0438\u043a\u0430<\/strong><\/p>\n<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <strong>V_IS_QUESTION<\/strong> \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>V_IS_QUESTION<\/strong> \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 <strong>Visible=False<\/strong> \u0438 <strong>ValidateName<\/strong>=<strong>V_IS_QUESTION<\/strong>. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043a\u043d\u043e\u043f\u043a\u0438 <strong>OK<\/strong> \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 <strong>CheckValidate=True<\/strong><\/p>\n<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u00ab\u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u00bb<\/strong>= <strong>\u00ab\u0421\u0435\u0440\u0432\u0435\u0440,\u041a\u043b\u0438\u0435\u043d\u0442\u00bb<\/strong>.<\/p>\n<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u00ab\u041a\u043b\u0438\u0435\u043d\u0442-\u0441\u043a\u0440\u0438\u043f\u0442\u00bb<\/strong> \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 VBScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 \u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e:<\/p>\n<pre><code class=\"vbscript\">Public Function Main(LastControl)     Main = True     If LastControl Is Ok Then         Main = Null         if Form1.ScriptServerValidate(Nothing, \"QUESTION\") then             if V_IS_QUESTION then                 call Runtime.ShowMonitor                 if MsgBox(\"\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?\", vbYesNo + vbQuestion + vbDefaultButton2, \"\u0412\u043e\u043f\u0440\u043e\u0441\") = vbYes then                     if Form1.ScriptServerValidate(Nothing, \"PROCESS_BL_YES\") then                         Main = True                     end if                 else                     if Form1.ScriptServerValidate(Nothing, \"PROCESS_BL_NO\") then                         Main = True                     end if                 end if             else                 Main = True             end if         end if     End If End Function <\/code><\/pre>\n<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>\u00ab\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u00bb<\/strong> \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e:<\/p>\n<pre><code class=\"pgsql\">v_b_need_bl_process boolean;<\/code><\/pre>\n<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>\u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u00bb<\/strong> \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434:<\/p>\n<pre><code class=\"pgsql\">begin     if p_message = 'VALIDATE' then     if p_info = 'QUESTION' then             --\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e         V_IS_QUESTION := TRUE; --\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0443\u0436\u043d\u043e                 elsif p_info = 'PROCESS_BL_YES' then             v_b_need_bl_process := true;         elsif p_info = 'PROCESS_BL_NO' then             v_b_need_bl_process := false;         end if;         end if; end;<\/code><\/pre>\n<p>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>\u00ab\u0422\u0435\u043b\u043e\u00bb<\/strong> \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434:<\/p>\n<pre><code class=\"pgsql\">begin     if not v_b_need_bl_process then     return;     end if;    --\u0417\u0434\u0435\u0441\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u00ab\u0414\u0430\u00bb      \t\t\t\t\t -- \u0438 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u00ab\u041d\u0435\u0442\u00bb.         debug_pipe('\u0421\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e!', 0); --\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a end; <\/code><\/pre>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c5\/871\/f5e\/8c5871f5e28b88ca6aaccc2bfdf243df.png\" width=\"237\" height=\"160\"><figcaption><\/figcaption><\/figure>\n<hr>\n<p><u>\u0422\u043e, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435, \u043d\u043e \u0435\u0441\u0442\u044c \u0432 \u0426\u0424\u0422<\/u>:<\/p>\n<p>1.  \u0412 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0430\u043a\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u044c, \u043d\u043e \u043d\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u0412 \u0426\u0424\u0422 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u044d\u0442\u0438\u043c \u043d\u0435\u0442. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<p>2.  \u0412 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a. \u0412 \u0426\u0424\u0422 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Admin 2.0 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0441 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>3.&nbsp; \u0420\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e \u0441\u0432\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0441\u043a\u043e\u0440\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f. \u0411\u0443\u0434\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0426\u0424\u0422 \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>&nbsp;\u0425\u043e\u0447\u0443 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043b\u044e\u0434\u044f\u043c, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c:<\/p>\n<p>\u0425\u0430\u0440\u0447\u0435\u043d\u043a\u043e \u0421\u0435\u0440\u0433\u0435\u044e, \u043e\u043f\u044b\u0442\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c \u0442\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u0438\u0445 \u0431\u0435\u0441\u0435\u0434 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0421\u0430\u043b\u0430\u043c\u043e\u0432\u0443 \u041a\u0430\u043c\u0438\u043b\u044e \u0437\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u0437\u0430 \u0446\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u043a \u0442\u0435\u043a\u0441\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u0438, \u0437\u0430 \u043c\u043e\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0437\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 Admin 2.0 \ud83d\ude42<\/p>\n<p>\u041d\u0430\u0443\u043c\u043a\u0438\u043d\u0443 \u0410\u043d\u0430\u0442\u043e\u043b\u0438\u044e \u0437\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0430\u043b\u0435 \u0426\u0424\u0422.<\/p>\n<p>\u041c\u0438\u043d\u0438\u044f\u0440\u043e\u0432\u0443 \u0420\u0438\u043d\u0430\u0442\u0443, \u0414\u0430\u0432\u044b\u0434\u043e\u0432\u0443 \u0414\u0435\u043d\u0438\u0441\u0443 \u0438 \u041e\u043f\u0430\u043b\u0438\u0445\u0438\u043d\u0443 \u041e\u043b\u0435\u0433\u0443 \u0437\u0430 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u043e\u0435\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0426\u0424\u0422 \u0438 \u0437\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u0420\u0443\u0444\u0435\u0435\u0432\u0443 \u041c\u0430\u043a\u0441\u0438\u043c\u0443 \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0417\u0430 \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043c\u043e\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0441\u043b\u043e\u0432\u0435 <strong>elsif<\/strong> \ud83d\ude42<\/p>\n<p>\u0428\u0435\u0440\u0448\u043e\u0432\u0443 \u0410\u043d\u0434\u0440\u0435\u044e \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435.<\/p>\n<\/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=\"https:\/\/habr.com\/ru\/company\/rshb\/blog\/567694\/\"> https:\/\/habr.com\/ru\/company\/rshb\/blog\/567694\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f, \u043d\u0443 \u0442\u0430\u043a \u044f \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443:) \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0411\u0430\u0440\u0430\u043d\u043e\u0432 \u041c\u0438\u0445\u0430\u0438\u043b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0431\u043e\u043b\u0435\u0435 20 \u043b\u0435\u0442. \u0412 \u0434\u0430\u043b\u0435\u043a\u043e\u043c, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 2003-\u043c, \u0433\u043e\u0434\u0443 \u0443\u043c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u043c\u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438: \u00ab\u0411\u0440\u043e\u0441\u0430\u0439 \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Progress 4Gl, \u043e\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u043b, \u0441\u0440\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0439\u00bb. \u042f \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u043b\u0441\u044f. \u00ab\u041d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0438 \u044f \u0431\u0443\u0434\u0443 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u00bb, &#8212; \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f. \u0422\u043e\u0433\u0434\u0430 \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0411\u0430\u043d\u043a\u0438\u0440\/\u041f\u0440\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Progress. \u0420\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043d\u0435\u0439 \u043e\u043a\u043e\u043b\u043e 5 \u043b\u0435\u0442. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u0431\u0430\u043d\u043a\u0438 \u0441\u0442\u0430\u043b\u0438 \u043e\u0442 \u043d\u0435\u0435 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0422\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0411\u0438\u0441\u043a\u0432\u0438\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Progress. <\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0435\u0449\u0435 10 \u043b\u0435\u0442 \u0438 \u043e\u0442 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430 \u0441\u0442\u0430\u043b\u0438 \u0431\u0430\u043d\u043a\u0438 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0418 \u0432\u043e\u0442 \u0432 2019 \u0433\u043e\u0434\u0443 \u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438: \u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u043d\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u043c\u0430\u043b\u043e \u043a\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e. \u041e\u0441\u0435\u043d\u044c\u044e 2019 \u0433\u043e\u0434\u0430 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0420\u0421\u0425\u0411-\u0418\u041d\u0422\u0415\u0425, \u0433\u0434\u0435 \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e. \u042f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0442\u0443\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0411\u0438\u0441\u043a\u0432\u0438\u0442 \u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0426\u0424\u0422 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Pl Plus. \u0423\u0436\u0435 \u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0440\u043e\u043a\u0435 \u043c\u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043b\u0438 14 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0430\u043b\u0435 \u0426\u0424\u0422 \u0438 \u0441\u0442\u0430\u043b\u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0426\u0424\u0422. \u0410 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u043b\u0435\u0442\u0430 2020 \u0433\u043e\u0434\u0430 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0426\u0424\u0422 (\u0438 \u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434). <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0426\u0424\u0422 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u044f \u0435\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0432\u0430\u0436\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0426\u0424\u0422 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. <\/p>\n<h3>\u041f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445<\/h3>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 <em>\u043a\u0443\u0440\u0441\u0438\u0432\u043e\u043c<\/em>, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0426\u0424\u0422 &#8212; <strong>\u0436\u0438\u0440\u043d\u044b\u0435<\/strong> \u0438\u043b\u0438 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u0434\u0430:<\/p>\n<p><u>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0442\u043e\u043a<\/u>:<\/p>\n<p><em>MESSAGE \u201cHello world\u201d.<\/em><\/p>\n<pre><code class=\"pgsql\">debug_pipe('Hello world', 0);<\/code><\/pre>\n<hr>\n<p><u>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u043a\u043d\u043e<\/u>:<\/p>\n<p><em>MESSAGE \u201cHello world\u201d VIEW-AS ALERT-BOX.<\/em><\/p>\n<pre><code class=\"pgsql\">debug('Hello world', 0);    <\/code><\/pre>\n<hr>\n<p><u>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b:<\/u><\/p>\n<p><em>+ (\u0434\u043b\u044f \u0446\u0438\u0444\u0440)<\/em> <strong>+<\/strong><\/p>\n<p><em>+ (\u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a)<\/em> <strong>|| (\u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f)<\/strong><\/p>\n<p><em>= (\u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f)<\/em> <strong>=<\/strong><\/p>\n<p><em>= (\u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f)<\/em> <strong>:=<\/strong><\/p>\n<p><em>&lt;&gt;<\/em> <strong>!=<\/strong><\/p>\n<p>\u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0442\u0430\u043a \u0436\u0435.<\/p>\n<hr>\n<p><u>\u0415\u0441\u043b\u0438:<\/u><\/p>\n<p>&nbsp;<em>if \u2026.. then do:<\/em><\/p>\n<p><em>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/em><\/p>\n<p><em>&nbsp;end.<\/em><\/p>\n<p><em>else do:<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434<\/em><\/p>\n<p><em>end.<\/em><\/p>\n<pre><code class=\"pgsql\">If \u2026. then  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 elsif \u2026. then \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 else  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 end if;<\/code><\/pre>\n<hr>\n<p><u>\u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c<\/u>:<\/p>\n<p><em>ENTRY<\/em><\/p>\n<pre><code class=\"pgsql\">Inp_str                    string;  --\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u2018;\u2019 item_command            rtl.string_table; --\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432  item_command := STR_2.split(p_expression == Inp_str, p_delimiter == ';');  debug_pipe(item_command(1) , 0); -- \u042d\u0442\u043e \u043a\u0430\u043a MESSAGE ENTRY(1\u2026 debug_pipe(item_command(2) , 0); -- \u042d\u0442\u043e \u043a\u0430\u043a MESSAGE ENTRY(2\u2026<\/code><\/pre>\n<hr>\n<p><u>\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0431\u0430\u0437\u044b<\/u><\/p>\n<p>1) \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0438\u0441\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 (\u0432 \u0422\u0411\u041f)<\/p>\n<p><em>FIND<\/em><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<p>\u041f\u043e\u0438\u0441\u043a \u0441\u0447\u0435\u0442\u0430 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 r_ac_fin ref [AC_FIN]; --\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0447\u0435\u0442 r_AC_FIN := ::[AC_FIN]([MAIN_V_ID] = s_ac_str); --\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || r_AC_FIN.[NAME], 0);  --\u0432\u044b\u0432\u043e\u0434 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0447\u0435\u0442\u0430<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u0442\u043e \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0426\u0424\u0422 \u0435\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u0412 \u043d\u0435\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430, \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u00bb.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0447\u0435\u0442 (\u043d\u0430\u0448\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435), \u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0441\u0447\u0435\u0442\u0430. <\/p>\n<p>\u042d\u0442\u043e \u0438\u043c\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 CLIENT, \u043d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a: <\/p>\n<pre><code class=\"pgsql\">debug_pipe(r_AC_FIN. [CLIENT_V].[NAME], 0);&nbsp;<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0435 <strong>CLIENT_V<\/strong> \u043d\u0430 \u0441\u0447\u0435\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 &#8212; \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0441\u0447\u0435\u0442\u0430.<\/p>\n<p>2) \u041f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.<\/p>\n<p><em>FIND FIRST \u2026\u2026 NO-ERROR.<\/em><\/p>\n<p><em>\u2026.<\/em><\/p>\n<p><em>IF NOT AVAILABLE<\/em><\/p>\n<p>\u2026..<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 r_ac_fin ref [AC_FIN]; --\u0441\u0441\u044b\u043b\u043a\u0430 \u0441\u0447\u0435\u0442 begin     locate r_ac_fin in ::[AC_FIN]           where r_ac_fin.[MAIN_V_ID] = s_ac_str           order by r_ac_fin.[MAIN_V_ID] asc;          debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || r_AC_FIN.[NAME], 0);      exception when NO_DATA_FOUND then          debug_pipe('\u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430', 0); end;<\/code><\/pre>\n<p>3) \u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p><em>FIND LAST<\/em><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e asc \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c des<\/p>\n<p>4) \u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p><em>FOR EACH<\/em><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1:<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 for acc in ::[AC_FIN] all where acc.[MAIN_V_ID] = s_ac_str loop         debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || acc.[NAME], 0); end loop;<\/code><\/pre>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2:&nbsp;<\/p>\n<pre><code class=\"pgsql\">s_ac_str string_100; --\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0447\u0435\u0442\u0430 for (     select acc(         acc.[NAME] : C_NAME         )         in ::[AC_FIN] all         where acc.[MAIN_V_ID] = s_ac_str ) loop     debug_pipe(\u2018\u0418\u043c\u044f \u0441\u0447\u0435\u0442\u0430: \u2018 || acc.[C_NAME], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0421\u043b\u044b\u0448\u0430\u043b (\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b), \u0447\u0442\u043e \u043e\u0431\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0434 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 Pl Plus \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 Pl SQL.<\/p>\n<\/blockquote>\n<p>5) \u041f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446.<\/p>\n<p><em>FOR EACH\u2026.<\/em><\/p>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,EACH\u2026<\/em>&nbsp;<\/p>\n<p>\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0441\u0447\u0435\u0442\u0430 \u0438 \u0438\u043c\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430.<\/p>\n<pre><code class=\"pgsql\">for (     select acc(         acc.[NAME]  : C_NAME,         cl.[NAME]   : C_NAME2         )         in ::[AC_FIN], (::[CLIENT] all : cl) all         where acc.[MAIN_V_ID] = s_ac_str           and acc.[CLIENT_V]  = cl ) loop     debug_pipe('\u0418\u043c\u0435\u043d\u0430_: ' || acc.[C_NAME] || ' ' || acc.[C_NAME2], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 2-\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043e\u0434\u043d\u043e\u0439&nbsp; <strong>[AC_FIN]<\/strong> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/p>\n<pre><code class=\"pgsql\">for (     select acc(         acc.[NAME]             : C_NAME,         acc.[CLIENT_V].[NAME]   : C_NAME2         )         in ::[AC_FIN] all         where acc.[MAIN_V_ID] = s_ac_str ) loop     debug_pipe('\u0418\u043c\u0435\u043d\u04302_ : ' || acc.[C_NAME] || ' ' || acc.[C_NAME2], 0); end loop;<\/code><\/pre>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434, \u043d\u043e \u0443 \u0432\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0432\u044b \u0437\u0430\u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u0441\u043b\u043e\u0432\u043e &#171;all&#187;, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u043b \u044f \ud83d\ude42<\/p>\n<\/blockquote>\n<hr>\n<p><u>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0434\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439:<\/u><\/p>\n<p><em>RUN oper.p (par1, par2).<\/em>&nbsp;<\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0442\u0435\u043b\u043e\u00bb \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/strong><\/p>\n<pre><code class=\"pgsql\">::[tbp_oper].[oper](     P_PAR1 == par1,     P_PAR2 == par1     );<\/code><\/pre>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u043e\u0440\u043c\u043e\u0439.<\/p>\n<p>\u041d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0442\u043e\u044f\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0430 \u00ab\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0431\u0443\u0444\u0435\u0440 \u0441\u0435\u0441\u0441\u0438\u0438\u00bb.<\/p>\n<pre><code class=\"pgsql\">stdio.put_line_buf('&lt;% PLPCALL [TBP_OPER].[OPER](%PARAM%.P_PAR1 =&gt; %VAR%.PAR1, %PARAM%.P_PAR2 =&gt; %VAR%.PAR2) %&gt;'); <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 PAR1 \u0438 PAR2 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\u00bb.<\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 3. \u0412\u044b\u0437\u043e\u0432 \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0442\u043e\u0436\u0435 \u0432\u0441\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"pgsql\">Runtime.PlayEx(\"&lt;% PLPCALL [TBP_OPER].[OPER](%PARAM%.P_PAR1 =&gt; %VAR%.PAR1, %PARAM%.P_PAR2 =&gt; %VAR%.PAR2) %&gt;\")<\/code><\/pre>\n<hr>\n<p><u>\u0418\u043d\u043a\u043b\u044e\u0434\u044b:<\/u><\/p>\n<p><em>{globals.i}<\/em><\/p>\n<pre><code class=\"pgsql\">pragma include(::[RUNTIME].[MACRO_LIB]);<\/code><\/pre>\n<hr>\n<p><u>\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b:<\/u><\/p>\n<p><em>&amp;GLOBAL-DEFINE DELIM &#171;;&#187; \/* \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f csv \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *\/<\/em><\/p>\n<pre><code class=\"pgsql\">pragma macro(DELIM, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ';'); -- \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f csv \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435: <strong>&amp;DELIM<\/strong><\/p>\n<hr>\n<p><em><u>NO-UNDO, NO-LOCK:<\/u><\/em><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a NO-UNDO. <\/p>\n<p><strong>bank.[DEPART]&nbsp; <\/strong><em>&#8212;NO-LOCK<\/em><\/p>\n<p><em>EXCLUSIVE-LOCK:<\/em><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 1. <\/p>\n<p><strong>bank=&gt;[DEPART] \u2013-\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0438<\/strong><\/p>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 2.<\/p>\n<p><strong>bank%lock \u2013-\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438<\/strong><\/p>\n<p>\u0413\u0434\u0435 bank \u2013 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0430\u043d\u043a\u0438.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0438\u043f\u0430 bank.[DEPART],&nbsp; \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 NO-LOCK \u0411\u0438\u0441\u043a\u0432\u0438\u0442\u0430, \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 bank=&gt;[DEPART] \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e.<\/p>\n<hr>\n<p><u>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438:<\/u><\/p>\n<p><em>DO TRANSACTION:<\/em><\/p>\n<p><em>\u2026\u2026\u2026<\/em><\/p>\n<p><em>END.<\/em><\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432:<\/p>\n<p><strong>commit;<\/strong><\/p>\n<p>\u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p><strong>savepoint &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;;<\/strong><\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u043a\u0430\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;.<\/p>\n<p><strong>rollback [ to &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt; ]<\/strong><\/p>\n<p>\u041e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e commit \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0442\u043e\u0447\u043a\u0430 \u043e\u0442\u043a\u0430\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c &lt;&nbsp;\u0438\u043c\u044f&nbsp;&gt;.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b commit \u0438 rollback \u0441\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<hr>\n<p><u>\u041e\u0431\u043c\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0431\u0430\u0437\u043e\u0439 \u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445<\/u>:<\/p>\n<p>1) \u0412\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 XLS.<\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 XLS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d. \u0415\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u00ab\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\u00bb.<\/p>\n<pre><code class=\"pgsql\">pragma macro(xl, '::[OOXML].[API_XL]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 pragma macro(lib_ooxml,'::[SHABLON_DOC].[LIB_OOXML]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 &amp;lib_ooxml.xl_init(p_shablon_code == 'RSB_REP_KSPL'); -- \u0432\u044b\u0437\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 &amp;xl.Open_Sheet(1); -- \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043b\u0438\u0441\u0442 &amp;xl.put(3, 6, \u2018\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 3 6 \u043b\u0438\u0441\u0442\u0430 1\u2019)); -- \u0432\u044b\u0432\u043e\u0434 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 3, \u043a\u043e\u043b\u043e\u043d\u043a\u0443 6 &amp;lib_ooxml.xl_finish; --\u0432\u044b\u0432\u043e\u0434 xls \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/code><\/pre>\n<p>2) \u0412\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 word.<\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 word \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d. \u0415\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u00ab\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\u00bb.<\/p>\n<pre><code class=\"pgsql\">pragma macro(wd, '::[OOXML].[API_DOC_SAX]'); --\u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 p_shablon_ref ref [SHABLON_DOC]; --\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d v_tf_field constant.MEMO_TABLE_S; --\u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 p_shablon_ref := ::[SHABLON_DOC]%locate(x where x.CODE = 'SHABLON_CODE'); --\u043f\u043e\u0438\u0441\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043e \u043a\u043e\u0434\u0443 v_report_data := ::[SHABLON_DOC].[LIB_OOXML].wd_init( p_shablon_ref         == p_shablon_ref                            ,p_filial             == stdlib.userid().[FILIAL]                        ,p_stop_on_error == false); --\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430     v_tf_field := &amp;wd.GetDocVars; --\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432     v_tf_field('\u0414\u0410\u0422\u0410'):= vDate_Str; --\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0414\u0410\u0422\u0410 \u043d\u0435\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c     v_tf_field('\u0424\u0418\u041e'):= P_CLIENT; --\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0424\u0418\u041e \u043d\u0435\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c     &amp;wd.PutDocVars(v_tf_field); --\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442     &amp;wd.finish(v_report_data); --\u0432\u044b\u0432\u043e\u0434 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/code><\/pre>\n<p>3) \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 csv (\u0444\u0430\u0439\u043b \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438)<\/p>\n<pre><code class=\"pgsql\">--\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ifile            integer; ofile            [FILE$LOAD];sbuffer            varchar2(1000); --\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0443\u0442\u044c \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 ofile.[SRC_PATH]    := stdio.Get_Env('FIO_ROOT_DIR'); ofile.[SRC_NAME]    := 'for_test.csv'; ofile.[SRC_TYPE]    := true; --\u0412\u044b\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 ifile := stdio.open(ofile.[SRC_PATH], ofile.[SRC_NAME], 'r');         while stdio.get_line(ifile, sbuffer, True, stdio.WINTEXT, Null) loop      <\/code><\/pre>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/hr>\n<\/div>\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-326439","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326439","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=326439"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326439\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=326439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=326439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=326439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}