{"id":336491,"date":"2022-08-02T21:00:19","date_gmt":"2022-08-02T21:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=336491"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=336491","title":{"rendered":"<span>\u00ab\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u043a\u043e\u0434\u0430\u00bb<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0410\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u0442 \u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0438 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u00ab\u0441\u0442\u0438\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb \u0438 \u043e \u0442\u043e\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u043f\u0440\u0430\u0432\u0434\u044b\u0432\u0430\u044e\u0442 \u0438\u043c \u043d\u0438\u0437\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0441\u0442\u0438\u043b\u044f!\u00a0<\/em>\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/51a\/09c\/f0c\/51a09cf0c34a7a7d9e158d6d219565a1.png\" width=\"1400\" height=\"933\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51a\/09c\/f0c\/51a09cf0c34a7a7d9e158d6d219565a1.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0438\u043b\u044c \u043a\u043e\u0434\u0430. \u042f \u0441\u043b\u044b\u0448\u0430\u043b \u044d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430, \u044d\u0442\u0443 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044c \u0432 \u0441\u043e\u0442\u043d\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:<\/p>\n<p>\u00ab<em>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/em>\u00bb<em>.<\/em><\/p>\n<p>\u00ab<em>\u0412\u0441\u0435 \u043f\u0438\u0448\u0443\u0442 \u043a\u043e\u0434 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443<\/em>\u00bb.<\/p>\n<p>\u00ab<em>\u0422\u0430\u043a \u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043a\u043e\u0434<\/em>\u00bb<em>.<\/em><\/p>\n<p>\u0418 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435&#8230;<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u0435\u043d\u044f \u0431\u0435\u0441\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u043b\u044b\u0448\u0443, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0444\u0440\u0430\u0437 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u044f\u0432\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e\u0447\u0435\u043c\u0443? \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0441\u0443\u0449\u0430\u044f \u043c\u0435\u043b\u043e\u0447\u044c. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u0435\u043d\u044f \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0435 \u0441\u0430\u043c\u0430 \u0444\u0440\u0430\u0437\u0430, \u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u043d\u044b\u0439 \u044d\u0433\u043e\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0435\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d. \u0415\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u0430\u043c \u0432\u0437\u0434\u0443\u043c\u0430\u0435\u0442\u0441\u044f: \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043b\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0438 \u043d\u0438\u043a\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0418\u041b\u0418 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, R&amp;D, \u0433\u0434\u0435 \u043f\u0443\u0442\u044c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432\u043e \u0433\u043b\u0430\u0432\u0443 \u0443\u0433\u043b\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0432\u0430\u0448\u0435 \u00ab\u044f \u043f\u0438\u0448\u0443 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u00bb \u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442 \u0441 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0435\u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<h3>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u044f<\/h3>\n<p>\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f \u0434\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e \u0441\u0442\u0438\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u2014 \u044d\u0442\u043e \u0440\u0443\u043a\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bee\/1e1\/b8c\/bee1e1b8c578b531e7867a9ead1bed59.png\" alt=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0410\" title=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0410\" width=\"1400\" height=\"933\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/1e1\/b8c\/bee1e1b8c578b531e7867a9ead1bed59.png\"\/><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0410<\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u043d\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u043a\u0443? \u041b\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0440\u0430\u0437\u0431\u043e\u0440\u0447\u0438\u0432\u043e. \u042f \u043a\u043e\u0435-\u043a\u0430\u043a \u0441\u043c\u043e\u0433 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u0438 \u0431\u043b\u0438\u0436\u0435 \u043a \u043a\u043e\u043d\u0446\u0443, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u0435\u0441\u043b\u0438 \u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u0430\u043b \u043c\u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0448\u0435\u0434\u0435\u0432\u0440 \u0432 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435, \u044f \u0431\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f. \u041f\u0438\u0441\u044c\u043c\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443. \u041d\u043e \u0442\u0430\u043a\u043e\u0432 \u0443\u0436 \u0435\u0433\u043e \u00ab\u0441\u0442\u0438\u043b\u044c\u00bb.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d67\/b6a\/8d2\/d67b6a8d2010d687ba1b434d14524259.png\" alt=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0411\" title=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0411\" width=\"1158\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d67\/b6a\/8d2\/d67b6a8d2010d687ba1b434d14524259.png\"\/><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0411<\/figcaption><\/figure>\n<p>\u0410 \u0432\u043e\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e.<\/p>\n<p>\u0415\u0433\u043e \u044f \u0443\u0436\u0435 \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0447\u0443\u0440\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0440\u0430\u0437\u0433\u0430\u0434\u0430\u0442\u044c, \u043d\u043e \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0438\u0441\u044c\u043c\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0440\u0430\u0437\u0431\u043e\u0440\u0447\u0438\u0432\u043e. \u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u043e\u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043f\u0440\u044f\u0442\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435. \u041d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u044b\u0447\u0443\u0440\u043d\u0430\u044f \u043c\u0430\u043d\u0435\u0440\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 \u2014 \u044d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u00ab\u0437\u0430\u0443\u043c\u043d\u043e\u0441\u0442\u0438\u00bb \u0432 \u043a\u043e\u0434\u0435. \u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0443\u0433\u043e\u0434\u043d\u043e, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0442\u0438\u043f\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0422\u0430\u043a \u043b\u0438 \u0443\u0436 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e-\u043d\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0425?<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/164\/81b\/fd8\/16481bfd8ae4a47aab880dcca7e3d482.png\" alt=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0421\" title=\"\u041f\u0438\u0441\u044c\u043c\u043e \u0421\" width=\"1067\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/164\/81b\/fd8\/16481bfd8ae4a47aab880dcca7e3d482.png\"\/><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0421<\/figcaption><\/figure>\n<p>\u041b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044f \u043f\u0440\u0438\u0431\u0435\u0440\u0435\u0433 \u043d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442.\u00a0<\/p>\n<p>\u042d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441 \u043e\u0433\u043b\u044f\u0434\u043a\u043e\u0439 \u043d\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0421 \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043a \u043d\u0435\u043c\u0443. \u041e\u043d\u043e \u043d\u0435 \u0432\u044b\u0447\u0443\u0440\u043d\u043e\u0435. \u041e\u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043b\u0438\u0448\u0435\u043d\u043e \u0438\u0437\u044f\u0449\u0435\u0441\u0442\u0432\u0430 (\u0445\u043e\u0442\u044f \u044f \u0432\u0438\u0436\u0443 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u0442\u043a\u0438 \u0432 \u0431\u0443\u043a\u0432\u0430\u0445 \u00abg\u00bb \u0438 \u00aby\u00bb). \u042d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0441\u043b\u0443\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0446\u0435\u043b\u0438: \u0434\u043e\u043d\u0435\u0441\u0442\u0438 \u0434\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2014 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412\u044b \u0443\u043b\u043e\u0432\u0438\u043b\u0438 \u0441\u0443\u0442\u044c? \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a-\u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c, \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0438\u0448\u0435\u0442\u0435 \u043a\u043e\u0434 \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u043c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u043b\u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0437\u0430\u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0442\u0430\u043d\u0435\u0442\u0435 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u043c. \u042f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438, \u0430 \u043d\u0435 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438, \u043a\u0430\u043a \u0431\u044b \u0441\u043c\u0435\u0448\u043d\u043e \u044d\u0442\u043e \u043d\u0438 \u0437\u0432\u0443\u0447\u0430\u043b\u043e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u044f \u043c\u043e\u0433\u0443 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0435\u0441\u0442\u044c \u00ab\u0441\u0442\u0438\u043b\u044c\u00bb. \u0412\u0435\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u0448 \u0441\u0442\u0438\u043b\u044c \u00ab\u0433\u0440\u044f\u0437\u043d\u044b\u043c\u00bb \u043a\u0430\u043a \u0432 \u043f\u0438\u0441\u044c\u043c\u0435 \u0410. \u0418\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u0438\u0442\u0440\u044b\u043c \u0438 \u0432\u044b\u0447\u0443\u0440\u043d\u044b\u043c \u043a\u0430\u043a \u0443 \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 \u0412. \u0418\u043b\u0438 \u0447\u0438\u0441\u0442\u044b\u043c \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043d\u0435 \u043b\u0438\u0448\u0435\u043d\u043d\u044b\u043c \u0434\u043e\u043b\u0438 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0421.<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043d\u0435 \u0431\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u043e\u0439, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430.<\/p>\n<h3>\u041e\u0431\u0440\u0430\u0437\u0446\u044b \u0441\u0442\u0438\u043b\u044f<\/h3>\n<p>\u042f \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c C#, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u043e \u0438\u0445 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438, \u0441\u0443\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e \u0410 \/ \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u043d\u044b\u0439, \u0433\u0440\u044f\u0437\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c<\/strong><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0431\u044b\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043c\u043d\u0435 \u0434\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0418 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043b\u044e\u0434\u044c\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u00ab\u043f\u043e\u043b\u043e\u0442\u0435\u043d\u00bb (\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438 \u0441\u0432\u043e\u0438 \u0432\u0437\u0433\u043b\u044f\u0434\u044b). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u043b\u0430\u0431\u043e\u0435 \u0441\u0435\u0440\u0434\u0446\u0435, \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442 \u0433\u0440\u0435\u0445\u0430 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0426\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0413\u043e\u0441\u043f\u043e\u0434\u0438 \u0411\u043e\u0436\u0435, \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u0438\u0442 \u043c\u043e\u0437\u0433\u2026<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21161<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class record {   public string mdate_time = \"\";   public string date_time   {     get{ return mdate_time; } set { mdate_time = value; }   }   public string mname = \"\";   public string name   {     get { return mname; } set { mname = value; }   }   public int mquantity = 0;   public int qty   {     get { return mquantity; }     set {       if (value &lt; 0) value = 0;       mquantity = value;     }   } }  public void RunProc(List&lt;records> input) {   records r;   SqlConnection s;   SqlCommand cmd;   int index;   int index2;   int foundIndex;   var grp = new List&lt;records>();   index = 0;   while (index &lt; input.Count)   {     r = input[index];     index2 = 0;     foundIndex = -1;     while (index2 &lt; grp.Count)     {       if (grp[index2].name == input[index].name)       {         foundIndex = index2;         break;       }       index2++;     }     if (foundIndex > -1)     {       grp[foundIndex].qty = grp[foundIndex].qty + input[index].qty;     } else grp.Add(input[index]);     index++;   }   index = 0;   while (index &lt; grp.Count)   {     r = grp[index];     s = new SqlConnection(connnection_t); s.Open();     try     {       cmd = new SqlCommand(\"insert into [item_table] (time, product_name, qty) values (@time, @pn, @q)\", s);       cmd.Parameters.AddWithValue(\"time\", DateTime.Parse(r.date_time));       cmd.Parameters.AddWithValue(\"pn\", r.name);       cmd.Parameters.AddWithValue(\"q\", r.qty);       cmd.ExecuteNonQuery();     }     catch (Exception)     { }     finally{ s.Close();    }     index++;  } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u044d\u0442\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043b\u043e\u0434 \u043c\u043e\u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433 \u0431\u044b \u0440\u0430\u0437\u0440\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c, \u0447\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. \u0423 \u043c\u0435\u043d\u044f \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u0438&#8230;<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u0443\u0432\u0430\u0436\u0435\u043d\u0438\u044f \u043a \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u043c \u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u044f\u0437\u044b\u043a. \u0414\u0430, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 12-\u043b\u0435\u0442\u043d\u0438\u0439 \u0440\u0435\u0431\u0435\u043d\u043e\u043a (\u043f\u043e\u0437\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440).<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e B \/ \u0421\u043b\u0435\u0433\u043a\u0430 <\/strong>\u00ab<strong>\u0437\u0430\u0443\u043c\u043d\u044b\u0439<\/strong>\u00bb<strong> \u0441\u0442\u0438\u043b\u044c<\/strong><\/p>\n<p>\u041a\u043e\u0434 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u044f\u0432\u043d\u043e \u0437\u0430\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0441 \u0441\u043e\u0431\u043e\u0439. \u0414\u0430, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u0447\u0435\u043c \u0432\u044b\u0448\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21162<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class ProductRecord {   public DateTime Timestamp { get; set; }   public string Name  {get; set; }   public int Quantity { get; set; } }  public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> input) {   const string SQL_TEMPLATE = \"INSERT INTO [ProductCount] (Timestamp, Name, Quantity) VALUES (\";   var grouped = input.GroupBy(r => r.Name)     .Select(g => new {       Timestamp = g.First().Timestamp,       Name = g.Key,       Quantity = g.Sum(e => e.Quantity)     }).ToArray();   int entryCount = grouped.Count();    var SQL = string.Join(\"\\n\", grouped.Select((g, index) => SQL + $\"@Timestamp{index},@Name{index},@Quantity{index});\"));   using (var sqlConn = new SqlConnection(connectionString))   {     sqlConn.Open();     using (var cmd = new SqlCommand(SQL, sqlConn))     {       for(int i = 0; i &lt; entryCount; i++)       {         cmd.Parameters.AddWithValue($\"@Timestamp{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Name{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Quantity{i}\", grouped[i].Timestamp);       }       cmd.ExecuteNonQuery();     }   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043d\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043d\u043e\u0441\u043d\u044b\u043c. \u0414\u0430, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0443\u0442\u0430-\u0434\u0440\u0443\u0433\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 SQL_TEMPLATE \u0438 \u043a\u0430\u043a\u0430\u044f \u0446\u0435\u043b\u044c \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f. \u041d\u043e \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439, \u0445\u043e\u0442\u044f \u0438 \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441. \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c INSERT \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0441\u0451 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 VALUES, \u0438 \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410\u0432\u0442\u043e\u0440 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0446\u0438\u043a\u043b\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0445\u0443\u0434\u0448\u0435\u0435, \u043d\u043e \u0438 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043b\u0443\u0447\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041c\u0435\u0441\u0442\u0430\u043c\u0438 \u043e\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438\u043b\u0438 \u0437\u0430\u0443\u043c\u043d\u043e \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u043e \u0432 \u043a\u043e\u0440\u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u0410.<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e C \/ \u0427\u0438\u0441\u0442\u043e \u0438 \u044f\u0441\u043d\u043e<\/strong><\/p>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u0447\u0438\u0441\u0442\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u2014 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u00ab\u043e\u0442\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442 B.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21163<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class ProductRecord {   public DateTime Timestamp { get; set; }   public string Name  {get; set; }   public int Quantity { get; set; } }  public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> records) {   ProductRecord[] groupedRecords = GroupProductRecordsByName(records);    using (var sqlConn = OpenSqlConnection())   using (var sqlCommand = BuildBulkProductCountCommand(sqlConn, groupedRecords))   {     sqlCommand.ExecuteNonQuery();   }   }  private ProductRecord[] GroupProductRecordsByName(IEnumerable&lt;ProductRecord> records)   => records     .GroupBy(r => r.Name)     .Select(grp => new ProductRecord {       Timestamp = grp.First().Timestamp,       Name = grp.Key,       Quantity = grp.Sum(e => e.Quantity)     })     .ToArray();  private SqlConnection OpenSqlConnection() {   var sqlConnection = new SqlConnection(_ConnectionString);   sqlConnection.Open();   return sqlConnection; }  private SqlCommand BuildBulkProductCountCommand(SqlConnection sqlConnection, ProductRecord[] groups) {   StringBuilder commandTextBuilder = new StringBuilder(@\"     INSERT INTO [ProductCount] (Timestamp, Name, Quantity)     VALUES   \");    var command = new SqlCommand();   command.Connection = sqlConnection;    for(int i; i &lt; groups.Length - 1; i++)   {     commandTextBuilder       .Append(AddParametersAndGenerateValueRow(groups[i], i, command))       .AppendLine(\",\");   }      command.CommandText = commandTextBuilder     .AppendLine(AddParametersAndGenerateValueRow(groups[i], i, command))     .ToString();    return command; }  private string AddParametersAndGenerateValueRow(ProductRecord group, int index, SqlCommand command) {   command.Parameters.AddWithValue($\"@Timestamp{index}\", group.Timestamp);   command.Parameters.AddWithValue($\"@Name{index}\", group.Name);   command.Parameters.AddWithValue($\"@Quantity{index}\", group.Quantity);    return $\"(@Timestamp{index}, @Name{index}, @Quantity{index})\"; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0433\u043e! \u041d\u0430\u0448 \u043a\u043e\u0434 \u0432\u044b\u0440\u043e\u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0434\u0432\u043e\u0435 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c B. \u0414\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439! \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u0430\u0436\u043d\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439? \u041a\u0442\u043e-\u0442\u043e \u0438 \u0432\u043e\u0432\u0441\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u0435\u0435 \u0432\u043e \u0433\u043b\u0430\u0432\u0443 \u0443\u0433\u043b\u0430. \u042f \u0432 \u0446\u0435\u043b\u043e\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d \u0441 \u043d\u0438\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u0431\u0435\u0436\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0442 \u043e\u0433\u043d\u044f?<\/p>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u00ab\u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c\u00bb \u0435\u0433\u043e \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0433 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u00ab\u0447\u0438\u0441\u0442\u043e\u0432\u043e\u0439\u00bb \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 StringBuilder (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043a\u043e\u0434 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c. \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u043b\u0438\u043d\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432 B \u0438 C.<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 B (\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> input) {   const string SQL_TEMPLATE = \"INSERT INTO [ProductCount] (Timestamp, Name, Quantity) VALUES (\";   var grouped = input.GroupBy(r => r.Name)     .Select(g => new {       Timestamp = g.First().Timestamp,       Name = g.Key,       Quantity = g.Sum(e => e.Quantity)     }).ToArray();   int entryCount = grouped.Count();    var SQL = string.Join(\"\\n\", grouped.Select((g, index) => SQL + $\"@Timestamp{index},@Name{index},@Quantity{index});\"));   using (var sqlConn = new SqlConnection(connectionString))   {     sqlConn.Open();     using (var cmd = new SqlCommand(SQL, sqlConn))     {       for(int i = 0; i &lt; entryCount; i++)       {         cmd.Parameters.AddWithValue($\"@Timestamp{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Name{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Quantity{i}\", grouped[i].Timestamp);       }       cmd.ExecuteNonQuery();     }   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 C (\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> records) {   ProductRecord[] groupedRecords = GroupProductRecordsByName(records);    using (var sqlConn = OpenSqlConnection())   using (var sqlCommand = BuildBulkProductCountCommand(sqlConn, groupedRecords))   {     sqlCommand.ExecuteNonQuery();   }   }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434 \u043b\u0435\u0433\u0447\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u043e\u043d\u044f\u0442\u044c? \u0421\u043a\u0440\u0435\u0449\u0443 \u043f\u0430\u043b\u044c\u0446\u044b \u0438 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 C. \u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0432\u0430, \u0447\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434\u0435, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u043e\u0440\u0430\u0445 \u0432\u0430\u043c \u043d\u0435 \u0432\u0438\u0434\u043d\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043c\u0435\u043d\u043d\u043e public&#8217;\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430. \u0414\u0430\u0436\u0435 \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0440\u043e\u0441\u0430\u044e\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e (\u0432 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435) \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f, \u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u0442\u0430\u043f\u0443, \u0430 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0435\u0441\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c \u00ab\u0437\u0430\u0443\u043c\u043d\u043e\u043c\u00bb \u0432\u0438\u0434\u0435.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u0447\u0438\u0442\u0430\u044e \u043e\u0431\u0440\u0430\u0437\u0435\u0446 B, \u0434\u043b\u044f \u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043d\u0430\u043f\u0440\u044f\u0447\u044c\u0441\u044f. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041d\u043e, \u043a\u0445\u043c, \u044d\u0442\u043e \u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u00ab\u0441\u0436\u0430\u0442\u044b\u0439\u00bb \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>\u0427\u0438\u0442\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u0421, \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430: GroupProductRecordsByName \u0438 BuildBulkProductCountCommand. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u044f\u0441\u043d\u044b \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u044f \u043a \u043d\u0438\u043c, \u0432\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u0435\u043d, \u0438 \u0432\u044b \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 C, \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 (\u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u0430\u0436\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e\u00bb), \u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u0435\u0433\u0447\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0438 \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0438\u044e\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0439 \u0432\u044b\u0433\u043e\u0434\u044b. \u0425\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0430\u0441\u0441\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c\u0443, \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u0431\u044b\u0442\u044c \u0441 \u0432\u0430\u043c\u0438 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u043c. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u043a\u043e\u0434\u0438\u043d\u0433\u0443. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0421 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Dapper \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 ORM \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0431\u044b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u043e \u0440\u0435\u0447\u044c \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>\u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e. \u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043f\u043e\u0434\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0437\u0430\u0438\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u043e\u044d\u0442\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u044d\u0440\u044b. \u0420\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430\u0434 \u043a\u043e\u0434\u043e\u043c, \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u0441\u044c \u043a \u0447\u0443\u0432\u0441\u0442\u0432\u0443 \u0433\u043e\u0440\u0434\u043e\u0441\u0442\u0438: \u0437\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0437\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a. \u0413\u043e\u0440\u0434\u0438\u0442\u0435\u0441\u044c \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439!<\/p>\n<h2>\u0411\u043e\u043d\u0443\u0441!<\/h2>\n<p>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0423\u0416\u0410\u0421\u041d\u041e \u0438 \u043d\u0435\u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e \u044f \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u0435\u0436\u0434\u0435. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u041e. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445! \u042f \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043c\u043d\u044f, \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043c\u0435\u043d\u044f \u0437\u0430 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438&#8230; \ud83d\ude42<\/p>\n<p>\u0414\u0430\u0436\u0435 \u0432 \u0441\u0430\u043c\u043e\u043c \u0441\u0432\u0435\u0436\u0435\u043c \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435 (\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443) \u044f \u0432\u0438\u0436\u0443 \u0442\u043e\u0447\u043a\u0438 \u0440\u043e\u0441\u0442\u0430. \u0412\u0430\u0436\u043d\u0430\u044f \u0440\u0435\u043c\u0430\u0440\u043a\u0430: \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043d\u0435 \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u043c \u00ab\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0435\u00bb, \u0430 \u043e \u043c\u043e\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u0437\u0440\u043e\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u2026<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u043e\u0442 \u0432\u0430\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u0433\u0440\u0430: \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430 \u0438\u043b\u0438 \u0438\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043e\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b. \u041a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b \u0432\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0435\u0441\u044c?<\/p>\n<p>\u041d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c!<\/p>\n<details class=\"spoiler\">\n<summary>Military Strikes (\u0438\u0433\u0440\u0430 \u043d\u0430 VB6) \u2014 1999 (\u0430\u0432\u0442\u043e\u0440\u0443 12 \u043b\u0435\u0442)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"vbscript\">Option Strict Off Option Explicit On Imports Artinsoft.VB6.Gui Imports Artinsoft.VB6.Utils Imports Microsoft.VisualBasic Imports Military_Game_UpgradeSupport.UpgradeStubs Imports System Imports System.Drawing Imports System.Windows.Forms Partial Friend Class Form1 Inherits System.Windows.Forms.Form 'Variables Dim CurrentTurn As Integer Dim NewArmy() As Module1.Army = ArraysHelper.InitializeArray(Of Module1.Army)(101) Dim EnemyArmy() As Module1.Army = ArraysHelper.InitializeArray(Of Module1.Army)(101) Dim CurNumArmies As Integer Dim Ifclicked As Boolean Dim CurrentClicked As Integer Dim NewReg As Boolean Public Sub New() MyBase.New() If m_vb6FormDefInstance Is Nothing Then If m_InitializingDefInstance Then m_vb6FormDefInstance = Me Else Try 'For the start-up form, the first instance created is the default instance. If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then m_vb6FormDefInstance = Me End If  Catch End Try End If End If 'This call is required by the Windows Form Designer. InitializeComponent() ReLoadForm(False) End Sub  Private Sub Command1_Click(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles Command1.Click NewReg = True         Me.ForeColor = Color.Blue         'Dim g As Graphics = Graphics.FromImage(Pic.Image)         'g.DrawEllipse(Pens.Black, VB6.TwipsToPixelsX(VB6.FromPixelsUserX(Command1.Left, 0, 7620, VB6.TwipsToPixelsX(7620)) + VB6.FromPixelsUserWidth(Command1.Width, 7620, VB6.TwipsToPixelsX(7620)) + 16), VB6.TwipsToPixelsY(VB6.FromPixelsUserY(Command1.Top, 0, 4935, VB6.TwipsToPixelsY(4935)) + (VB6.FromPixelsUserHeight(Command1.Height, 4935, VB6.TwipsToPixelsY(4935)) \/ 2)), VB6.TwipsToPixelsX(12)) Me.ForeColor = Color.Black End Sub  Private Sub EndTurn_Click(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles EndTurn.Click If CurNumArmies &lt; 1 Then MessageBox.Show(\"Need Army Corps to continue to end a turn\", Application.ProductName) Exit Sub End If '*** Increments [Turn] Variable CurrentTurn += 1 lblNumberTurns.Text = Conversion.Str(CurrentTurn) '*** ResetMoves() RewriteInfoBox() End Sub  'Moves the Currently selected Corp\/regiment in the specified 'direction. Private Sub DirectionMove_Click(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles _DirectionMove_3.Click, _DirectionMove_2.Click, _DirectionMove_1.Click, _DirectionMove_0.Click Dim Index As Integer = Array.IndexOf(DirectionMove, eventSender) If Ifclicked Then If NewArmy(CurrentClicked).MovesLeft > 0 Then Select Case Index Case 0 'North With NewArmy(CurrentClicked) .Y1 -= NewArmy(CurrentClicked).UnitsHigh .Y2 -= NewArmy(CurrentClicked).UnitsHigh If .Y1 &lt; 0 Then .Y1 = 0 .Y2 = NewArmy(CurrentClicked).UnitsHigh .MovesLeft = .MovesLeft Else .MovesLeft = CShort(.MovesLeft - 1) End If End With RedrawArmies() RewriteInfoBox() Case 1 'South With NewArmy(CurrentClicked) .Y1 += NewArmy(CurrentClicked).UnitsHigh .Y2 += NewArmy(CurrentClicked).UnitsHigh If .Y2 > 2000 Then .Y1 = 2000 - NewArmy(CurrentClicked).UnitsHigh .Y2 = 2000 .MovesLeft = .MovesLeft Else .MovesLeft = CShort(.MovesLeft - 1) End If End With RedrawArmies() RewriteInfoBox() Case 2 'East With NewArmy(CurrentClicked) .X1 += NewArmy(CurrentClicked).UnitsWide .X2 += NewArmy(CurrentClicked).UnitsWide If .X2 > 2000 Then .X1 = 2000 - NewArmy(CurrentClicked).UnitsWide .X2 = 2000 .MovesLeft = .MovesLeft Else .MovesLeft = CShort(.MovesLeft - 1) End If End With RedrawArmies() RewriteInfoBox() Case 3 'West With NewArmy(CurrentClicked) .X1 -= NewArmy(CurrentClicked).UnitsWide .X2 -= NewArmy(CurrentClicked).UnitsWide If .X1 &lt; 0 Then .X1 = 0 .X2 = NewArmy(CurrentClicked).UnitsWide .MovesLeft = .MovesLeft Else .MovesLeft = CShort(.MovesLeft - 1) End If End With RedrawArmies() RewriteInfoBox() End Select End If End If End Sub  'UPGRADE_WARNING: (2080) Form_Load event was upgraded to Form_Load method and has a new behavior. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2080.aspx     Private Sub Form_Load() Handles Me.Load         CurrentTurn = 1         lblNumberTurns.Text = Conversion.Str(CurrentTurn)         NewReg = False         CurNumArmies = 0         Ifclicked = False         FirstX(0) = -1         FirstY(0) = -1         Me.Text = \"Military Strikes - \" &amp; CountryName         '*** Loads Forms         Dim tempLoadForm As frmPopDetails = frmPopDetails.DefInstance         Dim tempLoadForm2 As frmEconDetails = frmEconDetails.DefInstance         Dim tempLoadForm3 As frmMilDetails = frmMilDetails.DefInstance         Dim tempLoadForm4 As Form2 = Form2.DefInstance         Dim tempLoadForm5 As frmInfo = frmInfo.DefInstance         SetInitialVariables()         ReWriteInfoFormText()         Pic.Image = New Bitmap(Pic.Width, Pic.Height)         frmInfo.DefInstance.Left = Me.Left + Me.Width         frmInfo.DefInstance.Top = Me.Top         frmInfo.DefInstance.Show()         Form2.DefInstance.Hide()         frmMilDetails.DefInstance.Hide()         frmPopDetails.DefInstance.Hide()         frmEconDetails.DefInstance.Hide()         '***     End Sub  'Places Army on Picture Box Private Sub Pic_MouseDown(ByVal eventSender As Object, ByVal eventArgs As MouseEventArgs) Handles Pic.MouseDown Dim Button As Integer = CInt(eventArgs.Button) Dim Shift As Integer = Control.ModifierKeys \\ &amp;H10000 Dim x As Single = VB6.FromPixelsUserX(eventArgs.X, 0, 7620, VB6.TwipsToPixelsX(7620)) Dim y As Single = VB6.FromPixelsUserY(eventArgs.Y, 0, 4935, VB6.TwipsToPixelsY(4935)) Dim LEFTCORP, RIGHTCORP, ArmyNumber As Integer Ifclicked = False Matched(ArmyNumber, x, y) If ArmyNumber > 0 Then NewReg = False ControlHelper.Cls(Me) Ifclicked = True CurrentClicked = ArmyNumber RedrawArmies() With NewArmy(ArmyNumber)                 'UPGRADE_ISSUE: (2064) PictureBox property Pic.ForeColor was not upgraded. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2064.aspx                 Dim g As Graphics = Graphics.FromImage(Pic.Image) Pic.setForeColor(Color.Blue)                 'UPGRADE_ISSUE: (2064) PictureBox method Pic.Circle was not upgraded. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2064.aspx                 g.DrawEllipse(Pens.Blue, New Rectangle(.X1 + (.UnitsWide \/ 2), .Y1 + (.UnitsHigh \/ 2), 4, 4))                 'Pic.Circle(.X1 + (.UnitsWide \/ 2), .Y1 + (.UnitsHigh \/ 2), 4) 'UPGRADE_ISSUE: (2064) PictureBox property Pic.ForeColor was not upgraded. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2064.aspx                 'Pic.setForeColor(Color.Black)                 g.Dispose() RewriteInfoBox() End With Exit Sub End If If NewReg Then CurNumArmies += 1 Form2.DefInstance.ShowDialog() With NewArmy(CurNumArmies) .UnitsHigh = CShort(UnitHigh) .UnitsWide = CShort(UnitWide) DetermineClosetBlock(x, y) AddArmy(.X1, .X2, .Y1, .Y2, MilType, NewArmy(CurNumArmies)) FirstX(CurNumArmies) = .X1 FirstY(CurNumArmies) = .Y1 .Moves = CShort(UnitMove) .MovesLeft = CShort(UnitMove) .Population = CShort(UnitPop) .Attack = CShort(UnitAttack) .Defense = CShort(UnitDefense) .Range = CShort(UnitRange) ReWriteInfoFormText() BlockCorpTop(.BlockX, .BlockY) = .MilitaryType 'Sets Type of Corp on block BlockCorpArmy(.BlockX, .BlockY) = CurNumArmies ' Sets Army Number in Block  MapType(.BlockX * 2, .BlockY) = .MilitaryType 'Sets current army type in that block MapType(.BlockX * 2 + 1, .BlockY) = .MilitaryType ' each corp takes up two map blocks  MapArmy(.BlockX * 2, .BlockY) = CurNumArmies 'set current army in block MapArmy(.BlockX * 2 + 1, .BlockY) = CurNumArmies ' each corp takes up two map blocks  MapBlock(.BlockX * 2, .BlockY) = LEFTCORP 'Sets which part of the corp is inside the map block MapBlock(.BlockX * 2 + 1, .BlockY) = RIGHTCORP '2nd part of corp End With End If NewReg = False ControlHelper.Cls(Me) End Sub  Public Sub RedrawArmies() 'UPGRADE_ISSUE: (2064) PictureBox method Pic.Cls was not upgraded. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2064.aspx Pic.Cls() For i As Integer = 1 To CurNumArmies With NewArmy(i) Using g As Graphics = Pic.CreateGraphics()                     g.DrawRectangle(New Pen(ColorTranslator.FromOle(NewArmy(i).Color)), New Rectangle(New Point(.X1, .Y1), New Point(.X2, .Y2))) End Using End With Next i If Ifclicked Then With NewArmy(CurrentClicked) 'UPGRADE_ISSUE: (2064) PictureBox method Pic.Circle was not upgraded. More Information: http:\/\/www.vbtonet.com\/ewis\/ewi2064.aspx Pic.Circle(.X1 + (.UnitsWide \/ 2), .Y1 + (.UnitsHigh \/ 2), 4, ColorTranslator.ToOle(Color.Blue)) End With End If End Sub  Public Sub Matched(ByRef ArmyNumber As Integer, ByVal Xclick As Single, ByVal Yclick As Single) For i As Integer = 1 To CurNumArmies With NewArmy(i) If Xclick > .X1 And Xclick &lt; .X2 Then If Yclick > .Y1 And Yclick &lt; .Y2 Then ArmyNumber = i Exit Sub End If End If End With Next i ArmyNumber = -1 End Sub  Public Sub RewriteInfoBox() With NewArmy(CurrentClicked) InfoBox.Text = \"Coords: (\" &amp; Conversion.Str(.X1) &amp; \",\" &amp; Conversion.Str(.Y1) &amp; \")\" &amp; Environment.NewLine &amp;  _                \"Military Type: \" &amp; .Name &amp; \" (\" &amp; Conversion.Str(.MilitaryType) &amp; \")\" &amp; Environment.NewLine &amp;  _                \"Moves: \" &amp; Conversion.Str(.MovesLeft) &amp; \" \/ \" &amp; Conversion.Str(.Moves) &amp; Environment.NewLine &amp;  _                \"Corp Population: \" &amp; StringsHelper.Format(.Population, \"###,###\") &amp; Environment.NewLine &amp;  _                \"Att \/ Def: \" &amp; Conversion.Str(.Attack) &amp; \" \/ \" &amp; Conversion.Str(.Defense) End With End Sub  Public Sub DetermineClosetBlock(ByVal x As Single, ByVal y As Single) For Xtest As Integer = 0 To 9 For Ytest As Integer = 0 To 19 If x > (Xtest * 200) And x &lt; (Xtest * 200) + 200 Then If y > (Ytest * 100) And y &lt; (Ytest * 100) + 100 Then NewArmy(CurNumArmies).X1 = Xtest * 200 NewArmy(CurNumArmies).X2 = (Xtest * 200) + 200 NewArmy(CurNumArmies).Y1 = Ytest * 100 NewArmy(CurNumArmies).Y2 = (Ytest * 100) + 100 NewArmy(CurNumArmies).BlockX = CShort(Xtest) NewArmy(CurNumArmies).BlockY = CShort(Ytest) End If End If Next Ytest Next Xtest End Sub  Public Sub ResetMoves() For i As Integer = 1 To CurNumArmies NewArmy(i).MovesLeft = NewArmy(i).Moves Next i     End Sub  Private Sub Form1_MouseMove(ByVal eventSender As Object, ByVal eventArgs As MouseEventArgs) Handles MyBase.MouseMove Dim Button As Integer = CInt(eventArgs.Button) Dim Shift As Integer = Control.ModifierKeys \\ &amp;H10000 Dim x As Single = VB6.FromPixelsUserX(eventArgs.X, 0, 7620, VB6.TwipsToPixelsX(7620)) Dim y As Single = VB6.FromPixelsUserY(eventArgs.Y, 0, 4935, VB6.TwipsToPixelsY(4935)) 'If Ifclicked = True Then '    With NewArmy(CurrentClicked) '        .X1 = X '        .Y1 = Y '        .X2 = X + 150 '        .Y2 = Y + 100 '    End With '    Cls '    Call RedrawArmies 'End If End Sub  Private Sub Form1_MouseUp(ByVal eventSender As Object, ByVal eventArgs As MouseEventArgs) Handles MyBase.MouseUp Dim Button As Integer = CInt(eventArgs.Button) Dim Shift As Integer = Control.ModifierKeys \\ &amp;H10000 Dim x As Single = VB6.FromPixelsUserX(eventArgs.X, 0, 7620, VB6.TwipsToPixelsX(7620)) Dim y As Single = VB6.FromPixelsUserY(eventArgs.Y, 0, 4935, VB6.TwipsToPixelsY(4935)) 'Ifclicked = False End Sub  Private Sub Form1_Closed(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles MyBase.Closed Environment.Exit(0) End Sub  Private Sub Timer1_Tick(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles Timer1.Tick frmInfo.DefInstance.Left = Me.Left + Me.Width frmInfo.DefInstance.Top = Me.Top End Sub  End Class<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>SPICE Model Engine (VB.NET) \u2014 2006<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"vbscript\">Imports Errors Imports System.IO Imports System.Text.RegularExpressions Imports File_Import_Engine  Public Module MModel #Region \"Constants\"     Private Const cTOTAL_VAR_PARAMETERS = 3     Private Const cMAX_NUM_MODEL_LIBRARIES = 10 #End Region  #Region \"Model Library Functions\"     Public ModelLibraries() As cModelLibrary     Private NumModelLibraries As Integer = 0      'Create a New Model Library     Public Sub AddModelLibrary(ByVal tModel() As cModel, ByVal tName As String)         'Error Checking         If NumModelLibraries = cMAX_NUM_MODEL_LIBRARIES Then             cWarning.AddWarning(105, \"MModel\", \"Maximum Number of Libraries Reached\")             Exit Sub         End If         If IsNothing(tModel) Then Exit Sub          ReDim Preserve ModelLibraries(NumModelLibraries)         ModelLibraries(NumModelLibraries) = New cModelLibrary(tName)         ModelLibraries(NumModelLibraries).Add(tModel)         NumModelLibraries += 1     End Sub      Public Function SearchModelLibrary(ByVal tIndex As Integer, ByVal tName As String) As cModel         If tIndex > NumModelLibraries - 1 Then Return Nothing          Dim tFoundModel As cModel = ModelLibraries(tIndex).Model_Symbol(tName)         If IsNothing(tFoundModel) Then             cError.AddError(531, \"MModel\", \"Model not found in '\" &amp; ModelLibraries(tIndex).LibraryName &amp; \"' Library\")             Return Nothing         End If           Return tFoundModel     End Function      Public Function SearchAllLibraries(ByVal tName As String) As cModel         If NumModelLibraries &lt; 1 Then Return Nothing         For i As Integer = 0 To NumModelLibraries - 1             Dim tFoundModel As cModel = SearchModelLibrary(i, tName)             If Not IsNothing(tFoundModel) Then Return tFoundModel         Next         cError.AddError(532, \"MModel\", \"Model Not Found in Any Library\")         Return Nothing     End Function #End Region      Public Function ImportModelFile(ByVal tFile As String) As cModel()         Dim strComponents() As ioComponentLibrary_ComponentBlock = ImportComponentLibrary(tFile)         If IsNothing(strComponents) Then Return Nothing          Dim numModels As Long = strComponents.Length          'Model Information Variables         Dim Models(numModels - 1) As cModel          For iComp As Integer = 0 To strComponents.Length - 1             With strComponents(iComp)                 Models(iComp) = New cModel(.Name, .Symbol, ArrayListToStringArray(.Nodes))                 For iSim As Integer = 0 To .SimBlocks.Length - 1                     With .SimBlocks(iSim)                         Dim tSimType As SimulationType = ParseSimType(.SimulationType)                         If tSimType = -1 Then Return Nothing                         For iEntry As Long = 0 To .Netlist_Entries.Count - 1                             Models(iComp).AddEntry(tSimType, .Netlist_Entries(iEntry))                         Next                         For iEq As Integer = 0 To .VARS.Count - 1                             Models(iComp).AddEquation(tSimType, .VARS(iEq), .VAR_EQNS(iEq), .VAR_ICS(iEq))                         Next                     End With                 Next                 For iPar As Integer = 0 To .VarNames.Count - 1                     Models(iComp).AddParameter(.VarNames(iPar), \"0\", ParseUnit(.VarTypes(iPar)))                     Models(iComp).Parameters.Description(iPar) = .VarDescs(iPar)                 Next             End With         Next          Return Models     End Function      Private Function ParseVarLine(ByVal tNameText As String, ByVal tTypeText As String, ByVal tDescText As String, ByVal tFile As String, ByVal numLines As Long) As cParameters         Dim tParams As New cParameters()         If tNameText.Trim = \"\" Or tTypeText.Trim = \"\" Or tDescText.Trim = \"\" Then Return tParams          Dim hasBracks As Boolean = False         Dim hasBrackName As Boolean = HasBrackets(tNameText)         Dim hasBrackType As Boolean = HasBrackets(tTypeText)         Dim hasBrackDesc As Boolean = HasBrackets(tDescText)          'Check for Bracket Consistency         If (hasBrackName And hasBrackType And hasBrackDesc) Then             hasBracks = True         ElseIf Not (hasBrackName Or hasBrackType Or hasBrackDesc) Then             hasBracks = False         Else             cError.AddError(529, \"MModel\", \"Invalid Bracket Parsing during Library Import of file '\" &amp; tFile &amp; \"' on Line \" &amp; numLines &amp; \"\")             Return tParams         End If          If hasBracks Then             Dim Names() As String = ParseBrackets(tNameText)             Dim Types() As eUnitCategory = ParseUnitArray(ParseBrackets(tTypeText))             Dim Descs() As String = ParseBrackets(tDescText)             Dim tLength As Integer = Names.Length              If IsNothing(Types) Then Return tParams              If tLength &lt;> Types.Length Or tLength &lt;> Descs.Length Then : cError.AddError(530, \"MModel\", \"Invalid Number of Values in Brackets during Library Import of File '\" &amp; tFile &amp; \"' on Line \" &amp; numLines) : Return tParams : End If             For i As Integer = 0 To tLength - 1                 tParams.AddParameter(RemoveQuotes(Names(i)), RemoveQuotes(Descs(i)), Types(i))             Next         Else             Dim tType As eUnitCategory = ParseUnit(tTypeText)             If tType = eUnitCategory.eError Then Return tParams             tParams.AddParameter(RemoveQuotes(tNameText), RemoveQuotes(tDescText), tType)         End If         Return tParams     End Function      Private Function ParseBrackets(ByVal str As String) As String()         Dim tMatches As MatchCollection = Regex.Matches(str, \"([\\w\\-\\+\\.\\$\\\\\\\/\\*\\^\\(\\)]+)|(\"\"[^\"\"\\r\\n]*\"\")\")         Dim tReturn(tMatches.Count - 1) As String         For i As Integer = 0 To tMatches.Count - 1             tReturn(i) = tMatches.Item(i).Value         Next         Return tReturn     End Function      Private Function HasBrackets(ByVal str As String) As Boolean         If Strings.InStr(str, \"{\") = 0 Or Strings.InStr(str, \"}\") = 0 Then Return False 'Check for the characters first         str = str.Trim         If Strings.Left(str, 1) &lt;> \"{\" Or Strings.Right(str, 1) &lt;> \"}\" Then Return False 'Make sure they're on the ends         Return True     End Function      Private Function ParseUnit(ByVal tUnitName As String) As eUnitCategory         Dim str As String = tUnitName.Trim.ToUpper         Select Case str             Case \"RES\", \"RESISTANCE\"                 Return eUnitCategory.Resistance             Case \"CAP\", \"CAPACITANCE\"                 Return eUnitCategory.Capacitance             Case \"IND\", \"INDUCTANCE\"                 Return eUnitCategory.Inductance             Case \"NON\", \"UNITLESS\"                 Return eUnitCategory.Unitless             Case \"STR\", \"STRING\"                 Return eUnitCategory.eString             Case \"TEM\", \"TEMP\", \"TEMPERATURE\"                 Return eUnitCategory.Temperature             Case \"LEN\", \"LENGTH\"                 Return eUnitCategory.Length             Case \"ARA\", \"AREA\"                 Return eUnitCategory.Area             Case \"VOL\", \"VOLUME\"                 Return eUnitCategory.Volume             Case \"TIM\", \"TIME\"                 Return eUnitCategory.Time             Case \"FRQ\", \"FREQ\", \"FREQUENCY\"                 Return eUnitCategory.Frequency             Case \"RIO\", \"RAT\", \"RATIO\", \"DB\"                 Return eUnitCategory.Ratio             Case \"CUR\", \"CURRENT\"                 Return eUnitCategory.Current             Case \"VOL\", \"VOLTAGE\"                 Return eUnitCategory.Voltage         End Select         Return eUnitCategory.eError     End Function      Private Function ParseUnitArray(ByVal tUnitName As String()) As eUnitCategory()         If IsNothing(tUnitName) Then Return Nothing          Dim tLength As Integer = tUnitName.Length         If tLength = 0 Then Return Nothing          Dim rtnCategories(tLength - 1) As eUnitCategory         For i As Integer = 0 To tLength - 1             rtnCategories(i) = ParseUnit(tUnitName(i))         Next         Return rtnCategories     End Function      Private Function RemoveQuotes(ByVal str As String) As String         If Strings.Left(str, 1) = ControlChars.Quote Then str = Strings.Right(str, str.Length - 1)         If Strings.Right(str, 1) = ControlChars.Quote Then str = Strings.Left(str, str.Length - 1)         Return str     End Function      Private Function ParseSimType(ByVal str As String) As SimulationType         str = str.ToUpper.Trim         Select Case str             Case \"TRAN\", \"TRANS\", \"TRANSIENT\"                 Return SimulationType.eTransient             Case \"AC\"                 Return SimulationType.eAC             Case \"DC\"                 Return SimulationType.eDC             Case \"YELD\", \"YIELD\"                 Return SimulationType.eYield             Case \"NOIS\", \"NOISE\"                 Return SimulationType.eNoise             Case \"SPAR\", \"SSIG\"                 Return SimulationType.eSmallSignal             Case \"LSIG\", \"HARM\"                 Return SimulationType.eLargeSignal         End Select         Return -1     End Function      'Assuming Arraylist contains only strings     Private Function ArrayListToStringArray(ByVal tList As ArrayList) As String()         If IsNothing(tList) Then Return Nothing          Dim tReturn(tList.Count - 1) As String         For i As Integer = 0 To tList.Count - 1             tReturn(i) = tList(i)         Next         Return tReturn     End Function End Module <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a (C#.NET) \u2013 2015<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">using CornerMagic.Persistence; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CornerMagic.Models; using System.Data.Entity;  namespace CornerMagic.Data.SqlServer.Repositories {     internal class GameRepository : BaseRepository, IGameRepository     {         public GameRepository(CornerMagicContext context) : base(context) { }          public void Delete(Game game)         {             if (game.Id == 0) return;              Game foundGame = Context.Games.Find(game.Id);             if (foundGame != null)                 Context.Games.Remove(foundGame);         }          public async Task DeleteAsync(Game game)         {             if (game.Id == 0) return;              Game foundGame = await Context.Games.FindAsync(game.Id);             if (foundGame != null)                 Context.Games.Remove(foundGame);         }          public Game FindById(int Id)         {             return Context.Games.FirstOrDefault(g => g.Id == Id);         }          public async Task&lt;Game> FindByIdAsync(int Id)         {             return await Context.Games.FirstOrDefaultAsync(g => g.Id == Id);         }          public Game FindByName(string name)         {             Game rtn = Context.Games.FirstOrDefault(g => g.Name.Equals(name, StringComparison.OrdinalIgnoreCase));             if (rtn != null)                 Context.Games.Attach(rtn);             return rtn;         }          public async Task&lt;Game> FindByNameAsync(string name)         {             Game rtn = await Context.Games.FirstOrDefaultAsync(g => g.Name.Equals(name, StringComparison.OrdinalIgnoreCase));             if (rtn != null)                 Context.Games.Attach(rtn);             return rtn;         }          public IEnumerable&lt;Game> GetAll()         {             return Context.Games.OrderBy(x => x.Name).ToArray();         }          public async Task&lt;IEnumerable&lt;Game>> GetAllAsync()         {             return await Context.Games.OrderBy(x => x.Name).ToArrayAsync();         }          public int GetNumberOfGames()         {             return Context.Games.Count();         }          public async Task&lt;int> GetNumberOfGamesAsync()         {             return await Context.Games.CountAsync();         }          public Game Upsert(Game game)         {             Game returnGame = null;             if (game.Id > 0)             {                 returnGame = Context.Games.Find(game.Id);                 returnGame.Description = game.Description;                 returnGame.Name = game.Name;                  return returnGame;             }             else             {                 Context.Games.Add(game);                 return game;             }         }          public async Task&lt;Game> UpsertAsync(Game game)         {             Game returnGame = null;             if (game.Id > 0)             {                 returnGame = await Context.Games.FindAsync(game.Id);                 returnGame.Description = game.Description;                 returnGame.Name = game.Name;                  return returnGame;             }             else             {                 Context.Games.Add(game);                 return game;             }         }          public async Task&lt;IEnumerable&lt;Game>> GetAllWithCardDataAsync()         {             return await Context.Games                 .Include(g => g.GameSets)                 .Include(g => g.GameSets.Select(gs => gs.Cards))                 .ToArrayAsync();         }          public Task&lt;IEnumerable&lt;Game>> Get(params int[] ids)         {             throw new NotImplementedException();         }     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041c\u043e\u0434\u0443\u043b\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (C#.NET) \u2014 2020<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">using Sparcpoint.Storage; using System; using System.IO; using System.Linq; using System.Threading.Tasks;  namespace Sparcpoint.Inventory.Modules.Documents {     public class DefaultDocumentListService : IDocumentListService     {         private readonly IInstanceModelRepository&lt;DocumentList> _Documents;         private readonly IFileStorageConnector _Connector;         private readonly IUserContext _User;          public DefaultDocumentListService(             IInstanceModelRepository&lt;DocumentList> documents,             IFileStorageConnector connector,             IUserContext user         )         {             _Documents = PreConditions.ParameterNotNull(documents, nameof(documents));             _Connector = PreConditions.ParameterNotNull(connector, nameof(connector));             _User = PreConditions.ParameterNotNull(user, nameof(user));         }          public async Task&lt;int> CreateListAsync(string name, string? description = null, CustomAttributes? attributes = null)         {             DocumentList list = new DocumentList             {                 Name = name,                 Description = description ?? string.Empty,                 CustomAttributes = attributes ?? new CustomAttributes()             };              return await _Documents.Add(list);         }          public async Task&lt;DocumentList?> FindAsync(int listId)             => await _Documents.Find(listId);          public async Task&lt;Stream> GetDownloadStreamAsync(Uri location)         {             if (!_Connector.CanHandle(location))                 throw new InvalidOperationException($\"The controlling connector cannot handle the provided uri: '{location}'\");              IFile file = await _Connector.GetFileAsync(location);             return await file.GetStreamAsync();         }          public async Task&lt;Uri> SaveDocumentAsync(int listId, string name, Stream data, string? mediaType = null)         {             DocumentList? list = await FindAsync(listId);             PostConditions.Found(list, \"Document List\", listId);              IDirectory directory = await _Connector.GetRootDirectoryAsync();             IFile file = await directory.WriteFileAsync(name, data);              DocumentList.Item document = new DocumentList.Item             {                 Name = name,                 MediaType = mediaType ?? string.Empty,                 UploadUserId = _User.CurrentUserId,                 Location = file.Path             };             list.Documents = list.Documents.Concat(new[] { document }).ToArray();             await _Documents.Update(listId, list);              return file.Path;         }     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ispmanager\/blog\/680504\/\"> https:\/\/habr.com\/ru\/company\/ispmanager\/blog\/680504\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0410\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u0442 \u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0438 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u00ab\u0441\u0442\u0438\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb \u0438 \u043e \u0442\u043e\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u043f\u0440\u0430\u0432\u0434\u044b\u0432\u0430\u044e\u0442 \u0438\u043c \u043d\u0438\u0437\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0441\u0442\u0438\u043b\u044f!\u00a0<\/em>\u00a0<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0438\u043b\u044c \u043a\u043e\u0434\u0430. \u042f \u0441\u043b\u044b\u0448\u0430\u043b \u044d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430, \u044d\u0442\u0443 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044c \u0432 \u0441\u043e\u0442\u043d\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:<\/p>\n<p>\u00ab<em>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/em>\u00bb<em>.<\/em><\/p>\n<p>\u00ab<em>\u0412\u0441\u0435 \u043f\u0438\u0448\u0443\u0442 \u043a\u043e\u0434 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443<\/em>\u00bb.<\/p>\n<p>\u00ab<em>\u0422\u0430\u043a \u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043a\u043e\u0434<\/em>\u00bb<em>.<\/em><\/p>\n<p>\u0418 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435&#8230;<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u0435\u043d\u044f \u0431\u0435\u0441\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u043b\u044b\u0448\u0443, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0444\u0440\u0430\u0437 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u044f\u0432\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e\u0447\u0435\u043c\u0443? \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0441\u0443\u0449\u0430\u044f \u043c\u0435\u043b\u043e\u0447\u044c. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u0435\u043d\u044f \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0435 \u0441\u0430\u043c\u0430 \u0444\u0440\u0430\u0437\u0430, \u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u043d\u044b\u0439 \u044d\u0433\u043e\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0435\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d. \u0415\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u0430\u043c \u0432\u0437\u0434\u0443\u043c\u0430\u0435\u0442\u0441\u044f: \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043b\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0438 \u043d\u0438\u043a\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0418\u041b\u0418 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, R&amp;D, \u0433\u0434\u0435 \u043f\u0443\u0442\u044c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432\u043e \u0433\u043b\u0430\u0432\u0443 \u0443\u0433\u043b\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0432\u0430\u0448\u0435 \u00ab\u044f \u043f\u0438\u0448\u0443 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u00bb \u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442 \u0441 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0435\u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<h3>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u044f<\/h3>\n<p>\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f \u0434\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e \u0441\u0442\u0438\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u2014 \u044d\u0442\u043e \u0440\u0443\u043a\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.\u00a0<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0410<\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u043d\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u043a\u0443? \u041b\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0440\u0430\u0437\u0431\u043e\u0440\u0447\u0438\u0432\u043e. \u042f \u043a\u043e\u0435-\u043a\u0430\u043a \u0441\u043c\u043e\u0433 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u0438 \u0431\u043b\u0438\u0436\u0435 \u043a \u043a\u043e\u043d\u0446\u0443, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u0435\u0441\u043b\u0438 \u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u0430\u043b \u043c\u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0448\u0435\u0434\u0435\u0432\u0440 \u0432 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435, \u044f \u0431\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f. \u041f\u0438\u0441\u044c\u043c\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443. \u041d\u043e \u0442\u0430\u043a\u043e\u0432 \u0443\u0436 \u0435\u0433\u043e \u00ab\u0441\u0442\u0438\u043b\u044c\u00bb.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0411<\/figcaption><\/figure>\n<p>\u0410 \u0432\u043e\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e.<\/p>\n<p>\u0415\u0433\u043e \u044f \u0443\u0436\u0435 \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0447\u0443\u0440\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0440\u0430\u0437\u0433\u0430\u0434\u0430\u0442\u044c, \u043d\u043e \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0438\u0441\u044c\u043c\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0440\u0430\u0437\u0431\u043e\u0440\u0447\u0438\u0432\u043e. \u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u043e\u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043f\u0440\u044f\u0442\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435. \u041d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u044b\u0447\u0443\u0440\u043d\u0430\u044f \u043c\u0430\u043d\u0435\u0440\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 \u2014 \u044d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u00ab\u0437\u0430\u0443\u043c\u043d\u043e\u0441\u0442\u0438\u00bb \u0432 \u043a\u043e\u0434\u0435. \u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0443\u0433\u043e\u0434\u043d\u043e, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0442\u0438\u043f\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0422\u0430\u043a \u043b\u0438 \u0443\u0436 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e-\u043d\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0425?<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0438\u0441\u044c\u043c\u043e \u0421<\/figcaption><\/figure>\n<p>\u041b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044f \u043f\u0440\u0438\u0431\u0435\u0440\u0435\u0433 \u043d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442.\u00a0<\/p>\n<p>\u042d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441 \u043e\u0433\u043b\u044f\u0434\u043a\u043e\u0439 \u043d\u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0421 \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043a \u043d\u0435\u043c\u0443. \u041e\u043d\u043e \u043d\u0435 \u0432\u044b\u0447\u0443\u0440\u043d\u043e\u0435. \u041e\u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043b\u0438\u0448\u0435\u043d\u043e \u0438\u0437\u044f\u0449\u0435\u0441\u0442\u0432\u0430 (\u0445\u043e\u0442\u044f \u044f \u0432\u0438\u0436\u0443 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u0442\u043a\u0438 \u0432 \u0431\u0443\u043a\u0432\u0430\u0445 \u00abg\u00bb \u0438 \u00aby\u00bb). \u042d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0441\u043b\u0443\u0436\u0438\u0442 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0446\u0435\u043b\u0438: \u0434\u043e\u043d\u0435\u0441\u0442\u0438 \u0434\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2014 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412\u044b \u0443\u043b\u043e\u0432\u0438\u043b\u0438 \u0441\u0443\u0442\u044c? \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a-\u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c, \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0438\u0448\u0435\u0442\u0435 \u043a\u043e\u0434 \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u043c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u043b\u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0437\u0430\u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0442\u0430\u043d\u0435\u0442\u0435 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u043c. \u042f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438, \u0430 \u043d\u0435 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438, \u043a\u0430\u043a \u0431\u044b \u0441\u043c\u0435\u0448\u043d\u043e \u044d\u0442\u043e \u043d\u0438 \u0437\u0432\u0443\u0447\u0430\u043b\u043e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u044f \u043c\u043e\u0433\u0443 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0435\u0441\u0442\u044c \u00ab\u0441\u0442\u0438\u043b\u044c\u00bb. \u0412\u0435\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u0448 \u0441\u0442\u0438\u043b\u044c \u00ab\u0433\u0440\u044f\u0437\u043d\u044b\u043c\u00bb \u043a\u0430\u043a \u0432 \u043f\u0438\u0441\u044c\u043c\u0435 \u0410. \u0418\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u0438\u0442\u0440\u044b\u043c \u0438 \u0432\u044b\u0447\u0443\u0440\u043d\u044b\u043c \u043a\u0430\u043a \u0443 \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 \u0412. \u0418\u043b\u0438 \u0447\u0438\u0441\u0442\u044b\u043c \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043d\u0435 \u043b\u0438\u0448\u0435\u043d\u043d\u044b\u043c \u0434\u043e\u043b\u0438 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0421.<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043d\u0435 \u0431\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u043d\u043e\u0439, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0434\u0430.<\/p>\n<h3>\u041e\u0431\u0440\u0430\u0437\u0446\u044b \u0441\u0442\u0438\u043b\u044f<\/h3>\n<p>\u042f \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c C#, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u043e \u0438\u0445 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438, \u0441\u0443\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e \u0410 \/ \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u043d\u044b\u0439, \u0433\u0440\u044f\u0437\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c<\/strong><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043c\u043d\u0435 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0431\u044b\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u043c\u043d\u0435 \u0434\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0418 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043b\u044e\u0434\u044c\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u00ab\u043f\u043e\u043b\u043e\u0442\u0435\u043d\u00bb (\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438 \u0441\u0432\u043e\u0438 \u0432\u0437\u0433\u043b\u044f\u0434\u044b). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u043b\u0430\u0431\u043e\u0435 \u0441\u0435\u0440\u0434\u0446\u0435, \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442 \u0433\u0440\u0435\u0445\u0430 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0426\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0413\u043e\u0441\u043f\u043e\u0434\u0438 \u0411\u043e\u0436\u0435, \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u0438\u0442 \u043c\u043e\u0437\u0433\u2026<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21161<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class record {   public string mdate_time = \"\";   public string date_time   {     get{ return mdate_time; } set { mdate_time = value; }   }   public string mname = \"\";   public string name   {     get { return mname; } set { mname = value; }   }   public int mquantity = 0;   public int qty   {     get { return mquantity; }     set {       if (value &lt; 0) value = 0;       mquantity = value;     }   } }  public void RunProc(List&lt;records> input) {   records r;   SqlConnection s;   SqlCommand cmd;   int index;   int index2;   int foundIndex;   var grp = new List&lt;records>();   index = 0;   while (index &lt; input.Count)   {     r = input[index];     index2 = 0;     foundIndex = -1;     while (index2 &lt; grp.Count)     {       if (grp[index2].name == input[index].name)       {         foundIndex = index2;         break;       }       index2++;     }     if (foundIndex > -1)     {       grp[foundIndex].qty = grp[foundIndex].qty + input[index].qty;     } else grp.Add(input[index]);     index++;   }   index = 0;   while (index &lt; grp.Count)   {     r = grp[index];     s = new SqlConnection(connnection_t); s.Open();     try     {       cmd = new SqlCommand(\"insert into [item_table] (time, product_name, qty) values (@time, @pn, @q)\", s);       cmd.Parameters.AddWithValue(\"time\", DateTime.Parse(r.date_time));       cmd.Parameters.AddWithValue(\"pn\", r.name);       cmd.Parameters.AddWithValue(\"q\", r.qty);       cmd.ExecuteNonQuery();     }     catch (Exception)     { }     finally{ s.Close();    }     index++;  } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u044d\u0442\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043b\u043e\u0434 \u043c\u043e\u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433 \u0431\u044b \u0440\u0430\u0437\u0440\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c, \u0447\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. \u0423 \u043c\u0435\u043d\u044f \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u0438&#8230;<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u0443\u0432\u0430\u0436\u0435\u043d\u0438\u044f \u043a \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u043c \u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u044f\u0437\u044b\u043a. \u0414\u0430, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 12-\u043b\u0435\u0442\u043d\u0438\u0439 \u0440\u0435\u0431\u0435\u043d\u043e\u043a (\u043f\u043e\u0437\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440).<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e B \/ \u0421\u043b\u0435\u0433\u043a\u0430 <\/strong>\u00ab<strong>\u0437\u0430\u0443\u043c\u043d\u044b\u0439<\/strong>\u00bb<strong> \u0441\u0442\u0438\u043b\u044c<\/strong><\/p>\n<p>\u041a\u043e\u0434 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u044f\u0432\u043d\u043e \u0437\u0430\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0441 \u0441\u043e\u0431\u043e\u0439. \u0414\u0430, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u0447\u0435\u043c \u0432\u044b\u0448\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21162<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class ProductRecord {   public DateTime Timestamp { get; set; }   public string Name  {get; set; }   public int Quantity { get; set; } }  public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> input) {   const string SQL_TEMPLATE = \"INSERT INTO [ProductCount] (Timestamp, Name, Quantity) VALUES (\";   var grouped = input.GroupBy(r => r.Name)     .Select(g => new {       Timestamp = g.First().Timestamp,       Name = g.Key,       Quantity = g.Sum(e => e.Quantity)     }).ToArray();   int entryCount = grouped.Count();    var SQL = string.Join(\"\\n\", grouped.Select((g, index) => SQL + $\"@Timestamp{index},@Name{index},@Quantity{index});\"));   using (var sqlConn = new SqlConnection(connectionString))   {     sqlConn.Open();     using (var cmd = new SqlCommand(SQL, sqlConn))     {       for(int i = 0; i &lt; entryCount; i++)       {         cmd.Parameters.AddWithValue($\"@Timestamp{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Name{i}\", grouped[i].Timestamp);         cmd.Parameters.AddWithValue($\"@Quantity{i}\", grouped[i].Timestamp);       }       cmd.ExecuteNonQuery();     }   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043d\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043d\u043e\u0441\u043d\u044b\u043c. \u0414\u0430, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0443\u0442\u0430-\u0434\u0440\u0443\u0433\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 SQL_TEMPLATE \u0438 \u043a\u0430\u043a\u0430\u044f \u0446\u0435\u043b\u044c \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f. \u041d\u043e \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439, \u0445\u043e\u0442\u044f \u0438 \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441. \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c INSERT \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0441\u0451 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 VALUES, \u0438 \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410\u0432\u0442\u043e\u0440 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0446\u0438\u043a\u043b\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0445\u0443\u0434\u0448\u0435\u0435, \u043d\u043e \u0438 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043b\u0443\u0447\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041c\u0435\u0441\u0442\u0430\u043c\u0438 \u043e\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438\u043b\u0438 \u0437\u0430\u0443\u043c\u043d\u043e \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u043e \u0432 \u043a\u043e\u0440\u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u0410.<\/p>\n<p><strong>\u041f\u0438\u0441\u044c\u043c\u043e C \/ \u0427\u0438\u0441\u0442\u043e \u0438 \u044f\u0441\u043d\u043e<\/strong><\/p>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u0447\u0438\u0441\u0442\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u2014 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u00ab\u043e\u0442\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442 B.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u21163<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cs\">public class ProductRecord {   public DateTime Timestamp { get; set; }   public string Name  {get; set; }   public int Quantity { get; set; } }  public void GroupAndInsertProductRecords(IEnumerable&lt;ProductRecord> records) {   ProductRecord[] groupedRecords = GroupProductRecordsByName(records);    using (var sqlConn = OpenSqlConnection())   using (var sqlCommand = BuildBulkProductCountCommand(sqlConn, groupedRecords))   {     sqlCommand.ExecuteNonQuery();   }   }  private ProductRecord[] GroupProductRecordsByName(IEnumerable&lt;ProductRecord> records)   => records     .GroupBy(r => r.Name)     .Select(grp => new ProductRecord {       Timestamp = grp.First().Timestamp,       Name = grp.Key,       Quantity = grp.Sum(e => e.Quantity)     })     .ToArray();  private SqlConnection OpenSqlConnection() {   var sqlConnection = new SqlConnection(_ConnectionString);   sqlConnection.Open();   return sqlConnection; }  private SqlCommand BuildBulkProductCountCommand(SqlConnection sqlConnection, ProductRecord[] groups) {   StringBuilder commandTextBuilder = new StringBuilder(@\"     INSERT INTO [ProductCount] (Timestamp, Name, Quantity)     VALUES   \");    var command = new SqlCommand();   command.Connection = sqlConnection;    for(int i; i &lt; groups.Length - 1; i++)   {     commandTextBuilder       .Append(AddParametersAndGenerateValueRow(groups[i], i, command))       .AppendLine(\",\");   }      command.CommandText = commandTextBuilder     .AppendLine(AddParametersAndGenerateValueRow(groups[i], i, command))     .ToString();    return command; }  private string AddParametersAndGenerateValueRow(ProductRecord group, int index, SqlCommand command) {   command.Parameters.AddWithValue($\"@Timestamp{index}\", group.Timestamp);   command.Parameters.AddWithValue($\"@Name{index}\", group.Name);<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-336491","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/336491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=336491"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/336491\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=336491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=336491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=336491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}