{ "info": { "author": "CHTD", "author_email": "info@chtd.ru", "bugtrack_url": null, "classifiers": [], "description": "=======================================\n\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0411\u0414\n=======================================\n\n----------------------------------------------------\n\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438\n----------------------------------------------------\n\n:\u0410\u0432\u0442\u043e\u0440\u044b: \u0412. \u0410. \u0424\u0451\u0434\u043e\u0440\u043e\u0432, \u041a. \u0410. \u041b\u043e\u043f\u0443\u0445\u0438\u043d\n:\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f: \n \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\n \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0421\u0423\u0411\u0414 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0434\u043b\u044f Django. \n\n.. contents::\n.. .. section-numbering::\n\n\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\n\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438:\n\n- \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043c\u0435\u0440\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b (\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u043e\u0434\u044b \u043f\u043e \u0447\u0430\u0441\u0430\u043c)\n- \u043f\u043b\u0430\u043d \u0440\u0430\u0431\u043e\u0442\u044b\n- \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0432\u0435\u0440\u0441\u0438\u0438)\n- \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 (workflow)\n\n\n\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\n=================\n\n\n::\n\n drop table if exists data ;\n create table data (\n vtime timestamp DEFAULT CURRENT_TIMESTAMP ,\n vid integer ,\t-- \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\n v text \t -- \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n ) ;\n\n\n\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 (**v**) \u043e\u0442\n\u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 (**vid**) \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (**vtime**). \u0414\u043b\u044f\n\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439::\n\n insert into data (vtime,vid,v) values ('2000-01',1,'2000 - 1') ;\n insert into data (vtime,vid,v) values ('2001-01',1,'2001 - 1') ;\n insert into data (vtime,vid,v) values ('2002-01',1,'2002 - 1') ;\n insert into data (vtime,vid,v) values ('2000-01',2,'2000 - 2') ;\n insert into data (vtime,vid,v) values ('2001-01',2,'2001 - 2') ;\n insert into data (vtime,vid,v) values ('2001-01',3,'2001 - 3') ;\n insert into data (vtime,vid,v) values ('2002-01',3,'2002 - 3') ;\n\n\u0415\u0441\u043b\u0438 \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f::\n\n select v from data where vtime='2001-01' ;\n\n 2001 - 1\n 2001 - 2\n 2001 - 3\n\n\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0441\u043b\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u043d \u043d\u0435 \u0442\u043e\u0447\u043d\u043e. \u0422\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u0442\n\u0441\u043c\u044b\u0441\u043b \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043d\u0438\u0437\u0443). \u041f\u0440\u0438\n\u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e\n\u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f::\n \n select v from data where vid=2 and vtime<='2001-05' \n order by vtime DESC limit 1 ;\n\n 2001 - 2\n\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b \u0432\u0441\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438, \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\n\u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439::\n\n select vid,v from data \n where vtime=(select max(d.vtime) from data as d where\n d.vtime<='2001-05' and d.vid=data.vid) ;\n\n 1\t2001 - 1\n 2\t2001 - 2\n 3\t2001 - 3\n\n\u0418\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e (\u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438)::\n \n select data.vid,v from data ,\n ( select max(vtime) as t,vid \n from data where vtime<='2001-05' group by vid) as d\n where vtime=t and data.vid=d.vid ; \n\n 1\t2001 - 1\n 2\t2001 - 2\n 3\t2001 - 3\n\n\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b\n=========\n\n.. note::\n \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430\u0445 \u0435\u0441\u0442\u044c with, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f!\n\n\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438 \u0438 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\n(**select** \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b), \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\n\u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e\u0434\u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\n\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\n\n\u0423\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445,\n\u0442.\u0435. \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0430\u0442\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c **\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b** \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f::\n \n drop table if exists ndata ;\n create table ndata (\n vstart timestamp DEFAULT CURRENT_TIMESTAMP , -- \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0432\u043a\u043b.)\n vend timestamp DEFAULT '9999-01' , -- \u043a\u043e\u043d\u0435\u0446 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0438\u0441\u043a\u043b.)\n vid integer ,\t-- \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\n v text \t -- \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n ) ;\n\n\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0438\u0434\u0443::\n\n insert into ndata (vstart,vid,v) select vtime,vid,v from data ;\n\n update ndata set vend = ( -- \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0432\u0441\u0435\u0445 \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e\n select min(d.vstart) from ndata as d \n where d.vstart>ndata.vstart and d.vid=ndata.vid )\n where exists ( -- \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \n select * from ndata as d \n where d.vstart>ndata.vstart and d.vid=ndata.vid ) ;\n \n\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442::\n\n vstart\t\tvend\tvid\tv\n 2000-01\t2001-01\t1\t2000 - 1\n 2001-01\t2002-01\t1\t2001 - 1\n 2002-01\t9999-01\t1\t2002 - 1\n 2000-01\t2001-01\t2\t2000 - 2\n 2001-01\t9999-01\t2\t2001 - 2\n 2001-01\t2002-01\t3\t2001 - 3\n 2002-01\t9999-01\t3\t2002 - 3\n\n\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f (\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043d\u0438\u0436\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0430\n\u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e). \u0417\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0438\n\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e:: \n\n select v from ndata where vid=2 and vstart<='2001-05' and vend>'2001-05' ;\n\n\u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\n\u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439) \u0438::\n\n select vid,v from ndata where vstart<='2001-05' and vend>'2001-05' ;\n\n\u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432.\n\n\u0423\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u0441\u0442\u0430\u0432\u043a\u0438::\n\n insert into ndata (vstart,vend,vid,v) values ('2000-05',\n -- \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430:\n case when exists ( -- \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f\n select * from ndata \n where vid=2 and ndata.vstart<'2000-05' and ndata.vend>'2000-05' )\n then ( select vend from ndata \n where vid=2 and ndata.vstart<'2000-05' and\n\t ndata.vend>'2000-05' )\n\t when exists ( -- \u0432 \u043d\u0430\u0447\u0430\u043b\u043e\n select * from ndata where vid=2 )\n\t then ( select min(vstart) from ndata where vid=2 )\n else '9999-01' end,\n 2,'2000-05 2') ;\n -- \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0435\u0446 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043f\u0430\u043b\u0438:\n update ndata set vend='2000-05' \n where vid=2 and vstart<'2000-05' and vend>'2000-05' ;\n\n\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f::\n\n -- \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u044b\u0439 \u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\n update ndata set vend=(select vend from ndata \n where vid=2 and vstart='2000-05')\n where vid=2 and vend='2000-05' ;\n delete from ndata where vid=2 and vstart='2000-05' ;\n\n\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0435\u0441\u043b\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442::\n\n -- \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f vid=4:\n insert into ndata (vstart,vid,v) values ('2000-05',4,'2000-05 4') ;\n\n -- \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e:\n insert into ndata\n select '1999-01',min(vstart),2,'1999-01 2' from ndata where vid=2 ;\n\n -- \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0438\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u044c\n insert into ndata \n select '2004-05',vend,2,'2004-05 2' from ndata \n where vid=2 and vstart<'2004-05' and vend>'2004-05' ;\n update ndata set vend='2004-05' \n where vid=2 and vstart<'2004-05' and vend=>'2004-05' ; \n\n\u041c\u0430\u0441\u0441\u043e\u0432\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c\n\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0438\u0437 **data**.\n\n\n\u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438\n=====================\n\n\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0435\u0441\u043b\u0438\n\u043e\u043d\u043e \u0435\u0441\u0442\u044c). \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0443 (\u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438,\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440) \u043c\u043e\u0436\u043d\u043e\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b **ndata**. \u041f\u0443\u0441\u0442\u044c \u0435\u0441\u0442\u044c\n\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432::\n\n drop table if exists idvtime ;\n create table idvtime ( id integer , t timestamp ) ;\n insert into idvtime values (3,'2000-01') ;\n insert into idvtime values (2,'2000-05') ;\n insert into idvtime values (1,'2001-01') ;\n insert into idvtime values (3,'2001-05') ;\n insert into idvtime values (2,'2002-01') ;\n\n\u0422\u043e\u0433\u0434\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 **ndata** \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c::\n\n select id,t,v \n from idvtime left join ndata on (id=vid and vstart<=t and vend>t) ;\n\n id\tt\tv\n 3\t2000-01\tNULL\n 2\t2000-05\t2000 - 2\n 1\t2001-01\t2001 - 1\n 3\t2001-05\t2001 - 3\n 2\t2002-01\t2001 - 2\n\n\n\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u0435\u0440\u0441\u0438\u0438\n==================\n\n\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438: cvs, svn, git, darcs\n\u0438 \u0442.\u0434. \u0418\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f - \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\n\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e\n\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435\n\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0412\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 (\u0432\n\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438) \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u043c \u0434\u043b\u044f\n\u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439\n\u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0441\u044f \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0426\u0435\u043b\u0438:\n\n- \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430;\n- \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430;\n- \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442\u044b) \u0432\n \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c (\u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u044f).\n\n\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\n \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446,\n \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f,\n \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 (\u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430) \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \n\n\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c\n\u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439). \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c\n\u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f **\u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438** \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.\n\n\u0412\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\n\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043f\u043b\u044e\u0441\n\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c - `datetime.max`. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0437\n\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0435\u0441\u043b\u0438 \u0432 \u043f\u0440\u0430\u0432\u0443\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f\n\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f.\n\n\u0412 \u0431\u0430\u0437\u0435 \u0445\u0440\u0430\u043d\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044e\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\n\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 - **\u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430**. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\n\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430.\n\n\n\u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\n===============================\n\n\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\n\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u043c\u0438:\n\n\u041e\u0434\u0438\u043d \u043a \u043e\u0434\u043d\u043e\u043c\u0443\n \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u043b\u044e\u0447 \u0434\u0440\u0443\u0433\u043e\u0439 - \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\n \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u0439\n (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430).\n\n \u0421\u0441\u044b\u043b\u043a\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\n \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u043b\u044f \u0440\u0435\u0434\u043a\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0439 (\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e).\n\n\u041c\u043d\u043e\u0433\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \n \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f - \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\n \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0435\u0441\u043b\u0438\n \u043e\u043d\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c) \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0441\u0441\u044b\u043b\u043a\u0443. \u042d\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\n \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 - \u0440\u0435\u0434\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.\n\n\u041e\u0434\u0438\u043d \u043a\u043e \u043c\u043d\u043e\u0433\u0438\u043c\n \u0434\u0440\u0443\u0433\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0433\u043b\u0430\u0432\u043d\u043e\u0439. \u0421\u043f\u043e\u0441\u043e\u0431\n \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.\n\n\u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e \u043c\u043d\u043e\u0433\u0438\u043c\n \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u0432\n \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0442. \u0435. \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.\n\n\u0414\u0440\u0443\u0433\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u0442\u0440\u0435\u0442\u044c\u0438\u043c\u0438 \u0438 \u0442. \u0434. \u0412\u0430\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b\n\u0441\u043e\u0431\u043b\u044e\u0434\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0438 \u0432\u0441\u0435\u0445 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f\n\u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442).\n\n\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0435\u0442\u043e\u0432)\n\u0432\u0430\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0442.\u0435. \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\n\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\n\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0435\u0442 (\u043e\u043d\u0430 \u043d\u0435 \u0433\u043b\u0430\u0432\u043d\u0430\u044f). \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0441\u0432\u044f\u0437\u0438\n\u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u0433\u0434\u0435\n\u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 - \u0435\u0433\u043e \u043a\u043e\u0440\u0435\u043d\u044c. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0435\u0441\u0442\u044c\n\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043d\u0430\u0432\u0435\u0440\u0445, \u043a \u043a\u043e\u0440\u043d\u044e. \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0438\u0434\u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0430\u043d\u043d\u044b\u043c\n\u0443\u0437\u043b\u043e\u043c \u0438 \u0443\u0437\u043b\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:\n\n1. \u0423\u0437\u0435\u043b \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439.\n2. \u0414\u0430\u043d\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0443\u0437\u0435\u043b \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.\n\n\u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\n\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.\n\n\n\u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438\n=======================\n\n\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435\n\u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0432\u044f\u0437\u0435\u0439 \u043f\u043e\n\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0432\u0435\u0440\u0441\u0438\u044f\u043c \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432:\n\n1. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c\n \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \n2. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438\n \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.\n3. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.\n4. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c\n (\u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430).\n\n\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u0439 (\u043c\u043e\u043c\u0435\u043d\u0442,\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440),\n\u0438 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u0432\u0435\u0441\u0442\u0438 \u0434\u0432\u0430 \u043f\u043e\u043b\u044f \u0432 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u043c\u0441\u044f\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e\n\u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0434\u0430\u0442\u0443, \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a \u043d\u0430\u0448\u0435\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\n*9998-01-01*.\n\n\u0412 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430\n\u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 2 \u0438\u043b\u0438 3 - \u043c\u043e\u0436\u043d\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c, \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e\n\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f. \u041c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435\n2 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435\n3 - \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430.\n\n\n\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a\n=================\n\n\u0415\u0441\u043b\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0430 1 \u0438\u043b\u0438 2, \u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u043e\u0436\u043d\u043e\n*\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c*, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u043c\u0441\u044f, \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u043c\u0441\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0439\u0434\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435\n1 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c\n\u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435.\n\n\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2 - \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0432\u0438\u0434 \u0441\u0441\u044b\u043b\u043e\u043a \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438,\n\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\n\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.\n\n\n\u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u044f\n============\n\n\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0432\u044f\u0437\u0435\u0439 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435\n\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 - **\u0441\u0435\u0439\u0447\u0430\u0441**. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f\n\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0447\u0430\u0441\u0430\u043c. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c\n(\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0447\u0430\u0441\u043e\u0432), \u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n\u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e - \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0441\u0435\u0439\n\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\n\u0432\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0438 \u0442.\u043f. \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c\n\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 - \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 **\u0441\u0435\u0439\u0447\u0430\u0441** \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442. \u041f\u0440\u0438\n\u044d\u0442\u043e\u043c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a\n\u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 **\u0441\u0435\u0439\u0447\u0430\u0441**. \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 **\u0441\u0435\u0439\u0447\u0430\u0441** \u0437\u0430\u0434\u0430\u043d \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0442\u043e\n\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 *\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f*.\n\n\n--------------------------\n\u0412\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 Django\n--------------------------\n\n\u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439\n\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 **documents**: *documents.models* \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435\n\u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0430 *documents.fields*\n\u0442\u0438\u043f \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b.\n\nAPI\n===\n\ndocuments.models\n----------------\n\n``DocumentPart`` \n \u2013 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0417\u0430\u0434\u0430\u0435\u0442:\n\n ``now`` \n \u2013 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \"\u0441\u0435\u0439\u0447\u0430\u0441\", \u0433\u0434\u0435\n \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u044f\n \u0442\u0440\u0435\u0434\u0430). \u0421\u043c. \u043c\u043e\u0434\u0443\u043b\u044c *retrospection*, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 *now* \u0438 *set_now*.\n\t\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 (\u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430) \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c\n \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u0438 **\u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c** \u0434\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\n *set_now*.\n ``ConfigurationError``\n \u2013 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\n \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443)\n ``document_get(cls, datetime, **kwargs)`` \n \u2013 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430\n \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 (\u0447\u0430\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438\n \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u0442 \u0438\u043b\u0438\n \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e - \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 *get* \u0434\u043b\u044f\n *QuerySet*.\n ``at(cls, datetime, **kwargs)``\n \u2013 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 *QuerySet* \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0439\n \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c\n \u043f\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430). \u041f\u0443\u0442\u044c \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\n \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 *to_master*\n \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435.\n ``history(self, **kwargs)``\n \u2013 QuerySet \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c\n \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \n\n``Document(DocumentPart)``\n \u2013 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0417\u0430\u0434\u0430\u0435\u0442:\n\n ``document_start`` \u2013 DateTimeField\n \u2013 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e).\n ``document_end`` \u2013 DateTimeField\n \u2013 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e).\n ``document_id`` \u2013 IntegerField\n \u2013 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d -\n \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\n ``ChangedAlready`` \u2013 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\n \u2013 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c *document_save* \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 *id* \u043d\u0435\n \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.\n ``document_save(self, document_start=None)``\n \u2013 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\n \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0435\u0441\u0442\u044c)\n \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f *document_end* (\u0440\u0430\u0432\u043d\u044b\u0439 *document_start* \u0434\u043b\u044f\n \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438). \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d document_start, \u0442\u043e \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f\n\t\u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0435\u0440\u0435\u0442\u0441\u044f\n\tdatetime.now().\n\n\t\u0415\u0441\u043b\u0438 *id* \u043d\u0435 *None*, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043e\u043d\n \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u043b\u044e\u0447 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f \u0432\n \u0431\u0430\u0437\u0435). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a (\u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f), \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\n (\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\n \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438). \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d (\u043d\u0443\u043b\u0435\u0432\u043e\u0439)\n \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0431\u0430\u0437\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\n *new_document_id* \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f\n \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0431\u0430\u0437\u0443 \u0443\u0436\u0435 \u0441 \u043d\u043e\u0432\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c. \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\n \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.\n ``save_now(self)`` \n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e document_save, \u043d\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\n \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e (\u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430). \n ``new_document_id(self)`` \n \u2013 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.\n ``document_get_or_404(cls, datetime, **kwargs)``\n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433 *get_object_or_404* \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\n \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.\n ``at(cls, datetime, **kwargs)``\n \u2013 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.\n ``history(self, **kwargs)``\n \u2013 QuerySet \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c\n \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \n ``document_restore(self, document_start=None)``\n \u2013 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.\n\n \u0412 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0440\u044f\u0434\u043e\u043a\n \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0438\u0434\u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0447\u0430\u0441\u0442\u044f\u043c\u0438. \u0421\u0441\u044b\u043b\u043a\u0438\n \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u0447\u0430\u0441\u0442\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0438\u0435\u0441\u044f\n \u043d\u0430 \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u0439\n \u0432\u0435\u0440\u0441\u0438\u0438.\n ``restore_now(self)`` \n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e document_restore, \u043d\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\n \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e (\u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430).\n ``bulk_documents_save(cls, documents, document_start=None)``\n \u2013 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043c\u0430\u0441\u0441\u043e\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430).\n ``bulk_save_now(cls, documents)`` \n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e bulk_documents_save,\n \u043d\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e (\u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430).\n ``bulk_documents_delete(cls, documents, delete_time=None)``\n \u2013 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445.\n ``bulk_delete_now(cls, documents)`` \n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e bulk_documents_delete, \u043d\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439\n \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e (\u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430).\n\n\n\n``DocumentPartF(DocumentPart)``\n \u2013 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u043d\u0430\n \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\n \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442:\n\n ``to_master(cls)``\n \u2013 \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u043f\u0443\u0442\u0438 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f\n \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043d\u0430\u0439\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0442 *DocumentPart*\n \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 - \u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430\n \u0440\u0435\u0448\u0435\u043d\u0430, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f *to_master* \u0434\u043b\u044f\n \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0435 \u043e\u0434\u043d\u0430,\n \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 *ConfigurationError*. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\n \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.\n\n``DocumentPartB(DocumentPart)``\n \u2013 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\n \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\n \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442:\n\n ``to_master(cls)``\n \u2013 \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u043f\u0443\u0442\u0438 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f\n \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043d\u0430\u0439\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0442 *DocumentPart*, \u043d\u0430\n \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 - \u0442\u043e\n \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0435\u043d\u0430, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f *to_master* \u0434\u043b\u044f\n \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0435 \u043e\u0434\u043d\u0430,\n \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 *ConfigurationError*. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\n \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.\n\n``load_related_document_fk(datetime, object_list, field)``\n \u2013 \u0430\u043d\u0430\u043b\u043e\u0433 select_related \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\n \u0447\u0435\u0440\u0435\u0437 DocumentForeignKey. \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0435\n {field} \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043f\u043e\u043b\u0435 {field}_cached (\u041f\u041e\u041a\u0410 \u041d\u0415 \u0420\u0415\u0410\u041b\u0418\u0417\u041e\u0412\u0410\u041d\u041e).\n\n\ndocuments.fields\n----------------\n\n\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0442\u0438\u043f\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\n\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 *ForeignKey*. \u0421\u0441\u044b\u043b\u043a\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\n\u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\n\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0414\u043b\u044f \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:\n\n``DocumentForeignKey(models.ForeignKey)``\n \u2013 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0442\n *Document*. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b (\u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a \u0434\u043b\u044f\n *ForeignKey*). \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430\n \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0435 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0447\u0442\u043e \u0438 \u0434\u043b\u044f *ForeignKey*, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c\n \u0447\u0442\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438::\n\n class Source(...):\n ...\n link = DocumentForeignKey(SomeDocument)\n ...\n\n t = datetime.now()\n s = Source.objects.get(pk=123)\n some_document = s.link(t)\n\n\u0412 \u041d\u0410\u0421\u0422\u041e\u042f\u0429\u0418\u0419 \u041c\u041e\u041c\u0415\u041d\u0422 \u0424\u0423\u041d\u041a\u0426\u0418\u041e\u041d\u0410\u041b\u042c\u041d\u041e\u0421\u0422\u042c \u041d\u0415 \u0420\u0415\u0410\u041b\u0418\u0417\u041e\u0412\u0410\u041d\u0410. \u0418\u0421\u041f\u041e\u041b\u042c\u0417\u0423\u0415\u0422\u0421\u042f\n\u041f\u0420\u041e\u0421\u0422\u041e \u0426\u0415\u041b\u041e\u0415 \u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0415.\n\n\ndocuments.retrospection\n-----------------------\n\n``now(request=None)``\n \u2013 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 (\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c). \u0415\u0441\u043b\u0438 \u043d\u0435\u0442,\n \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0435\u0434\u0430. \u0415\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f\n \u0442\u0440\u0435\u0434\u0430 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e \u2013 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0431\u0443\u0434\u0443\u0442\n \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f\n \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435\n \u0432\u0440\u0435\u043c\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e *set_now*.\n\n``set_now(dt=None)``\n \u2013 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043b\u044f \u0442\u0440\u0435\u0434\u0430, \u0432\n dt \u0438\u043b\u0438 \u0432 datetime.now() \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d.\n\n``current_time(dt=None)``\n \u2013 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u2013 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.\n\n``@with_real_time``\n \u2013 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 \u2013 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\n\n\ndocuments.admin\n---------------\n\n\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0441\n\u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ``DocumentModelAdmin``. \u041f\u0440\u0438 \u0435\u0433\u043e\n\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043c\u043e\u0436\u0435\u043c\n\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (\u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439). \u041f\u0440\u0438\n\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f\n\u043f\u043e\u043b\u044f ``DocumentForeignKey`` (\u0432 \u0432\u0438\u0434\u0436\u0435\u0442\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438\n\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432). \u041d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0437\u0430\u0431\u044b\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b\n\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c\n\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0430\u0441\u044c \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u0438 \u043c\u043e\u0434\u0435\u043b\u0435\u0439.\n\n\nMiddleware \u0434\u043b\u044f \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u0438\n===========================\n\n\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 ``documents.retrospection.RetrospectionMiddleware``.\n\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 **\u0441\u0435\u0439\u0447\u0430\u0441** \u0443\u0434\u043e\u0431\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\nmiddleware \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:\n\n1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f **now** \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e\n \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c).\n2. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 post-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\n \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0420\u0435\u0436\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f).\n\nH\u0435 \u0432\u0441\u0435 post-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u0434\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0435\n\u0440\u0435\u0436\u0438\u043c \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b middleware \"\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u043e\" \u0437\u0430\u043f\u0440\u043e\u0441, \n\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0435 ``post_in_retrospection``.\n\n\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \n``documents.retrospection.RetrospectionMiddleware`` \u0432\n\u0441\u043f\u0438\u0441\u043e\u043a ``MIDDLEWARE_CLASSES`` \u043f\u043e\u0441\u043b\u0435 ``SessionMiddleware``. \n\n\u041f\u0440\u0438\u043c\u0435\u0440\n======\n\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\n`\u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 Django \n`_.\n\n\u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430: Poll \u0438 Choice. Poll \u2013 \u0432\u043e\u043f\u0440\u043e\u0441\n\u0434\u043b\u044f \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f, Choice - \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432\n\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c::\n\n class Poll(models.Model):\n question = models.CharField(max_length=200)\n pub_date = models.DateTimeField('date published')\n\n def __unicode__(self):\n return self.question\n\n class Choice(models.Model):\n poll = models.ForeignKey(Poll)\n choice = models.CharField(max_length=200)\n votes = models.IntegerField()\n\n def __unicode__(self):\n return self.choice\n\n\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0443. \u0412\u043d\u0435\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:\n\n1. \u0421\u0434\u0435\u043b\u0430\u0435\u043c *\u0432\u043e\u043f\u0440\u043e\u0441* \u0438 *\u043e\u0442\u0432\u0435\u0442* \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438.\n2. *\u043e\u0442\u0432\u0435\u0442* - \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 - \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445\n \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445.\n3. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0440\u043e\u0441\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 *\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442*.\n\n\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439::\n\n class Choice(Document):\n choice = models.CharField(max_length=200)\n\n def __unicode__(self):\n return self.choice\n \n class Poll(Document):\n question = models.CharField(max_length=200)\n\n def __unicode__(self): \n return self.question\n \n class PollChoices(DocumentPartB):\n poll = models.ForeignKey(Poll)\n choice = models.ForeignKey(Choice)\n\n @classmethod\n def to_master(cls): \n return 'poll'\n \n class PollResults(Document):\n poll = models.ForeignKey(Poll)\n choice = models.ForeignKey(Choice)\n votes = models.IntegerField()\n\n @staticmethod\n def vote(poll_document_id, choice_document_id):\n n = datetime.now()\n p = Poll.document_get(n, document_id=poll_document_id)\n c = Choice.document_get(n, document_id=choice_document_id)\n try: \n v = PollResults.document_get(\n n, poll__document_id=poll_document_id,\n choice__document_id=choice_document_id)\n v.votes += 1\n except PollResults.DoesNotExist:\n v = PollResults(poll=p, choice=c, votes=1)\n v.document_save()\n return v.document_id\n\nDocument\n \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\nChoice\n \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0432\u0435\u0442\u0430. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \nPoll\n \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442.\nPollChoices\n \u0447\u0430\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 **Poll** \u2013 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u043e\u0432\n \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441.\nPollResults\n \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442.\n\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b\n-------------\n\n::\n\n >>> from documents_test.docs.models import *\n \n # \u041f\u043e\u043a\u0430 \u043d\u0435\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0439\n >>> Poll.objects.all()\n []\n \n # \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435\n >>> p = Poll(question='Who is who?')\n \n # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c.\n >>> p.document_save()\n \n # \u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c id, document_id, document_start \u0438 document_end.\n >>> p.id\n 1\n >>> p.document_id\n 1\n \n # Access database columns via Python attributes.\n >>> print p.question\n Who is who?\n \n >>> p.document_start # doctest: +ELLIPSIS\n datetime.datetime(...)\n \n # Give the Poll a couple of Choices.\n >>> now = datetime.now()\n >>> p = Poll.document_get(now, document_id=1)\n \n # Display any choices from the related object set -- none so far.\n >>> PollChoices.at(now)\n []\n \n # Create three choices.\n >>> c1 = Choice(choice='President'); c1.document_save(); c1\n \n >>> c2 = Choice(choice='Agent'); c2.document_save(); c2\n \n >>> c3 = Choice(choice='Gena Crocodile'); c3.document_save(); c3\n \n \n # document_id \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438:\n >>> for c in (c1, c2, c3): print c.document_id\n 1\n 2\n 3\n \n # \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0445:\n >>> p.document_save() # \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\n >>> p.pollchoices_set.add(*[PollChoices(choice=c) for c in (c1, c2, c3)]) \n \n # \u0413\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435 (\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 - \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043e\u0442\u043c\u0435\u0442\u043a\u0430):\n >>> PollResults.vote(1, 1)\n 1\n >>> PollResults.vote(1, 1)\n 1\n >>> PollResults.vote(1, 1)\n 1\n >>> PollResults.vote(1, 2)\n 4\n \n # \u0417\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0435 (t):\n >>> from time import sleep\n >>> sleep(0.1)\n >>> t = datetime.now()\n >>> sleep(0.1)\n \n >>> PollResults.vote(1, 2)\n 4\n >>> PollResults.vote(1, 3)\n 6\n \n # \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f:\n >>> for r in PollResults.at(datetime.now(), poll__document_id=1):\n ... print r.votes, r.choice.choice\n 3 President\n 2 Agent\n 1 Gena Crocodile\n \n # \u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u044f (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 t):\n >>> for r in PollResults.at(t, poll__document_id=1):\n ... print r.votes, r.choice.choice\n 3 President\n 1 Agent\n\n \n\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432\n---------------------------\n\n\u0423\u0447\u0435\u0431\u043d\u0438\u043a Django \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u043e\u0441\u043d\u0438\u043a \u0447\u0435\u0440\u0435\u0437 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439\n\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439\n\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Django \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e\n\u043d\u0430\u0434\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438,\n\u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 *\u0432 \u043e\u0431\u0445\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\n\u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438*. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 *\u0441\u0442\u0430\u0446\u0438\u043e\u043d\u0430\u0440\u043d\u044b\u0435* \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\n\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u043b\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\n\u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a), \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\n\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0435\u043d.\n\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 ``documents.admin``, \u043d\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \n\u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b (\u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438).\n\n.. -*- Local Variables:\n.. -*- mode: rst\n.. -*- mode: auto-fill\n.. -*- End:\n.. vim:set ft=rst:\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/chtd/doc-versions", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "doc-versions", "package_url": "https://pypi.org/project/doc-versions/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/doc-versions/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/chtd/doc-versions" }, "release_url": "https://pypi.org/project/doc-versions/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Django app for tracking changes in models", "version": "0.1.1" }, "last_serial": 733113, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "f1ad1f1dd0df8312f9404ad14c533f4e", "sha256": "8126f456198dcb90d3d6a8a3cd592bfaf8ea9614437967065dba0c7910c96808" }, "downloads": -1, "filename": "doc-versions-0.1.tar.gz", "has_sig": false, "md5_digest": "f1ad1f1dd0df8312f9404ad14c533f4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25295, "upload_time": "2013-02-23T18:13:31", "url": "https://files.pythonhosted.org/packages/0a/f2/6052eaeed6ca0a7a311141bac38fcf427b6ff4663433bd77ccfdc0fe9a98/doc-versions-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "aa0506480bb52a8fc36e7fecd81273b4", "sha256": "0fce7964acce303ad4d5eec81e2a20c3e9dd94493389eec0c8c4b09df1e4fc7d" }, "downloads": -1, "filename": "doc-versions-0.1.1.tar.gz", "has_sig": false, "md5_digest": "aa0506480bb52a8fc36e7fecd81273b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26060, "upload_time": "2013-02-23T18:35:29", "url": "https://files.pythonhosted.org/packages/1e/5c/a6b389fe67d3f83aa0e96fa0c1ceb4fb1cfa4880070b802e8563666b04c0/doc-versions-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aa0506480bb52a8fc36e7fecd81273b4", "sha256": "0fce7964acce303ad4d5eec81e2a20c3e9dd94493389eec0c8c4b09df1e4fc7d" }, "downloads": -1, "filename": "doc-versions-0.1.1.tar.gz", "has_sig": false, "md5_digest": "aa0506480bb52a8fc36e7fecd81273b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26060, "upload_time": "2013-02-23T18:35:29", "url": "https://files.pythonhosted.org/packages/1e/5c/a6b389fe67d3f83aa0e96fa0c1ceb4fb1cfa4880070b802e8563666b04c0/doc-versions-0.1.1.tar.gz" } ] }