Каталог

Помощь

Корзина

Мероприятия и рекомендации совершенствования информационной системы на предприятии ЗАО НПК ВИП

Оригинальный документ?

Реферат

 

Дипломная работа посвящена исследованию информационной системы предприятия ЗАО «НПК «ВИП»» и разработке мероприятий по ее модернизированию. Произведено изучение теоретических основ работы информационных систем на предприятиях. В работе произведена разработка клиент-серверного приложения контроля движения материальных ценностей на предприятии.

Работа состоит из пяти глав, введения и заключения, общим объемом 100 страниц. В работе содержится 7 таблиц, 5 рисунков и 2 приложения.


СОДЕРЖАНИЕ 

1  ТЕНДЕНЦИИ РАЗВИТИЯ ИНФОРМАЦИОННЫХ СИСТЕМ В СОВРЕМЕННЫХ РЫНОЧНЫХ УСЛОВИЯХ5

1.1 Сущность, цели, задачи и перспективы развития информационной системы5

1.2 Сущность, цели, задачи и перспективы развития информационной системы15

1.3 Проблемы развития и совершенствования информационных систем на предприятиях в условиях рынка22

2 КРАТКАЯ ХАРАКТЕРИСТИКА И ОСНОВНЫЕ НАПРАВЛЕНИЯ ДЕЯТЕЛЬНОСТИ, АНАЛИЗ ТЕКУЩЕЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ НА ПРЕДПРИЯТИИ ЗАО «НПК «ВИП»31

2.1 Характеристика и основные направления деятельности на предприятии31

2.2 Анализ текущего состояния информационной системы на предприятии36

2.3    Матрица SWOT-анализа информационной системы НПК38

3 МЕРОПРИЯТИЯ И РЕКОМЕНДАЦИИ СОВЕРШЕНСТВОВАНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ НА ПРЕДПРИЯТИИ ЗАО «НПК «ВИП»41

3.1 Разработка и реализация инвестиционного проекта развития и совершенствования информационной системы41

3.2 Создание базы данных приложения по контролю за движением материальных ценностей на производстве43

3.3    Оценка экономической эффективности реализации инвестиционного проекта51

4 БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ60

5   ПРИРОДОПОЛЬЗОВАНИЕ И ОХРАНА ОКРУЖАЮЩЕЙ СРЕДЫ71

ЗАКЛЮЧЕНИЕ77

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ79

ПРИЛОЖЕНИЕ A – Исходный код программы клиента контроля за движением материальных ценностей83

ПРИЛОЖЕНИЕ Б – Исходный код программы сервера контроля за движением материальных ценностей93


 ВВЕДЕНИЕ

 

Современный этап развития человеческой цивилизации характеризуется переходом к так называемому информационному обществу, в котором в результате процессов информатизации и компьютеризации информационные технологии во всех сферах деятельности играют более важную роль, нежели индустриальные, аграрные и др. Как отмечал академик А.П. Ершов, информатизация – всеобщий неизбежный период развития цивилизации, период освоения информационной картины мира, осознания единства законов функционирования информации в природе и обществе, практического их применения, создания индустрии производства и обработки информации.

В связи с этим решение проблем рационального использования современных и перспективных методов и средств обработки информации в практической (профессиональной) деятельности людей приобретает первостепенное значение. Это обусловлено рядом причин. Во-первых, таковы актуальные потребности общества, связанные с необходимостью решения все более усложняющихся политических, экономических, военных и других проблем различного масштаба (глобальных, региональных, государственных, национальных и т.п.) Во-вторых, это единственный путь значительного (а в ряде случаев – кардинального) повышения эффективности профессиональной деятельности человека. В-третьих, широкое распространение получили технические и программные средства, позволяющие реализовать новые технологии при приемлемом расходовании ресурсов. Наконец, пользователями этих технологий становятся все большее число людей (по некоторым оценкам, к пользователям компьютерных технологий во многих странах может быть отнесено все трудоспособное население) [5, c. 9-10].

Цель данного проекта изучение текущего состояния и совершенствование информационной системы на предприятии ЗАО «НПК «ВИП».

Задачами проекта являются изучение вопросов текущего положения информационных систем в работе коммерческих предприятий, тенденции и проблемы их развития и совершенствования. Оценка информационной системы на предприятии. На основе анализов и исследований текущей работающей информационной системы на предприятии, следует выработать методы по улучшению системы, исключить ее слабые точки. Также будет разработана система за контролем движения материальных ценностей на территории предприятия.

В качестве объекта исследования в данном проекте выступает ЗАО «Научно Производственный Комплекс «Вторичные Источники Питания»

За основу будут взяты текущие показатели компании за 2012г.

Фирма «НПК «ВИП» специализируется на выпуске высокотехнологической продукции, а также инженерными и научными разработками на заказ. В связи с таким профилем деятельности, предприятию необходима современная, стабильная и гибкая информационная система.

В первой главе рассматриваются теоретические вопросы анализа текущего положения дел на рынке информационных систем для предприятий, изучается история развития информационных систем, разбираются методы внедрения автоматизированных систем в работу предприятия. Подробно изучаются тенденции развития текущих информационных систем.

Во второй главе даётся краткая характеристика, и изучаются основные направления деятельности предприятия, проводится анализ текущей информационной системы на предприятии.

Третья глава описывает разрабатываемые мероприятия для улучшения и модернизация информационной системы и расчеты эффективности.

В четвертой главе рассмотрены вопросы безопасности жизнедеятельности и охраны труда в ЗАО «НПК «ВИП».

Пятая глава посвящена природопользованию и охране окружающей среды на ЗАО «НПК «ВИП».


1 ТЕНДЕНЦИИ РАЗВИТИЯ ИНФОМАЦИОННЫХ СИСТЕМ В СОВРЕМЕННЫХ РЫНОЧНЫХ УСЛОВИЯХ


1.1Сущность, цели, задачи и перспективы развития информационной системы

  

Наметившийся в России переход к рыночной экономике требует новых подходов к управлению: на первый план выходят экономические, рыночные критерии эффективности, повышаются требования к гибкости. Научно-технический прогресс и динамика внешней среды заставляют современные предприятия превращаться во всё более сложные системы, для которых необходимы новые методы обеспечения управляемости. Новым словом в управлении стало появление контроллинга как функционально обособленного направления экономической работы на предприятии, связанного с реализацией финансово-экономической комментирующей функции в менеджменте для принятия оперативных и стратегических управленческих решений.

Контроллинг - это управление управлением. Собственно термин «контроллинг» (от англ. to control - контролировать, управлять) принят в Германии, откуда он и пришёл в Россию. В Великобритании и США он практически не используется. Там укоренился термин «управленческий учёт» - managerial accounting. В экономическом менеджменте России пока используются оба этих термина. Однако термин «контроллинг» более информационно ёмкий, так как включает в себя не только чисто учётные функции, но и весь спектр управления процессом достижения конечных целей и результатов фирмы [10, с. 120].

Для этого контроллинг обеспечивает выполнение ряда следующих функций:

- координации управленческой деятельности по достижению целей предприятия;

- информационной и консультационной поддержки принятия управленческих решений;

- создания условий для функционирования общей информационной системы управления предприятием;

- обеспечения рациональности управленческого процесса [10, с. 121].

Если принять во внимание перечисленные цели и функции контроллинга, то можно сказать, что он является своеобразным механизмом саморегулирования на предприятии, в корпорации, холдинге, осуществляющем обратную связь в контуре управления.

Занимая особое место в системе управления предприятием, контроллинг способствует информационному обеспечению принятия решений в целях оптимального использования имеющихся возможностей, объективного оценивания сильных и слабых сторон предприятия, а также во избежание банкротства и кризисных ситуаций.

Можно утверждать, что эффективная деятельность современного предприятия возможна только при наличии единой корпоративной (комплексной) системы, объединяющей управление финансами, персоналом, снабжением, сбытом и процесс управления производством. Такие системы стали рассматриваться как средство достижения основных целей бизнеса: улучшения качества выпускаемой продукции, увеличении объёма производства, занятия устойчивых позиций на рынке и победы в конкурентной борьбе [10, с. 121].

Требования, предъявляемые к корпоративной информационной системе, не зависят от формы собственности и сферы деятельности предприятия, а её программные модули должны соответствовать бизнес-процессам, функции автоматизированных рабочих мест - должностным обязанностям сотрудников. При выборе программно-аппаратных платформ и отдельных бизнес-приложений должны применяться непротиворечивые, согласующиеся технологии, соблюдаться единая технология эксплуатации и обслуживания системы.

Помимо этих ключевых требований есть ряд общих технических требований для любой информационной системы:

-  быстродействие, т.е. достаточно малое время реакции системы (единицы секунды) при вводе, поиске и обработке информации;

-  надёжная защита от несанкционированного доступа к данным и регистрации действий персонала;

-  удобный пользовательский интерфейс рабочих мест;

-  возможность масштабирования и развития системы;

-  интеграция с модулями системы передачи данных;

- возможность конвертации данных из использовавшихся в прошлом приложений в новую систему;

-  высокая надёжность работы [10, с. 121].

Технология построения системы «как надо», без попыток программирования действующих сейчас алгоритмов.

Практика создания систем по модели «как есть» показала, что автоматизация без реинжиниринга бизнес-процессов и модернизации существующей системы управления не приносит желаемых результатов и неэффективна. Ведь использование в работе программных приложений - это не просто сокращение бумажных документов и рутинных операций, но и переход на новые формы ведения документооборота, учёта и отчётности.

Если решение об автоматизации принято и одобрено высшим руководством, то внедрение программных модулей осуществляется с головных предприятий и подразделений, а процесс построения корпоративной системы проходит гораздо быстрее и эффективнее, чем при внедрении системы первоначально в низовые подразделения. Только при внедрении сверху вниз и активном содействии руководства можно изначально правильно оценить и провести весь комплекс работ без незапланированных издержек.

В ходе комплексной автоматизации фирмой-интегратором меняются функции отделов информационных технологий фирмы-заказчика и возрастает их роль в общем процессе перехода предприятия на прогрессивные методы управления. Во время реализации проекта сотрудники отделов вместе с разработчиками работают с информацией и моделями, участвуют в выборе технологических решений и, самое главное, организуют взаимодействие поставщиков решения и сотрудников предприятия. При эксплуатации информационной системы на плечи сотрудников автоматизированных систем управления ложатся обслуживание и сопровождение системы (если не заключается договор на сопровождение с фирмой-поставщиком). Специалисты заказчика являются инициаторами и исполнителями подготовки предложений по совершенствованию и развитию существующей системы. Это позволяет им лучше приспособить её к своим требованиям, поэтому последние должны быть основательно продуманы, чтобы информационные технологии не использовались там, где можно справиться с задачами управления посредством карандаша и листа бумаги.

Поэтому характерными чертами систем комплексной автоматизации являются индивидуальность и чёткая направленность на решение проблем конкретного предприятия [10, с. 123].

В настоящее время стало ясно, что проблема, как автоматизировать процессы бизнеса, должна быть переформулирована в проблему, как получить наибольшую отдачу от инвестиций в информационные технологии, и, как следствие, что нужно изменить в бизнес-процессах, чтобы внедрение информационных технологий дало наибольший положительный эффект.

В условиях рыночной конкуренции все предприятия сталкиваются с необходимостью постоянного повышения эффективности собственного бизнеса. Эта задача решается различными путями. На одних предприятиях действуют собственные подразделения, комиссии и комитеты, которые ведут постоянную работу по совершенствованию бизнеса. Этот путь получил в литературе название «внутренний консалтинг». Другой путь заключается в привлечении к идентификации проблем бизнеса и соответственно их решению специализированных компаний, оказывающих консультационные услуги [10, с. 124].

Для реализации полномасштабного консалтингового проекта, включающего реорганизацию системы управления предприятием, реинжиниринг бизнес-процессов, выбор и внедрение комплексной информационной системы, необходимо привлечение квалифицированных специалистов в предметных областях (финансовом планировании, бухгалтерском учёте, делопроизводстве т.д.), технологов, системных аналитиков, специалистов автоматизированных систем управления технологических процессов, в области программно-аппаратных платформ.

Из общеизвестных методик, применяемых для анализа бизнес-процессов, может использоваться Oracle Method корпорации Oracle, а для достижения высоких стандартов качества при управлении консалтинговыми проектами - методика Project Management Method той же корпорации. Их совместное применение (корпорация Oracle более 20 лет выполняет проекты в области реинжиниринга бизнес-процессов) позволяет реализовать проекты с высоким качеством. Инструментальная поддержка осуществляется с использованием CASE-пакета Oracle-Designer/2000, имеющего полнофункциональный набор средств для разных стадий проекта - начиная от моделирования системы на уровне бизнес-процессов и функций и заканчивая поддержкой генерации исполняемого кода прикладной системы.

При выполнении работ по консалтингу используют проектно-ориентированный подход, полностью соответствующий Project Management Method.

Управление проектом, построенным по методике Project Management Method, осуществляется с помощью следующих процессов: управления отчётностью, планирования работ, управления ресурсами, качеством и результатами работ [10, с. 125].

При реинжиниринге бизнес-процессов в первую очередь формулируются основные проблемы и потребности бизнеса и строятся модели бизнес-процессов, включающие в себя все события и последовательности выполнения операций, которые должна поддерживать информационная система. Затем строится функциональная модель, детализирующая каждую функцию модели бизнес-процессов.

Когда потребности бизнеса определены, формируются рекомендации по изменениям организационной структуры предприятия и структуре бизнес-процессов. Если в ходе работ по реинжинирингу бизнес-процессов внедряются информационные системы, то в рамках этих же работ требования к бизнес-модели конвертируются в требования к информационной системе.

Если реинжиниринг бизнес-процессов сопровождается созданием информационной системы поддержки бизнеса (системы поддержки принятия управленческих решений, управления или учёта), параллельно с определением процедур, моделей данных и функциональной иерархии проводятся технический аудит существующей системы и разработка технической архитектуры. Процесс разработки последней определяет базовые принципы технического построения системы, допускает, что стратегия создания информационной системы уже определена и элементы архитектуры будут лежать в пределах этой стратегии, а также обеспечивает стратегию по безопасности данных и контролю доступа, интерфейсов пользователей, копирования и восстановления данных [10, c. 128].

До второй половины 19 века основу информационных технологий составляли перо, чернильница и бухгалтерская книга. Коммуникация (связь) осуществляется путем направления пакетов (депеш). Продуктивность информационной обработки была крайне низкой, каждое письмо копировалось отдельно вручную, помимо счетов, суммируемых так же вручную, не было другой информации для принятия решений.

На смену «ручной» информационной технологии в конце 19 века пришла «механическая». Изобретение пишущей машинки, телефона, диктофона, модернизация системы общественной почты – все это послужило базой для принципиальных изменений в технологии обработки информации и, как следствие, в продуктивности работы. По существу «механическая» технология проложила дорогу к формированию организационной структуры существующих учреждений.

40 - 60-е гг. 20 века характеризуются появлением «электрической» технологии, основанной на использовании электрических пишущих машинок со съемными элементами, копировальных машин на обычной бумаге, портативных диктофонов. Они улучшили учрежденческую деятельность за счет повышения качества, количества и скорости обработки документов.

Появление во второй половине 60-х годов больших производительных электронно-вычислительных машинах на периферии учрежденческой деятельности (в вычислительных центрах) позволило смесить акцент в информационной технологии на обработку не формы, а содержания информации. Это было началом формирования «электронной», или «компьютерной» технологии. Как известно информационная технология управления должна содержать как минимум 3 важнейших компонента обработки информации: учет, анализ и принятие решений. Эти компоненты реализуются в «вязкой» среде - бумажном «море» документов, которое становится с каждым годом все более необъятным.

Сложившиеся в 60-х годах концепции применения автоматизированных систем управления не всегда и не в полной мере отвечают задаче совершенствования управления и оптимальной реализации компонентов информационной технологии, методологически эти концепции нередко опираются на представления о неограниченных возможностях «кнопочной» информационной технологии при непрерывном наращивании вычислительной мощности систем автоматизированных систем управления в применении наиболее общих имитационных моделей, которые в ряде случаев далеки от реального механизма оперативного управления.

Название «автоматизированная система управления» не совсем корректно отражает функции, которые такие системы выполняют, точнее было бы «автоматизированные системы обеспечения управления», ибо в существующих автоматизированных системах управления, понятие «система» не включает решающего звена управления – пользователя. Игнорирование этого принципиального обстоятельства, по видимому, привело к тому, что расширение сети автоматизированных систем управления и повышение мощности их вычислительных средств обеспечили благодаря большим массивам первичных данных улучшение в основном учетных функций управления (справочных, статистических, следящих). Однако учетные функции отражают только прошлое состояние объекта управления и не позволяют оценить перспективы его развития т.е. обладают низким динамизмом. 

В других компонентах технологии управления наращивание мощности автоматизированных систем управления не дало ощутимого эффекта. Отсутствие развитых коммуникационных связей рабочих мест пользователя с центральной электронно-вычислительной машиной, характерный для большинства автоматизированных систем управления пакетный режим обработки данных, низкий уровень аналоговой поддержки - все это фактически не обеспечивает высокого качества анализа пользователями данных статистической отчетности и всего интерактивного уровня аналитической работы. Тем самым эффективность автоматизированных систем управления на нижних ступенях управленческой лестницы, т.е. именно там, где формируются информационные потоки, существенно падает вследствие значительной избыточности поступающей информации при отсутствии средств агрегирования данных. 

Именно по этой причине, не смотря на ввод дополнительной автоматизированной системы управления, с каждым годом возрастает количество работников, занятых учетными функциями: на сегодняшний день шестую часть всех работников аппарата управления составляет учетно-бухгалтерский персонал [2, c. 30].

Начиная с 70-х годов сформировалась тенденция перенесения центра тяжести развития автоматизированных систем управления на фундаментальные компоненты информационных технологий (особенно на аналитическую работу) с максимальным применением человеко-машинных процедур. Однако по-прежнему вся эта работа проводилась на мощных машинах, размещенных централизованно в вычислительных центрах. При этом в основу построения подобных автоматизированных систем управления положена гипотеза, согласно которой задачи анализа и принятия решений относились к классу формализуемых, поддающихся математическому моделированию. 

Предполагалось, что такие автоматизированные системы управления должны повысить качество, полноту, подлинность и своевременность информационного обеспечения лиц, принимающих решения, эффективность работы которых будет возрастать благодаря увеличения числа анализируемых задач.

Однако внедрение подобных систем дало весьма отрезвляющие результаты. Оказалось, что применяемые экономико-математические модели имеют ограниченные возможности практического использования: аналитическая работа и процесс принятия решений происходят в отрыве от реальной ситуации и не подкрепляются информационным процессом формирования. Для каждой новой задачи требуется новая модель, а поскольку модель создавалась специалистами по экономико-математическим методам, а не пользователем, то процесс принятия решений происходит как бы не в реальном времени и теряется творческий вклад самого пользователя, особенно при решении нетиповых управленческих задач. При этом вычислительный потенциал управления, сосредоточенный в вычислительных центрах, находится в отрыве от других средств и технологий обработки информации вследствие не эффективной работы нижних ступеней и необходимости непрерывных конверсий информации. Это так же понижает эффективность информационной технологии при решении задач на верхних ступенях управленческой лестницы. К тому же для сложившейся в автоматизированных системах управления организационной структуры технических средств характерны низкий коэффициент их использования, значительные сроки (не всегда выполняемые) проектирования автоматизированных систем и не высокая их рентабельность из-за слабого воздействия результатов автоматизации на эффективность управления [2, c. 34].

С появлением персональных компьютеров на «гребне микропроцессорной революции» происходит принципиальная модернизация идеи автоматизированной системы управления: от вычислительных центров и централизации управления, к распределенному вычислительному потенциалу, повышению однородности технологии обработки информации и децентрализации управления. Такой подход нашел свое воплощение в системах поддержки принятия решений  и экспертных системах, которые характеризуют новый этап компьютеризации технологии организационного управления по существу – этап персонализации автоматизированных систем управления. 

Системность – основной признак системы поддержки принятия решений и признание того, что самая мощная ЭВМ не может заменить человека. В данном случае речь идет о структурной человеко-машинной единице управления, которая оптимизируется в процессах работы: возможности ЭВМ расширяются за счет структуризации пользователем решаемых задач и пополнения ее базы знаний, а возможности пользователя – за счет автоматизации тех задач, которые ранее было нецелесообразно переносить на ЭВМ по экономическим или техническим соображениям. Становится возможным анализировать последствия различных решений и получать ответы на вопросы типа: «что будет, если . . .?», не тратя времени на трудоемкий процесс программирования.

Важнейший аспект внедрения системы поддержки принятия решений и экспертных системах рационализация повседневной деятельности работников управления. В результате их внедрения на нижних ступенях управления существенно укрепляется весь фундамент управления, уменьшается нагрузка на централизованные вычислительные системы и верхние ступени управления, что позволяет сосредоточить в них вопросы решения крупных долгосрочных стратегических задач. Естественно, что компьютерная технология системы поддержки принятия решений должна использовать не только персональные компьютеры, но и другие современные средства обработки информации

Концепция системы поддержки принятия решений требует пересмотра существующих подходов к управлению трудовыми процессами в учреждении. По существу на базе системы поддержки принятия решений формируется новая человеко-машинная трудовая единица с квалификацией труда, его нормированием и оплатой. Она аккумулирует знания и умения конкретного человека (пользователя системы поддержки принятия решений) с интегрированными знаниями и умениями, заложенными в персональных ЭВМ [2, c. 36].

 


1.2Сущность, цели, задачи и перспективы развития информационной системы

 

Необходимость успешного функционирования в условиях жесткой конкурентной среды диктует свои требования к эффективности бизнес-процессов предприятия. Решение задачи повышения эффективности неразрывно связано с обеспечением информационной поддержки процессов, поэтому сегодня практически ни у кого не вызывает сомнения необходимость построения информационной системы предприятия. Большинство людей, принимающих решения в этой области, разделяют мнение, что вопросы построения информационной системы следует решать в контексте задач совершенствования бизнес-процессов. Существует также ясное понимание того, что максимально эффективной будет система, обеспечивающая непрерывное информационное сопровождение производственного цикла - от разработки нового изделия до выпуска готовой продукции.

В то же время, несмотря на высокую готовность предприятий к внедрению информационных систем, подходы к их построению и методам внедрения, мягко говоря, разнообразны. При этом любое предприятие, приступающее к внедрению информационной системы, стремится осуществить этот процесс в минимальные сроки и с высоким качеством, предъявляя в связи с этим повышенные требования к организации процесса внедрения. Современные методы внедрения основаны на так называемом процессном подходе, а само внедрение такого рода принято называть процессно-ориентированным или просто процессным. Прежде всего, в такой системе необходима возможность воспроизведения бизнес-процессов предприятия, а также наличие инструментов для их совершенствования. Среди прочих требований ключевыми являются наличие единой информационной среды и возможность совместной работы пользователей с одними и теми же информационными объектами.

Известно, что в основе процессов производственного планирования и управления лежит информация, появляющаяся на стадии конструкторской и технологической подготовки производства. Следовательно, эффективность работы всей информационной системы напрямую зависит от актуальности и полноты данных, получаемых на этой стадии. Другими словами, конструкторская и технологическая подготовка производства служат информационной основой для решения производственных вопросов.

Автоматизация работы конструкторов и технологов начиналась с развития автоматизированных рабочих мест, то есть средств для решения инженерных задач и выпуска соответствующей документации. С появлением больших объемов информации в электронном виде возникла потребность этой информацией управлять. Таким образом, результаты работы локальных средств автоматизации интегрируются третьей системой, а локальные автоматизированные рабочие получают возможность пользоваться общей справочной информацией.

Под бизнес-процессом принято понимать цепь логически связанных повторяющихся действий, которые совместно реализуют некую бизнес-задачу или цель предприятия. Современная процессно-ориентированная организация - это совокупность специализированных функциональных отделов с одной стороны и совокупность бизнес-процессов - с другой. В каждом из отделов реализуются конкретные функции бизнес-процессов, а сотрудники таких организаций, помимо традиционного функционального подчинения, в рамках выполняемых бизнес-процессов подчиняются соответствующим владельцам этих процессов.

Приходится признать, что сегодня многие машиностроительные предприятия России являются функционально-ориентированными организациями, структура которых, в отличие от процессных организаций, имеет вертикальную топологию, построенную в соответствии с выполняемыми функциями, и строгую иерархическую подчиненность сверху вниз.

К недостаткам такой организации относятся и отсутствие владельцев процессов, ответственных за конечный результат, и наличие непроизвольной разрушительной конкуренции между подразделениями, и оторванность сотрудников от конечного результата. Бизнес-процессы таких предприятий сегментированы, то есть существуют в рамках отдельно взятых функциональных подразделений, а эффективность функций, выполняемых отдельными структурами, зачастую достигается в ущерб эффективности всего процесса. На подобных предприятиях чрезвычайно усложнены взаимодействие и обмен информацией между подразделениями, а попытка внедрить там информационную систему путем последовательной автоматизации отдельных функций приводит в лучшем случае к невозможности интегрировать внедренную функциональность, а в худшем - к провалу проекта. Таким образом, затратив значительные средства, предприятие не получает ожидаемой отдачи от инвестиций [6, с. 89].

При внедрении информационных систем в функционально-ориентированных организациях весьма остро встает проблема перестройки деятельности предприятия в контексте осмысления и совершенствования бизнес-процессов. Изменить ситуацию и призван процессный подход, то есть применение в организации системы процессов наряду с их идентификацией и взаимодействием, а также менеджмент процессов. Преимущества этого подхода становятся очевидны при сравнении процессной и функциональной организаций, а дополнительным аргументом в его пользу является ориентированность на применение процессного подхода в системе менеджмента качества.

Функциональными или процессными могут быть и подходы к внедрению информационных систем. При этом существенные различия этих двух подходов хорошо заметны уже на стадии подготовки проекта внедрения.

Если предприятие собирается автоматизировать деятельность отдельных сотрудников или служб, то налицо функциональный подход: стремление автоматизировать отдельные функции предприятия. Наилучший из возможных результатов такой автоматизации - сокращение сроков выполнения и повышение качества этих. При этом от системы обычно требуется обеспечить пользователям максимум удобства при выполнении соответствующих функций, а вопросы дальнейшего использования появляющейся информации отодвигаются на второй план.

Гораздо большего эффекта можно добиться, применив процессный подход и осуществив процессное внедрение. Объектом автоматизации в этом случае служат сквозные бизнес-процессы - следовательно, при постановке задачи очень важно правильно идентифицировать те из них, которые должны быть реализованы с использованием информационной системы. Разумеется, выбор автоматизируемых процессов должен соответствовать корпоративной стратегии повышения эффективности. 

Выбранные бизнес-процессы подвергаются анализу и затем проектируются с точки зрения реализации в информационной системе. При таком подходе достигается синергический эффект от автоматизации отдельных функций, поскольку в системе организуется совместная деятельность сотрудников и служб предприятия. На основании спроектированных процессов определяется объем внедряемой функциональности (конфигурация рабочих мест), которая покрывает потребности процессов, и только после этого происходит реализация выбранных процессов в системе [6, с. 95].

Деятельность, предшествующая реализации, относится к стадии подготовки проекта внедрения. В случае функционального внедрения подготовка занимает непродолжительное время: на начальных этапах функциональный подход может принести быстрый результат. Подготовка процессного внедрения требует довольно продолжительного времени и более существенных затрат, зато обеспечивает результаты принципиально иного уровня, многократно превосходящие все возможные преимущества первого варианта.

Говоря о процессном внедрении, нельзя не упомянуть об инструментарии, применяемом для моделирования бизнес-процессов. Сам по себе процессный подход не предъявляет особых требований к инструментам описания и проектирования бизнес-процессов, однако использование специализированных инструментов вместо стандартных офисных программ имеет массу неоспоримых преимуществ.

Рассмотрим несколько типичных случаев автоматизации на производственном предприятии.

Подразделения предприятия используют только бумажные документы. Получая информацию в виде документов из внешнего мира или из других подразделений, они обрабатывают ее в соответствии со своими функциями, порождая при этом новые документы, которые являются входными для других служб или предназначены для отправки во внешний мир.

Основной носитель информации в этом случае - документ, обработка информации носит последовательный характер [13, с. 60].

Наряду с прямым использованием бумажных документов часть из них вводится в систему для последующей обработки и получения сводной информации. Сводные данные (опять же в виде бумажных документов) используются службами-потребителями этой информации. При всех очевидных достоинствах такой способ имеет не менее очевидные недостатки. Достаточно сказать, что база данных предприятия отделена документами от источника информации (конструктора, технолога) и ее потребителя (служб, плановых, производственных подразделений). На ввод информации тратится определенное время - следовательно, снижается уровень актуальности данных, увеличивается вероятность ошибок, как при вводе, так и при использовании данных.

В этом случае, несмотря на появление централизованного хранилища информации (базы данных), характер бизнес-процессов по сравнению с первым вариантом практически не меняется. Остается неизменным и последовательный характер обработки информации.

Когда предприятие по отдельности автоматизирует те или иные функции, имеет место так называемая лоскутная автоматизация. Качество реализации этих функций, несомненно, становится выше, сокращается и время их выполнения, однако результаты работы локальных систем воплощаются в виде все тех же документов. Не меняется и способ обработки документов (в том числе при взаимодействии с АСУП), причем совершенно неважно, идет ли речь о выводе документов на бумагу или об обмене электронными файлами.

Единая информационная среда источников и потребителей информации прежде всего позволяет кардинально изменить назначение бумажного документа и рассматривать его не как носитель информации, а как отчет, сформированный на основе соответствующего информационного объекта базы данных. Таким образом, бумажный документ становится носителем юридического статуса и представляет собой набор данных из базы, распечатанный на бланке. При этом файл (электронный документ) сохраняется в централизованном электронном архиве, являющемся неотъемлемой частью системы, и связывается с объектом базы данных, на основании которого он был получен. Создатели информации (конструкторы, технологи) и ее потребители работают с соответствующим информационным объектом напрямую, имея при этом доступ к электронным документам в рамках прав, предоставленных им системой.

Рассмотрим основные преимущества рассматриваемого способа работы - с точки зрения организации процессов на предприятии:

-   реальная совместная работа с информацией в большинстве случаев позволяет перейти от последовательного способа обработки информации к параллельному. Другими словами, появляется возможность распараллелить бизнес-процесс, значительно сократить сроки разработки и сэкономить время для таких операций, как согласование, утверждение документации, внесение конструкторских и технологических изменений;

-  работа в единой информационной среде делает процесс прозрачным и управляемым; каждый его участник видит и результат, и собственную роль в процессе. Подобная организация работы позволяет выстроить в рамках процесса цепочки взаимодействия функциональных подразделений и отдельных сотрудников;

-  при проектировании процессов с учетом использования информационной системы, как правило, выявляется ряд документов, полностью или частично дублирующих друг друга, а также такие документы, которые вообще могут быть выведены из употребления, поскольку содержащаяся в них информация может быть получена гораздо более эффективным способом;

документ, получаемый в виде отчета из базы данных и сохраненный в архиве, становится частью информационной базы предприятия и его интеллектуальной собственностью. Это снижает влияние человеческого фактора, а также риск искажения или утраты информации [13, с. 69].

К сожалению, перечисленные нами плюсы подобного способа работы с информацией создают определенные проблемы при внедрении информационных систем. Функциональные подразделения предприятия обычно предпочитают сами наводить порядок в своей функциональной области и не склонны становиться частью большого целого. Подразделение стремится оттачивать и совершенствовать собственные функции, не слишком задумываясь об эффективности всего процесса и без особого энтузиазма воспринимая необходимость реорганизации деятельности в соответствии с требованиями оптимизации бизнес-процессов.

Принципы, на которых базируются современные информационные системы, предполагают организацию совместной деятельности сотрудников предприятия и являются выражением процессного подхода. Принимая процессный подход, предприятие в обязательном порядке должно принять концепцию процессного внедрения и согласиться с ней. В противном случае проект будет обречен на неудачу с самых первых шагов [13, с. 71].

 

1.3Проблемы развития и совершенствования информационных систем на предприятиях в условиях рынка

 

Осознав необходимость использования на предприятии корпоративной информационной системы, надо иметь в виду – это не просто инсталляция программного обеспечения на рабочих местах предприятия, а сложный процесс, требующий:

Доработку программного обеспечения в соответствии с задачами и  стандартами предприятия.

Корректировку некоторых бизнес-процессов предприятия для соответствия мировым стандартам, заложенным в системе – так называемый реинжиниринг бизнес-процессов. Ведь сильно видоизменив программный продукт, в дальнейшем придется самостоятельно заниматься сопровождением программы, так как новые версии могут не учитывать сделанных модификаций, что приведет к новым расходам.

Приняв решение о внедрении, необходимо провести серьезный анализ существующих информационных систем, понять какая система наиболее полно удовлетворяет потребностям и целям предприятия. При выборе программы, надо быть очень внимательным и помнить:

Многие западные программные продукты требуют дополнительной адаптации с российским делопроизводством. В системах зашит методологический опыт западных стран, который может оказаться совершенно бесполезным при внедрении на российском предприятии, а специфика российского бизнеса может быть совсем не учтена.

Некоторые западные продукты не соответствуют российскому законодательству, что создает ряд проблем при внедрении и эксплуатации.

Российские программы при всей своей адаптивности под российское предприятие могут не обеспечивать столь же широкой и продуманной, как на Западе, функциональностью.

Важен тип архитектуры системы: открытый или закрытый. При установке открытой системы появляется возможность ее самостоятельной модификации и адаптации, что значительно снижает затраты предприятия на сопровождение программы.

На современном этапе развития систем контроля предприятия наиболее эффективно работают  системы, совместимые с другими приложениями и подсистемами.

Выбрав программу, следует иметь в виду, что это только лишь начальный этап. Не менее важен и выбор команды, которая будет ее на предприятии устанавливать. Следует помнить: у команды должно быть абсолютно четкое видение результата, представление о том, как должны взаимодействовать все элементы программы, как должны осуществляться производственные процессы.

Необходима и точная информация о команде внедрения. Компания может иметь значительный опыт внедрения систем контроля предприятия на различных предприятиях, но люди, работавшие на проектах, могли уйти. Поэтому необходимы доказательства того, что именно эти люди уже внедряли систему.

Проблемы внедрения не ограничиваются выбором программы и команды внедрения. Руководителю предприятия необходимо иметь в виду следующие сложности, которые нередко возникают в процессе установки системы:

Состояние бизнес-процессов на предприятии до внедрения. Руководителю предприятия необходимо понимать, что перед внедрением системы надо привести в порядок все бизнес-процессы компании, подготовить нормативно-справочную базу. Без этого будет тяжело обеспечить нормальное функционирование системы контроля предприятия. 

Специалисты с большим опытом внедрения информационных систем в России любят повторять фразу: «Хаос автоматизировать нельзя». Именно для решения этой проблемы при помощи консультантов из команды внедрения осуществляется реинжиниринг бизнес-процессов предприятия.

Поддержка со стороны персонала предприятия. Довольно частым явлением в практике внедрения систем контроля предприятия является саботаж процесса внедрения программного продукта со стороны персонала. Команда внедрения сталкивается с серьезными проблемами: сотрудники не понимают, зачем нужна новая система, они не готовы к современным методам работы, боятся новшеств, не осознают значение автоматизации. Все это осложняет и без того сложный процесс внедрения, который предполагает работу команды внедрения и предприятия в тесном сотрудничестве и взаимодействии. Немаловажным аспектом является и степень компетенции сотрудников. Для эффективной работы уже внедренной системы необходима определенная квалификация сотрудников. Если персонал не знает, как работать с компьютером, успешная работа современной системы представляется маловероятной.

Мотивация руководящего звена. Успех перехода предприятия к новой системе управления во многом зависит от позиции руководителя компании. Нельзя недооценивать роль личного участия в процессе. Особенно с учетом российских реалий, следует иметь в виду, что без активной поддержки и внимания со стороны руководителя не удастся достигнуть ожидаемого эффекта. При этом важнейшим фактором успешного внедрения становится мотивация руководящего звена. Для создания рабочей атмосферы и в избежание случаев саботажа, руководителю предприятия целесообразно отдать проект внедрения под личную ответственность одного из ведущих менеджеров компании. Тогда при тесном взаимодействии процесс внедрения не будет осложняться непредвиденными препятствиями или задержками [15, с. 29].

Не требует доказательств тот факт, что одним из важных источников минимизации издержек и затрат предприятия и оптимизации методов ведения бизнеса, в соответствии с текущей рыночной ситуацией являются информационные системы. Для создания эффективной информационной системы предприятий исследованы и определены: задачи, источники информации и информационная база, необходимые для качественного расчета экономических, технических и хозяйственных показателей предприятия; стратегия функционирования информационных систем; основные общесистемные принципы, необходимые при создании информационной системы; модели стратегии создания и развития информационной системы; топология и сетевые операционные системы, используемые для реализации информационной системы.

Автоматизированная информационная система представляет собой совокупность информации, экономико-математических методов и моделей, технических, программных, технологических средств и специалистов, предназначенную для обработки информации и принятия управленческих решений.

Создание автоматизированной информационной системы способствует повышению эффективности производства экономического объекта и обеспечивает качество управления. Наибольшая эффективность информационной системы достигается при оптимизации планов работ предприятии, фирм и отраслей, быстрой выработке оперативных решений, четком маневрировании материальными и финансовыми ресурсами.

Успешное функционирование человеко-машинных информационных систем и технологии определяет качество проектирования. Проектирование имеет целью обеспечить эффективное функционирование автоматизированная информационная система и автоматизированных информационных технологии со специалистами, использующими в сфере деятельности конкретного экономического объекта персональной электронно-вычислительной машины. 

Именно качественное проектирование обеспечивает создание такой системы, которая способна функционировать при постоянном совершенствовании ее технических, программных, информационных составляющих, то есть ее технологической основы, и расширять спектр реализуемых управленческих функции и объектов взаимодействия.

Достижение указанной цели требует последовательного выполнения следующих задач:

- технико-экономическое обследование и анализ производственно-хозяйственной деятельности объекта  и предмета информатизации;

- содержательная постановка задачи, ориентированной  на рыночные методы хозяйствования и применение средств вычислительной техники;

-  определение предметной области;

- анализ состава и содержания входной и выходной информации для приложений.

- изучение документации предметной области;

разработка информационно-логической модели;

- реализация поставленной задачи [37].

При сдаче системы заказчику возникает ряд проблем, связанных с недовольством заказчиком результатами работы. В чём же кроется причина? На первый взгляд, основная причина - не качественный подход консультантов к своей работе. Каждая организация индивидуальна и требует соответствующего отношения. К сожалению, многие консалтинговые компании по различным обстоятельствам не могут или не считают нужным его обеспечить. Скрытый же источник проблем кроится в самом предприятии.

Руководитель, принимающий решение о внедрении информационной системы, должен четко понимать для чего она будет использоваться. Внедрению всегда должно предшествовать диагностическое обследование предприятия, чтобы по его результатам давать рекомендации к разработке информационной системы. 

Обычно заканчиваются провалами случаи, когда решение об имплементации было принято спонтанно или отдано на откуп специалистам из отдела автоматизации систем управления. Если же решение осознано, то и подход к выбору консультантов и внутренняя поддержка выполнения проекта обеспечат достижение вышеперечисленных преимуществ использования информационной системы, что позволит фирме достигнуть максимума результатов при минимальных затратах [37].

В последнее время выделяют следующую важную проблему информационных систем – защита информации. Дело в том, что защита информационной системы должна быть системной. Понятие системности заключается не просто в создании соответствующих механизмов защиты, а представляет собой регулярный процесс, осуществляемый на всех этапах жизненного цикла ИС. При этом все средства, методы и мероприятия, используемые для защиты информации объединяются в единый целостный механизм – систему защиты. 

К сожалению необходимость комплексного обеспечения безопасности информационных технологий пока не находит должного понимания у пользователей современных информационной системы. В то же время построение систем защиты информации не ограничивается простым выбором тех или иных средств защиты. 

Для создания таких систем необходимо иметь определенные теоретические знания, а именно: что представляет собой защищенная информационная система, что такое система защиты информации и какие требования предъявляются к ней, какие существуют угрозы и причины нарушения безопасности информационных технологий, какие функции защиты и каким образом должны быть реализованы, как они противодействуют угрозам и устраняют причины нарушения безопасности, как построить комплексную систему защиты информации, как достичь высокого уровня безопасности при приемлемых затратах на средства защиты информации и многое, многое другое. 

Учитывая, что современная нормативно-методическая база в этой области не дает полного представления о том, как организовать защиту информации, часто приходится действовать на свой страх и риск, поэтому с целью уменьшения вероятности принятия ошибочных решений, хотелось бы сформировать у читателя целостное представление о проблемах защиты информации и путях их решения. 

Существующие публикации на эту тему в основном ограничиваются перечислением угроз и возможностей конкретных средств защиты информации. В книге представлен полный спектр вопросов о практическом создании защищенных информационных систем.

Вопросы безопасности информации – важная часть процесса внедрения новых информационных технологий во все сферы жизни общества. 

Широкомасштабное использование вычислительной техники и телекоммуникационных систем в рамках территориально-распределенных ИС, переход на этой основе к безбумажной технологии, увеличение объемов обрабатываемой информации и расширение круга пользователей приводят к качественно новым возможностям несанкционированного доступа к ресурсам и данным информационной системы, к их высокой уязвимости. 

Реализация угроз несанкционированного использования информации наносит сейчас гораздо больший ущерб, чем, например, «случайные» пожары в помещениях или физическое воздействие на сотрудников.

Однако затраты на построение системы защиты информации еще пока несоизмеримо малы по сравнению с затратами на защиту от грабителей или на противопожарную защиту. К тому же в современном бизнесе наблюдается постепенный переход от чисто физических методов воздействия на конкурентов к более интеллектуальным, в том числе с использованием новейших средств и способов добывания информации [37].

Следует также отметить чувствительность системы к неправильным действиям. Все бизнес-процессы должны быть идеально отлажены. 

Любая неправильная информация или ее отсутствие ведет к кардинальным ошибкам в работе системы и, как следствие, высокому риску принятия неверного решения.

Оценивая стоимость проекта, не надо забывать, что помимо стоимости лицензий и услуг консультантов по внедрению, существуют значительные затраты на перестройку всех бизнес-процессов и затраты, связанные с огромными усилия всех вовлеченных в процесс менеджеров и специалистов компании. Последняя составляющая с трудом поддается хотя бы приблизительной оценке. Кроме того, не надо забывать, что требуется постоянная поддержка система, ее улучшение и корректировка в связи с новыми потребностями компании, периодическое обновление версий и тому подобные затраты уже в процессе эксплуатации.

Отсутствие понимания, что такое информационные технологии, какими они должны быть в применении к деятельности и стратегическим задачам компании.

Отсутствие должной формализованной системы правил той деятельности предприятия, которая влияет на развитие компании. Зачастую, работа многих участков предприятия при всей ее успешности представляет собой творческий процесс.

Отсутствие формализованной системы управления компанией. В частности: отсутствие правил принятия решений, отсутствие способов контроля качества работы как предприятия в целом, так и его подразделений и отсутствие понятных инструментов для принятия управленческих решений

Отсутствие программных инструментов и соответствующих специалистов, способных реализовать видение конкретного управленца и специфику компании.  Проблемы поддержки автоматизированной информационной системы управления состоят в необходимости регулярной модернизации системы с целью более полного удовлетворения нужд в информации принятой системы управления предприятием.

Проблемы поддержки программного обеспечения, автоматизирующего информационную систему, связаны со следующими пунктами:

- техническими сбоями и поломками программного обеспечения;

- потребностью предприятия в обновлении версий программного обеспечения;

- необходимостью постоянного обучения новых сотрудников – пользователей программного обеспечения;

-  необходимостью регулярной модернизации программного обеспечения с целью более полного удовлетворения нужд принятой системы управления [37].

Проблемы развития автоматизированной системы управления. Необходимость преодолевать рассогласование автоматизированного решения с изменяющейся системой управления предприятием, постоянно возникающее как результат его развития. Это означает, что управленцы на разных уровнях начинают принимать управленческие решения по-новому, и действующая система учета не обеспечивает их необходимой информацией в должном объеме.

Однако наряду с существующими проблемами информационных систем, действительность показывает, что при правильном использовании это достаточно эффективное средство повышения конкурентоспособности компании [37].


2 КРАТКАЯ ХАРАКТЕРИСТИКА И ОСНОВНЫЕ НАПРАВЛЕНИЯ ДЕЯТЕЛЬНОСТИ, АНАЛИЗ ТЕКУЩЕЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ НА ПРЕДПРИЯТИИ ЗАО «НПК «ВИП»


2.1Характеристика и основные направления деятельности на предприятии


 «НПК «ВИП» начало свою деятельность в ноябре 1997 года в г. Екатеринбурге.

В течение 1998 года на предприятии работало 2 сотрудника. На предприятии изготавливались опытные образцы регистратора параметров движения. Выполнялись работы по разварке кристаллов микросборки.

 Но уже в 1999 году предприятие вело активную производственно-хозяйственную деятельность. Разрабатываются новые виды продукции, ведется серийное производство, всего более 10 наименований. В этом же году на предприятии было проведено исследование и по его результатам проведен комплекс мероприятий по развитию системы регулярного менеджмента.

2000 год стал знаменательным для ЗАО «НПК «ВИП». Организация вошла в состав участников ООО «Метран-Сенсор», организации занимающейся разработкой и производством тензопреобразователей. В конце года организация получила лицензию на изготовление, ремонт и продажу средств измерений, а также сертификат об утверждении типа средств измерений, а именно тензопреобразователей давления измерительных ДД-И-1,00. Появились постоянные покупатели производимой продукции и поставщик материалов и комплектующих.

В течение 2001-2002 гг. предприятие вело стабильную хозяйственную деятельность. Внедрялись в производство новые виды продукции, совершенствовалось производство уже выпускающихся серий. Увеличивались производственные мощности.

В начале 2003 года появился официальный представитель «НПК «ВИП» на территории Сибири и Дальнего Востока.

В это время некоторые сотрудники прошли обучение в ГОУ ВПО Уральском Государственном Техническом Университете по «Системе управления качеством предприятия в соответствии с требованиями МСISO серии 9000» и получили соответствующие удостоверения. На предприятии проводились разработки датчиков массового расхода воздуха, расхода жидкости.

С 2006 года на предприятии в КБ начинает функционировать отдел электронных систем управления. Появляются такие устройства как «Электронный блок концевых выключателей», «Программируемый логический контроллер», «Контроллер электропривода» и многие другие.

С 2008 фирма начинает активно предлагать услуги оп автоматизации промышленных объектов с помощью логических контроллеров собственной разработки. В 2012 году начинается производство стендов метрологической поверки датчиков давления.

C 2007 года предприятие принимает участие в реализации проектов в области нанотехнологий. Совместно с партнерами по реализации проектов в этой области (Институт физики металлов уральского отделения РАН, Уральский федеральный университет, ФГУП «НПО Автоматики») были разработаны приборы на основе магниточувствительных наноструктур, которые выпускаются серийно.

В настоящем времени в «НПК «ВИП» работает около 89 человек. Выпускается более 20 наименований продукции. В конструкторском бюро ведется разработка около 10 видов новых изделий. У организации появляются новые производственные площади. Приобретаются современное оборудование и технологии. Технически совершенствуются изделия, выпускаемые серийно. Оказываются услуги производственного характера другим фирмам. Потребителями продукции ЗАО «НПК «ВИП» являются более 20 фирм. Кроме того, ЗАО «НПК «ВИП» успешно занимается реализацией продукции, производимой другими организациями. Форма собственности предприятия – Закрытое акционерное общество.

Закрытое акционерное общество - форма организации публичной компании; (общепринятое сокращение - ЗАО) - акционерное общество, акции которого распределяются только среди учредителей или заранее определенного круга лиц.

Отдел продаж – отвечает за реализацию продукции предприятия, принятия заказов на разработку или производство определенных видов продукции. В отделе работает 3 сотрудника, у каждого имеется персональный компьютер с выходом в сеть интернет.

Отдел внешних коопераций – занимается поиском, подбором и покупкой комплектующих для производимых изделий. Заказывает производство печатный плат для электроники у сторонних фирм. В отделе работает 5 сотрудников, у каждого имеется персональный компьютер с выходом в сеть интернет.

Участок поверхностного монтажа – здесь происходит установка электронных компонентов на плату. На платах на контактные площадки наносится паяльная паста, автомат с высокой точностью устанавливает электронные компоненты на площадки покрытые пастой. Плата помещается в печку, где под воздействием температуры паяльная паста плавится, превращаясь в припой. На выходе из печки припой остывает, элемент прочно припаивается к контактной площадке. При необходимости, некоторые элементы поправляются, или припаиваются вручную. В отделе работают 5 человек. В цехе находится два сборочных автомата. Их обслуживают три человека. Двое заняты ручным трудом. В цехе стоят два компьютера. Один для разработки программ сборки для автоматов, другой контролирует температурный режим печи.

Участок объемного монтажа – здесь происходит установка элементов, которые нельзя поставить с помощью сборочного автомата – крупногабаритные конденсаторы, транзисторы, радиаторы, катушки индуктивности и т.д. Вся работа проводится вручную. В этом отделе работают 15 человек.

Сборочный участок – готовые печатные платы здесь упаковывают в корпуса, придавая изделию конечный вид. Продукция упаковывается, на них выписывается документация, клеятся этикетки. На корпуса лазером наносится информация об изделии. На участке работают 10 человек. Есть два компьютера. Один управляет установкой для лазерной маркировки, другой печатает этикетки и паспорта на продукцию.

Склад хранит готовую продукцию для отправки заказчику, а также элементы и материалы для производства. На складе работает 2 сотрудника. У каждого имеется компьютер, на котором ведется учет.

Технологический отдел – здесь разрабатываются технические условия изготовления электронных компонентов, составляется документация, инструкции, расчеты трудоемкости и стоимости изделий. В отделе работают 3 сотрудника, у каждого имеется персональный компьютер.

Механический участок – поддерживает работоспособность всего оборудования на предприятии, содержание коммуникаций. Также устанавливает новое оборудование, и оборудует рабочие места. Этот отдел состоит из двух человек.

Отдел технологического контроля – после каждой стадии производства, продукция проходит контроль на соответствие документации, а также условиям и стандартам. В этом отделе работают два человека.

Бухгалтерия – здесь ведется учет всех денежных средств на предприятии. Контроль расходов на комплектующие, оборудование, заработная плата работникам, прибыль предприятия и т.д. В отделе работают 4 человека, у каждого имеется персональный компьютер.

Конструкторское бюро – здесь разрабатываются все новые устройства. Составляются конструкции изделий, электронные схемы, пишутся программы, разводятся печатные платы Источники питания, системы управления, различные датчики разрабатываются, испытываются и готовятся документы для их производства. В отделе работают 20 человек, у каждого есть персональный компьютер.

Системный администратор следит за работоспособностью вычислительной и оргтехники. Поддерживает работоспособность вычислительной сети. Занимается покупкой программного обеспечения, компьютеров, оргтехники. Также ведет поддержку пользователей.

Организационная схема предприятия показана на рисунке 1.

Рисунок 1 - Организационная схема предприятия

Рисунок 1 - Организационная схема предприятия

2.2Анализ текущего состояния информационной системы на предприятии


Все компьютеры на предприятии объединяет вычислительная сеть. Сеть организована на стеке протоколов TCPIP с использованием Fast Ethernet на канальном уровне. Сеть широко используется сотрудниками предприятия. По ней ведется обмен программным обеспечением, технической документацией, данными, отчетами, информацией.

Имеются центральные сервера хранения данных, на которых складывается вся накопившаяся база знаний, документации, исходных кодов программ.

Контроль рабочего времени осуществляется автоматизировано. При приходе на работу, сотрудник отмечается на устройствах считывающих отпечатки пальцев, после чего время прихода отмечается электронном табеле. Уходя на обед, сотрудник также отмечается на выход, а вернувшись, снова сообщает о своем приходе. Уходя домой, он также отмечает это в табеле. В конце месяца информация о накопившемся у работника рабочем времен группируется, и передается бухгалтерии для начисления заработной платы за отработанное время. Информация о сотрудниках хранится на специально отведенном компьютере.

С помощью автоматической телефонной станции, на предприятии организована собственная телефонная сеть, объединяющая все отделы предприятия. Есть выход в городскую телефонную сеть.

Контроль доступа сотрудников в интернет осуществляется с помощью распределенного приложения Traffic Inspector. Каждому сотруднику в месяц выделяется определенное количество трафика. При необходимости это количество можно увеличить. Это приложение также осуществляет контроль над расходованием трафика сотрудниками. А также ведет сетевую статистику.

Связь между всеми сотрудниками предприятия также осуществляется с помощью сервисов обмена мгновенными сообщениями в сети интернет. Или

Антивирусную защиту осуществляет пакет программ Symantec Antivirus Protection установленных на рабочих станциях, включающих в себя антивирусные программы, брандмауэр и множество программ обеспечивающих безопасность. Управление клиентскими программами осуществляется дистанционно с сервера антивирусной защиты, также проводится их обновление.

Проведем анализ информационный системы предприятия методом «Пять М-анализ».

«Machinery». Оборудование. На предприятии в общей сложности около 50 компьютеров, у каждого сотрудника которому по роду его деятельности необходим или полезен компьютер он имеется. Для сотрудников имеется подключенная к локальной сети оргтехника -  принтеры и сканеры. Сотовая связь сотрудникам компании не оплачивается, однако доступ к стационарным телефонам имеется у каждого сотрудника. Недостатком можно считать отсутствие принтеров больших форматов (A2,A1).

«Material». Материалы. Все материалы необходимые для работы имеется в достатке. Офис регулярно снабжается бумагой для принтеров, картриджи в печатающей технике своевременно заменяется. Необходимости в FLASH накопителей для персонала нет, т.к. все компьютеры предприятия объединены локальной сетью. Тем не менее, практически у каждого сотрудника имеется свои личные FLASH накопители, которые при необходимости используются. В свободном доступе для персонала имеются оптические записываемые накопители. Недостаток – фирма не имеет безлимитного канала доступа в интернет, поэтому приходится строго лимитировать доступ сотрудников к глобальной сети.

«Man». Персонал. Весь персонал предприятия в достаточной степени владеет навыками работы с персональными компьютерами. Во многом это связано что большинство персонала имеют специализированное высшее или среднеспециальное образование. Люди редко обращаются за помощью к системному администратору, что не отвлекает его от рабочих обязанностей.

«Money».Деньги. Финансирование предприятием информационной системы нельзя назвать достаточным. Некоторые машины настоятельно требуют замены или апгрейда. Также есть потребность в некоторых платных программах, которые предприятие на данный момент не может себе позволить. Многие IT работники не довольны своей заработной платой.

«Methods». Методы. Среди технологий, используемых на предприятии, широко распространена система программ «1С: Предприятие», которая предназначена для автоматизации различных видов деятельности, включая решение задач автоматизации учёта и управления на предприятии. Основной используемый продукт – 1С Бухгалтерия. Также широко используется геоинформационная система «2Гис» и компьютерная справочно-правовая система по законодательству России «КонсультантПлюс». Работает система отметки рабочего времени сотрудника оп отпечаткам пальцев. Имеется распределенная электронная система планирования разработок в конструкторском бюро. Зарегистрированные в ней разработчики в любой момент могут узнать текущий этап работы, цели и т.д. Руководители проектов могут наблюдать выполнение этих проектов. Недостатки – нет электронной системы контроля производства. Антивирусную защиту предоставляет пакет программ фирмы Symantec.

 


2.3Матрица SWOT-анализа информационной системы НПК

 

Состояние компании зависит от того, насколько успешно она способна реагировать на различные воздействия извне. Анализируя внешнюю ситуацию, необходимо выделять наиболее существенные на конкретный период времени факторы. Взаимосвязанное рассмотрение этих факторов с возможностями компании позволяет решать возникающие проблемы. При решении разного уровня задач необходимо также четко представлять, поддаются ли критические факторы контролю со стороны компании. Являются ли они внутренними или внешними, поддающимися изменениям усилиями компании или это внешние события, на которые компания влиять не в состоянии. Одним из самых распространенных методов, оценивающих в комплексе внутренние и внешние факторы, влияющие на развитие компании можно назвать SWOT-анализ.

SWOT-анализ является необходимым элементом исследований, обязательным предварительным этапом при составлении любого уровня стратегических и маркетинговых планов. Данные, полученные в результате ситуационного анализа, служат базисными элементами при разработке стратегических целей и задач компании [40].

По результатам ситуационного анализа можно оценить, обладает ли исследуемый объект внутренними силами и ресурсами, чтобы реализовать имеющиеся возможности и противостоять угрозам, и какие внутренние недостатки требуют скорейшего устранения.

Проведем SWOT-анализ информационной системы предприятия.

SWOT-анализ информационной системы предприятия приведен в таблице 2.1. Матрица SWOT-анализа с последующей разработкой стратегии представлена в таблице 2.2.

- SWOT-анализ информационной системы предприятия

Сильные стороны

Слабые стороны

Информационные системы интегрированы во многие аспекты работы предприятия.

Нет недостатка в количестве вычислительной техники.

Высокая квалификация персонала.

Частое посещение сотрудников компании всевозможных семинаров и презентаций.

Часть парка вычислительных машин устарела.

Нехватка необходимых программ.

Слабое финансирование.

Нет контролирующей информационной системы на производстве.

Возможности

Угрозы

Увеличение интеграции с глобальными сетями.

Расширение влияния информационных систем на внешнем рынке.

Вирусное поражение компьютеров компании.

Повышение требований к аппаратным и программным возможностям компьютеров.

 

Вывод: Несмотря на ряд сильных сторон информационной системы предприятия, она все-таки нуждается в доработке. При вложении больших средств, скорость разработки программных средств и стабильность системы можно повысить. Обновив парк машин можно повысить скорость выполнение сотрудниками работы, применять более новые программные решения. Вывести из рабочего состояния систему сложно.

Основными влияющими факторами для информационной системы являются экономические и технологические, остальные оказывают малое влияние на систему.

- Матрица SWOT-анализа информационной системы предприятия c разработкой стратегии

 

Сильные стороны(S)

Слабые стороны(W)

 

 

 

                                     SW

 

 

 

 

                 OT

Информационные системы интегрированы во многие аспекты работы предприятия.

Нет недостатка в количестве вычислительной техники.

Высокая квалификация персонала.

Частое посещение сотрудников компании всевозможных семинаров и презентаций.

Часть парка вычислительных машин устарела.

Нехватка необходимых программ.

Слабое финансирование.

Нет контролирующей информационной системы на производстве.

Возможности(O)

Поле стратегии(SO)

Поле стратегии(WO)

Увеличение интеграции с глобальными сетями.

Расширение влияния информационных систем на внешнем рынке.

Подключение информационной системы к внешним сетям, даст возможность пользователям с мобильными устройствами работать в внутренними ресурсами не находясь на территории предприятия.

Необходимо будет провести улучшение парка сетевого оборудования и рабочих мест.

Угрозы(T)

Поле стратегии(ST)

Поле стратегии(WT)

Вирусное поражение компьютеров компании.

Повышение требований к аппаратным и программным возможностям компьютеров.

С подключением к внешним сетям необходимо будет уделить высокое внимание повышению сетевой безопасности информационной системы.

Невозможно допустить утечку  информации во внешнюю сеть.

 


3 МЕРОПРИЯТИЯ И РЕКОМЕНДАЦИИ СОВЕРШЕНСТВОВАНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ НА ПРЕДПРИЯТИИ ЗАО «НПК «ВИП»


3.1Разработка и реализация инвестиционного проекта развития и совершенствования информационной системы

 

В данный момент на участке производства, в фирме нет никакого контроля над прохождением материалов через этапы обработки.

Сейчас схема работы выглядит следующим образом (рисунок 2) .

Рисунок 2 - Схема прохождения материальных ценностей при выполнении заказа

Рисунок 2 - Схема прохождения материальных ценностей при выполнении заказа

Отдел продаж получает заказ на некоторую продукцию. К примеру 50 датчиков избыточного давления ДД-И-1.00-01. Далее там же в отделе продаж разрабатывается план производства, и рассылается на все участки. Допустим нужно произвести эти 50 датчиков за месяц. 

Тогда для отдела внешних коопераций будут поставлены условия, что собрать необходимую комплектацию нужно за первую неделю, участку поверхностного монтажа будет указано установить электронные компоненты за неделю, участку объемного монтажа будет нужно провести объемный монтаж за третью неделю, а сборочному участку упаковать платы в корпуса на четвертой неделе.

Первым начинает работу отдел внешних коопераций. Производится закупка печатных плат, корпусов, резисторов, конденсаторов, аналоговых и цифровых микросхем, микроконтроллеров. Потом до установленного планом срока, все эти детали попадают на стеллажи, согласно назначению для каждого участка. На стеллаже они занимают специально отведенную этому заказу нишу. Далее в производственную цепочку включается участок поверхностного монтажа, они берут необходимые детали и начинают устанавливать элементы на плату. По мере выполнения эти платы попадают в нишу заказа на стеллаже следующего участка, который будет их обрабатывать. На участке объемного монтажа допаяв нужные детали, после положат их в нишу заказа на стеллаже следующего обрабатывающего их участка, механического. Там их упакуют в корпуса, и отправят на склад готовой продукции. Маршрут следования изделия будет проходить по всем четырем стеллажам, на входе и выходе каждого производственного цикла.

У этого метода есть множества недостатков:

-  невозможность отследить всего маршрута прохождения материальных ценностей;

- при задержке выполнения работы, каким либо из участвующих в производстве подразделений, виновника задержки невозможно определить;

-  работники зачастую не понимают где им брать материалы, и куда помещать готовую продукцию;

нет полного и наглядного контроля со стороны руководителей производства.

Для устранения этих проблем рекомендуется ввести распределенную систему контроля выполнения заказа.

Для того нужно будет поставить возле всех участвующих для хранения материальных ценностей стеллажей компьютеры, написать программу, которая должна выполнять следующие действия:

- принимать от менеджеров отдела маркетинга производственный план;

- распределять сроки и требуемые операции по компьютерам, расположенным возле стеллажей;

- вносить в себя информацию, о том в какую ячейку, на каком стеллаже были добавлены компоненты и материалы;

- предоставлять работникам производств сведения о расположении элементов и требуемых действий;

-  предоставлять руководящим лицам всю информацию о текущей стадии выполнения заказа, расположения материальных ценностей, текущей занятости работников;

-  автоматически отслеживать продвижение продукции от участка к участку с помощью помещенных на материальные ценности радиометок.

Однако реализация подобного механизма потребует затрат, на покупку оборудования, написания программы, будут задержки производства на время внедрения и освоения сотрудниками новой системы.

 

3.2Создание базы данных приложения по контролю за движением материальных ценностей на производстве

 

Для создания системы контроля движения материальных ценностей потребуется создание двух приложений. Клиентской программы для работы на производственных участках, где работники участков будут отмечать движение материальных ценностей в пределах своего участка. 

И серверной программы для предоставления данных для клиентских частей, обработка данных от клиентских частей, хранение данных и предоставление доступа по средствам интернет браузера к этим данным.

Реализовать проект возможно на многих популярных языках программирования. Выберем наиболее подходящий язык программирования для реализации проекта из C++, C#, Delphi и Python.

Достоинствами языка С++ являются высокая скорость работы приложения конечного приложения, но недостатками являются низкая скорость разработки, высокая опасность совершения ошибок в разработки и проектировании и высокие требования к навыку программиста для создания надежного и безопасного продукта.

Язык C# со средой .Net может предложить среднюю по сравнению с остальными рассматриваемыми языками скорость разработки, широкий выбор стандартных библиотек и удобные инструменты разработки графического интерфейса. Недостатки – отсутствие предусмотренного механизма работы приложений в операционной среде Linux.

Скорость разработки на Delphi можно оценить как посредственную, хотя программы написанные на нем будут иметь высокое быстродействие, и набор стандартных компонентов и библиотек достаточно широк, однако также нет широкой поддержки кроссплатформенности.

Python обладает самой высокой скоростью разработки, стандартная библиотека включает большой объём полезных функций, для этого языка есть все необходимые для реализации проекта фреймворки. Самый большой недостаток – как и все интерпретируемые языки программирования python имеет низкое быстродействие. Для реализуемого проекта это не является большим недостатком, так как разрабатываемые приложения не будут проводить сложных вычислений и создавать нагрузку на вычислительные мощности используемых компьютеров.

Языком программирования для проекта выберем Python.

Python – высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.

Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).

В качестве графической библиотеки для создания пользовательского интерфейса можно использовать GTK+ или Qt.

Обе библиотеки предлагают кроссплатформенное решение, однако важным преимуществом Qt является хорошо продуманный, логичный и стройный набор классов, предоставляющий программисту очень высокий уровень абстракции. Благодаря этому программистам, использующим Qt, приходится писать значительно меньше кода.

Графический пользовательский интерфейс клиентской программы выполним с помощью библиотеки графического интерфейса Qt.

Библиотека Qt задумывалась и начиналась как кроссплатформенный набор инструментов для быстрой разработки графических интерфейсов (GUI) приложений на языке C++, с целью упростить жизнь программистов, пишущих на C++ кроссплатформенные, переносимые GUI-приложения, которые должны работать и в среде Windows, и в среде Unix/Linux под X11, и на компьютерах Macintosh.

В настоящее время Qt значительно переросла рамки тулкита для разработки графических интерфейсов приложений. Она предоставляет использующему её программисту целостный фреймворк, позволяющий при написании большей части приложения использовать только «родные» классы Qt и практически полностью отказаться от написания системно-зависимого кода, использования системных вызовов.

Однако для разработки логики работы клиента будет использоваться язык программирования python, потому для привязки к Qt воспользуемся билиотекой PyQt.

PyQt — набор привязок графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python.

PyQt практически полностью реализует возможности Qt. А это более 600 классов, более 6000 функций и методов.

Для разработки формы воспользуемся инструментом QtDesigner.

Из наиболее известных вебфреймворков для языка программирования Python можно выделить Django и Flask. Django большой и серьезный фреймворк для больших и масштабных сетевых приложений, в то время как Flask больше подходит для небольших проектов. Для нашего проекта к браузерному интерфейсу серверного приложения не предъявляется больших требований поэтому для реализации серверной части проекта воспользуемся фреймворком Flask.

Flask это микрофреймворк для разработки сетевых приложений на языке Python. Отличается высокой скоростью разработки и прототипирования, надежностью работы и высоким качеством документации. Также поддерживаются расширения, что позволит в будущем сменить любые части реализации или хранения данных.

Для базы данных приложения на выбор либо MySQL либо SQLite. Для проекта лучше подойдет SQLite, потому что это встраиваемая база данных.

Слово «встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. 

Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Это также избавляет пользователей сервера от содержания сервера базы данных, в случае если бы был выбран MySQL.

В качестве базы данных для серверного приложения будет использоваться SQLite.

Для обмена между клиентскими программами и сервером будет использоваться протокол HTTP.

HTTP – протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.

HTTP – протокол прикладного уровня, аналогичными ему являются FTP и SMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ».

Для пересылки большого количества данных от сервера к клиенту, будем использовать формат файла json.

JSON – текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми.

Несмотря на происхождение от JavaScript, формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.

Для клиентского приложения разработаем две формы. Формы отслеживания материальных ценностей, и форму добавления новой записи для сервера.

Начнем создание формы приложения в редакторе QtDesigner. Для основного окна приложения создадим объект типа QMainWindow. В нем создадим объект компоновки QGridLayout. Он используется для автоматического изменения размеров и расположения объектов управления на форме, при изменении размера основного окна. В компоновщики разместим два объекта QComboBox для выбора текущего участка оператором программы, две таблицы QTableWidget для отображения текущий материальных ценностей на участке, две кнопки QPushButon для вызова форм добавления новых записей о материальный ценностях и объекты QLabelWidget для размещения поясняющих надписей. Добавим два объекта QMenu для меню «Файл» и «База данных», и набор объектов QAction, для дальнейшего заполнения ими объектов меню.

Для формы добавления или изменения информации о материальных ценностях создадим объект класса QForm, разместив на ней элементы управления QTextEdit и QComboBox для ввода информации.

С помощью утилиты pyuic4 из получившихся файлов с расширением .ui получим скрипты создания этих форм на языке python, с использованием библиотеки PyQt.

Для общения клиентской программы с сервером напишем модуль http_utils. Первая функция модуля post_data_send используется для отправки данных по указанному пути методом POST запроса данных в виде файла формата json, упакованных с помощью библиотеки zlib. Для реализации работы HTTP протокола используется стандартная библиотека httplib. Функция request_data реализует функциональность получения данных от сервера по указанному пути, используя метод GET.

При разработке клиентской программы будет использоваться модель разработки документ – вид. Такая архитектура разделяет «документ», то есть данные, с которыми работает программа, и «вид», то есть способ представления этих данных пользователю. Другими словами, способ хранения данных на диске или в памяти никаким образом не влияет на их внешнее представление пользователю.

Для начала работы графического интерфейса программы сначала создается объекты класса QApplication и QMainWindow. Также создается класс который будет реализовать логику работы основной формы Ui_MainWindow. Создается на данный момент единственный документ приложения WorkflowDocument. Разделение вида и приложения позволит в будущем без проблем вносит кардинальные изменения в работу программы. Менять тип серверной части, интерфейса работы с сервером или работать с файловой системой рабочей машины. Документ реализует функции работы с сервером с запросом данных от него а также отправку данных на сервер, в случае если пользователь захочет, например, внести в базу данных новый вид продукции. Данные полученные от сервера вносятся в таблицы основного окна, в зависимости от выбранного оператором участка в правой и левой половине формы.

Для хранения данных в таблице и выпадающих списках создадим модуль CustomControls который будет содержать элементы модифицированные компоненты управления, наследованные от стандартных QTableWidget и QComboBox, для того чтобы структуры данных содержащиеся в этих элементах управления содержали одновременно и текстовую информацию и идентифицирующий номер как они записаны в базе данных.

Для работы контекстного меню в таблице создадим класс XContexedTable наследованный от QTableWidget, где определен метод contextMenuEvent.

Когда пользователь нажимает по меню «Изменить» в контекстном меню при нажатии правой кнопкой по элементу таблицы данных с сервера или кнопке «Добавить» под этими таблицами, появляется форма добавления нового элемента, или изменения существующего. В этой форме пользователь выбирает какой предмет изменяется .для какого заказа и потом на основе состояния элементов управления формы, в документы программы формируется запрос для сервера с целью обновления таблицы данных.

Для работы сервера требуется база данных. Создадим новую базы данных SQLite и определим в ней следующий таблицы: items – содержит информацию о движении материальных ценностей, содержит уникальный ключ, поле item_type в котором хранится код типа предмета, о котором информирует запись, поле place_type которое код участка на котором произошло изменение, поле number которое содержит количество материальных ценностей подверженных изменению, поле state_type, что содержит код состояния текущей партии предметов, поле order_type которое содержит код номера заказа и поле change_time в которое пишется время изменения состояния материальных ценностей; item_types – таблица содержит коды и наименования материальных ценностей; place_types  - таблица содержит коды и наименования участков; state_types - таблица содержит коды и наименования состояний предметов; order_types - таблица содержит коды и наименования заказов.

Схема базы данных изображена на рисунке 3.

 Схема базы данных серверного приложения Схема базы данных серверного приложения

– Схема базы данных серверного приложения

 

Таблицы item_types, place_types, state_types, order_types содержат два поля: ключевое поле по которым будет осуществляться релятивная выборка из таблицы items, и поле со строкой, в которой находится название объекта к которому идет обращение.

В серверном приложении определим методы before_request и teardown_request. Они будут вызываться фреймворком в моменты до обработки запроса и после его обработки соответственно. В методах будем создавать подключение к базе данных с помощью метода connect_db до обработки запроса, и закрывать базу данных методом close после обработки.

Напишем функцию create_responce_from_dict для упаковки данных в виде словаря языка python в формат файла json.

В серверном приложении создадим методы обработки запросов от клиентов. Методы read_places, read_items, read_states, read_orders возвращают на GET запрос списки кодов и названий участков, типов предметов, типов состояний и названий заказов соответственно.

Метод update_items принимает данные от клиента об обновлении состояния материальных ценностей на участке. Обновления заносятся в базу данных.

Метод show_entries возвращает результирующую от всех записей об изменении в движении материальных ценностей для отображения в таблицах на клиентских программах.

Метод show_all_entries для веб интерфейса возвращает данные о всех измени в материальных ценностях за все время.

Обработка POST запросов от клиентов на добавление новых названий участков, типов предметов, типов состояний и названий заказов реализованы в методах add_item_type, add_place_type, add_state_type, add_order соответственно.

 

3.3 Оценка экономической эффективности реализации инвестиционного проекта

 

При расчете затрат на разработку проектируемого программного продукта целесообразно отдельно определять прямые и косвенные (накладные) расходы.

При расчете прямых расходов на разработку программ рекомендуется следующая последовательность.

1. Определение затрат на оплату труда

Внесем данные об этапах разработки и затраченном времени в таблице 3.1.

- Этапы разработки устройства и их трудоемкость

Этапы

Исполнитель

Трудоемкость, час.

Всего, час

машинное время, час

1 Обзор литературы и формирование принципа работы устройства

Руководитель проекта

16

14

2 Формирование технического задания

Руководитель проекта

24

24

5 Разработка алгоритма работы устройства

Программист

8

8

6 Разработка ПО

Программист

62

62

7 Тестирование ПО и устройства в целом

Программист

62

62

Разработка документации

Руководитель проекта

32

32

Всего

204

204

Внесем данные о заработной плате разработчиков в таблице 3.2.

- Заработная плата разработчиков

Должность

Заработная плата

В месяц, руб.

районный коэффициент, руб.

Почасовая, руб./час

Руководитель проекта

24000,00

3600,00

167,19

Программист

18000,00

2700,00

125,39

 

Произведем расчет заработной платы разработчиков по формуле (3.1).

 

Формула,

 

где    - заработная плата в час конкретного сотрудника;

 – трудоемкость этапов разработки конкретного сотрудника;

Кпн – районный коэффициент, 0,15;

руб.

2. Определение страховых взносов (с учетом отчислений на обязательное социальное страхование от несчастных случаев на производстве)

 

(3.2)

 

где    СтрВзн – сумма страховых взносов, руб.;

Кстр – коэффициент страховых взносов, 0,34;

 – коэффициент страхований от несчастных случаев на производстве, 0,02;

РК – районный коэффициент, 0,15;

РК районный коэффициент, 0,15 руб.

3. Амортизационные отчисления

 

,

(3.3)

 

где    АО – сумма амортизационных отчислений, руб.;

  - стоимость компьютера, руб., 15000;

СПИ – срок полезного использования компьютера, лет, 5;

– машинное время, час, 204;

 – фонд рабочего времени в год, час,1970;

 руб.

4. Затраты на текущий и профилактический ремонт компьютера

 

,

(3.4)

 

где    - затраты на текущий и профилактический ремонт компьютера, руб.;

 – коэффициент ремонтных затрат, 0,05;

уб.

5. Затраты на материалы, необходимые для эксплуатации компьютера

 

,

(3.5)

 

где     - затраты на материалы, необходимые для эксплуатации компьютера, руб.;

 – коэффициент материальных затрат, 0,02;

6. Затраты на электроэнергию

 

 

(3.6)

 

где    – затраты на электроэнергию, руб.;

W – мощность компьютера, Вт, 0,04;

тариф на электроэнергию, руб./кВт-час, 2,58;

руб.

7. Расчет косвенных расходов на разработку изделия

При расчете косвенных (накладных) расходов на разработку устройства рекомендуется воспользоваться существующим на предприятии методом и нормативом (коэффициентом) распределения накладных расходов.

 

 

(3.7)

 

где    – сумма накладных затрат, руб.;

 – коэффициент расчета накладных затрат, 3,0;

 руб.

8. Итоговые затраты на разработку изделия

 

(3.8)

 

где    - итоговая сумма стоимости разработки программы, руб.;


Расчеты сводятся в таблице 3.3.


- Расчет затрат на разработку программы

Показатели

Условное обозначение

Значение

1. Прямые расходы, в том числе

 

 

1.1 Затраты на оплату труда

ЗП

32601,64

1.2 Страховые взносы

СтрВзн

16626,83

1.3. Амортизационные отчисления

АО

31065,99

1.4. Затраты на текущий и профилактический ремонт

Зрем

77,66

1.5. Затраты на материалы, необходимые для эксплуатации

Змат

31,06

1.6. Затраты на электроэнергию

Зэл

21,05

2. Косвенные (накладные) расходы

Знакл

97804,92

3. Итого затраты на разработку программного продукта (полная себестоимость)

Зитог 

178229,15

 

После внедрения новой системы заметно меняется количество времени, которое работники тратят на рабочие операции. Так работник поверхностного монтажа будет тратить на оценку текущего количества элементов для монтажа меньше минуты, смотря все имеющиеся элементы на экране компьютера, а визуально осматривая стеллаж. Работники отделов не будут тратить время, ходя в отдел стоящий ранее в производственной цепочке для оценки количества готовой продукции. В сумме и по отношению к затрачиваемому времени по другим операциям это даст повышение производительности труда на 10% для работников поверхностного и навесного монтажа. Мастеру цеха не нужно будет обходить отделы для оценки текущей производственной ситуации, если она будет показываться в браузере на его компьютере, что повысит производительность его труда на 50%. В работе отдела внешних коопераций появляется экономия времени в сопоставлении расходов материалов и комплектующих. Это приводит к совокупному повышению производительности на 20%.  Сведем значения относительных изменений времени операций в таблицу 3.4.

Рассчитаем проектную экономию с введением системы новой системы движения материальных ценностей. Для этого составим таблицу повышения производительности труда после введения системы в эксплуатацию, а также среднюю заработную плату, которую получает работник, выполняющий описанный вид деятельности.

– Таблица повышения производительности труда

Вид работ

Время выполнения операции до введения системы, мин

Время выполнения операции после введения системы, мин

Повышение производительности труда, %

Средняя годовая зарплата работника выполняющего операцию, руб.

Заправка элементами сборочного автомата поверхностного монтажа

60

54

10

240000

Навесной монтаж печатных плат

10

9

10

240000

Контроль выполнения производственного плана

30

15

50

360000

Подготовка отчета о трате материалов

40

32

20

300000

 Годовая экономия, связанная с повышением производительности труда пользователя определим по формуле (3.9):

 

Формула

 

где    ЗПр – средняя годовая заработная плата работника, руб;

P – коэффициент повышения производительности труда, %.

Z = (240000*0,1)+(240000*0,1)+(360000*0,5)+(300000*0,2) = 288000руб.

Проведем оценку возврата вложенного капитала на основе оценки простой (бухгалтерской) нормы прибыли по формуле (3.10).

)

 

Пнп =  288000/178229,15 = 162%.

Чем выше простая норма прибыли, тем проект более эффективный.

Рассчитаем период окупаемости по формуле (3.11).

 

Ток = 178229,15/ 288000 = 0,62года.

Проект полностью соответствует критериям принятия проектов. Срок его окупаемости меньше 12 месяцев, и объем его финансирования полностью из собственных средств, за счет выполнения его работниками конструкторского бюро предприятия.

Сведем аспекты внедрения системы контроля на производстве в итоговую таблицу 3.5.

 

 - Мероприятия по совершенствованию информационной системы на предприятии

Мероприятия и рекомендации

Механизм реализации

Результат / Оценка экономической эффективности

Для контроля продвижения материальных ценностей на производстве, ввести электронные терминалы возле стеллажей с элементами для сборки плат. Добавить централизированную информационную систему для контроля за продвижением материальных ценностей.

Для работы серверной части приложения рекомендуется выделить отдельный компьютер под сервер.

Создание программы контроля, и покупка компьютеров для работы терминалами. Обучение персонала новой системе учета.

После введения в эксплуатацию системы на предприятии появится: полный контроль прохождения материальных ценностей через стадии производства, эффективный менеджмент, повышение  эффективности снабжения, больше возможностей для труда рабочих. При затратах в 178229,15 рублей, система сможет экономить примерно 288000 рублей в год. Приложение получилось полностью кроссплатформенным, благодаря чему появляется дополнительная выгода, если пользоваться свободными операционными системами типа Linux на компьютерах, где запущенна система.

Для экономии денежных средств на покупку операционных систем и программного обеспечения для компьютеров предприятия рекомендуется внедрить активное использование свободного программного обеспечение.

Для компьютеров, на которые не ставятся специфичные, требующие определенной операционной системы программы, устанавливать операционные системы на базе linux, и свободное прикладное программное обеспечение.

Затраты в результате будут минимальны, интерфейс программ и рабочей среды ОС незначительно отличаются от аналогичных в ОС Windows. Переучивать персонал не придется.

Эффект будет выражаться в экономии денежных средств от замененного проприетарного ПО.

Рекомендуются создать программно-аппаратный комплекс для обработки тензопреобразователей после сборки. После сборки необходимо проводить их нагрев в вакуумной печи. Старая установка контроля работы печи выполнена без использования вычислительной техники.

Подключения программируемого логического контроллера к узлам управления печи, подключение контроллера к компьютеру. Написание программы управления вакуумной печью.

Эффект – многократно меньшее количество брака среди модулей тензопреобразователей, выжигаемых в вакуумной печи. Возможность проведение нагрева без участия оператора. Введение комплекса поможет уменьшить количество брака в выпускаемых модулях, повысить производительность труда работников.

Выводы: разрабатываемый проект выгоден с коммерческой точки зрения, и заметно повысит эффективность информационной системы на предприятии. Его разработка не отвлечет текущий штат программистов предприятия от их основных задач, так как количество часов требуемых для реализации проекта невелико. За счет сэкономленного новой системой времени можно увеличить объемы производства на предприятии и повысить количество проверок готовой продукции.


БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ 

Рабочее место разработчика оборудовано средствами вычислительной техники. Оно характеризуется наличием следующих вредных и опасных производствен­ных факто­ров:

- повышенное значение напряжения электрического тока;

- электромагнитное поле;

- электростатическое поле;

- шум;

- тепло;

ультрафиолетовое, ближнее инфракрасное и ионизирующее излуче­ния.

 

Электробезопасность

Современные ПЭВМ питаются от сети переменного тока напряже­нием 220В и частотой 50Гц. Это приводит к наличию в конструкции токоведущих элементов, находящихся под напряжением, опасным для жизни людей и требует принятия специальных мер по защите персонала от пора­жения электрическим током. Значительная потребляемая мощность (около 300Вт для ПЭВМ), большая часть которой рассеивается в окружающее про­странство в виде тепла, приводит к дополнительному тепловому нагреву.

Электрический ток представляет собой скрытый тип опасности, т.к. его трудно определить в токо- и нетоковедущих частях оборудования, которые являются хорошими проводниками электричества. С целью предупреждения поражений электрическим током к работе должны допускаться только лица, хорошо изучившие основные правила по технике безопасности. Требования электробезопасности на рабочем месте должны соответ­ствовать ГОСТ 12.1.019–79  [29].

Электрический ток, протекающий через организм человека, воздействует на него термически, электролитически и биологически. Термическое действие характеризуется нагревом тканей, вплоть до ожогов; электролитическое — разложением органических жидкостей, в том числе и крови; биологическое действие электрического тока проявляется в нарушении биоэлектрических процессов и сопровождается раздражением и возбуждением живых тканей и сокращением мышц.

В соответствии с правилами электробезопасности в служебном помещении ГОСТ 12.1.019–79 [29]должен осуществляться постоянный контроль состояния электропроводки, предохранительных щитов, шнуров, с помощью которых включаются в электросеть компьютеры, осветительные приборы, другие электроприборы. Электрические установки, к которым относится практически все оборудование ЭВМ, представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведении профилактических работ человек может коснуться частей, находящихся под напряжением. Реакция человека на электрический ток возникает лишь при протекании тока  через тело человека. Исключительно важное значение для предотвращения электротравматизма имеет правильная организация обслуживания действующих  вычислительных центров, проведения ремонтных, монтажных и профилактических работ.

Любое из перечисленных воздействий может привести к электротравме - повреждению организма, которое вызванное действием электри­ческого тока.

На предприятии используются следующие способы защиты: защитное заземление, защитное отключение, электрическое разделение сетей разного напряжения, применение малого напряжения, изоляция токоведущих частей.

 

Защита от шума

Длительное воздействие шума со звуковым давлением 90 дБ снижает производительность труда на 30-60 % , свыше 100 дБ — вызывает болевые ощущения.

Большое влияние на умственную работу оказывают звуковые раз­дражители. С одной стороны они затрудняют сосредоточение внимания, снижают работоспособность, вызывают утомляемость, затрудняют вос­приятие информации оператором ПЭВМ, что приводит к росту количества ошибок в работе. С другой стороны, шум вызывает перестройку функцио­нирования определенных физиологических систем организма, что небла­гоприятно сказывается на здоровье человека.

Основным источником шума являются устройства, входящие в со­став ПЭВМ: вентиляторы; накопители на различных магнитных носителях; печатающие устройства и другое оборудование. Чаще всего конструкция устройств такого типа предусматривает значительное снижение шума при работе, однако сам характер звука, например у печатающих устройств, может служить сильным раздражающим фактором, даже при незначитель­ном уровне громкости. Следует также учитывать шум, проникающий в помещение извне.

Источником шума являются механические устройства ПЭВМ.

Уровень шума на рабочем месте разработчика на предприятии не превышает допустимый уровень шума для рабочего места оператора, который равен 65 дБ ГОСТ 12.1.003-83 [25].

 Общая классификация средств и методов защиты от шума приведена в

ГОСТ 12.1.029 – 80 [28].

На рабочем месте применены акустические методы защиты от шума (звукоизоляция). Стены помещения покрыты звукопоглощающей облицовкой. В применение индивидуальных средств защиты, таких как противошумные наушники или вкладыши, нет необходимости.

Немаловажное значение имеет и устранение шума непосредственно в источнике шума.

ого поля

Источниками электромагнитных излучений служат радиотехнические и электронные устройства, мониторы и др.

Электромагнитные поля не обнаруживаются органами чувств человека. Электромагнитные излучения оказывают вредное воздействие на организм человека. В крови, являющейся электролитом, под влиянием электромагнитных излучений возникают ионные токи, вызывающие нагрев тканей. При определённой интенсивности излучения, называемой тепловым порогом, организм может не справиться с образующимся теплом. Требования электробезопасности при воздействии электрических полей промышленной частоты по ГОСТ 12.1.002-84 [24], при воздействии электромагнитных полей радиочастот по ГОСТ 12.1.006-84 [27].

Электромагнитное излучение наносит ущерб здоровью в форме:

- воздействие на эндокринную систему;

- образование злокачественных опухолей.

С целью контроля проводить периодические замеры электромагнитного поля на рабочем месте оператора, замеры ионного воздействия.

Конструкция ПЭВМ должна обеспечивать мощность экспозицион­ной дозы рентгеновского излучения в любой точке на расстоянии 0,05 м от экрана и корпуса при любых положениях регулировочных устройств не должна превышать 0,1 мбэр/час (100 мкР/час)  ГОСТ 12.1.006-84 [27].

Для защиты от вредного воздействия излучений возможно примене­ние заземленных защитных экранов, значительно уменьшающих их интен­сивность. Кроме того, рекомендуется использовать мониторы современные мониторы со спецификацией “lowradiation”, которые можно использовать без защитных экранов, так как они покрыты специальным антибликовым составом для лучшего восприятия изображения и для уменьшения отраже­ния внешнего освещения.

Для уменьшения воздействия описанных факторов следует придерживаться следующего режима работы:

- периодически делать короткие перерывы для отдыха (через 30 ми­нут работы);

- периодически делать разминку, выполнить несколько простых физ­культурных упражнений.

 

Разрядные токи статического электричества чаще всего возникают при прикосновении к любому из элементов ПЭВМ. Такие разряды опасности для человека не представляют, но кроме неприятных ощущений они могут привести к выходу из строя ПЭВМ.

К средствам защиты в нашей лаборатории можно отнести следующие основные методы устранения опасных и вредных проявлений статического электричества:

-  заземление корпусов технологического оборудования;

-  увеличение влагосодержания обрабатываемого продукта и окружающей среды;

-  антистатическая обработка поверхностей.

Для снижения  величин  возникающих  зарядов статического электричества пол в помещении имеет антистатическое покрытие. Двери и стенные шкафы покрыты поливинилхлоридным антистатическим покрытием. К общим  мерам защиты от статического электричества  можно отнести общее и местное увлажнение воздуха.

 

Микроклимат производственного помещения

Нормы производственного микроклимата установлены системой стандартов безопасности труда ГОСТ 12.1.005-88 [26] и СанПиН 2.24.548-96 [34].

Параметры производственного климата на предприятии соответствуют оптимальным значениям.

Для поддержания необходимой температуры воздуха в холодное время года используется система центрального водяного отопления. Во время обеденного перерыва проводится сквозное проветривание через окна и фрамуги. Влажная уборка помещения проводится один раз в день. В жаркое время года используется кондиционер.

 

Производственное освещение

По СНиП 23-05-95 [36] по разряду, зрительная работа относится ккатегории III.

Расчетная площадь окон в помещении должна быть 9,5м2.

Фактически в помещении установлены  окна площадь которых составляет  8 м2.

 

Организация рабочего места

Требования по СанПиН 2.2.2/2.4.1340-03 – 03 [33].

Размещение дисплея для уменьшения воздействия нагрузки на зрительную систему и для уменьшения воздействия монотонности работы дисплей размещаем на столе или подставке так, чтобы расстояние от глаз до экрана не превышало 700 мм (оптимальное расстояние 460 - 500 мм). В общем случае расстояние наблюдения выбирается в зависимости от высоты (Н) и угловых размеров (α) знака: L=H/tg(α/2) - расстояние то глаз до дисплея. Для букв и цифр рекомендуется значение α от 15 до 18. Экран дисплея по высоте располагаем так, чтобы угол между нормалью к центру экрана и горизонтальной линией взгляда составлял 20°. В горизонтальной плоскости угол наблюдения экрана не должен превышать 60°.

Клавиатуру размещаем на столе или подставке так, чтобы высота расположения клавиатуры по отношению к полу составляла 650 - 720 мм. При размещении пульта на стандартном столе высотой 750 мм.

Конструкция клавиатуры должна предусматривать:

- исполнение в виде отдельного устройства с возможностью свободного перемещения;

опорное приспособление, позволяющее изменять угол наклона поверхности клавиатуры в пределах от 5 до 15 градусов;

- высоту среднего ряда клавиш не более 30 мм;

- расположение часто используемых клавиш в центре, внизу и справа, редко используемых вверху и слева; выделение цветом, размером, формой и местом расположения функциональных групп клавиш;

- минимальный размер клавиш - 13 мм, оптимальный - 15 мм; клавиши с углублением в центре и шагом 19 плюс - минус 1 мм;

-  расстояние между клавишами не менее 3 мм;

- одинаковый ход для всех клавиш с минимальным сопротивлением нажатию 0,25 Н и максимальным - не более 1,5 Н;

- звуковую обратную связь от включения клавиш с регулировкой уровня звукового сигнала и возможности ее отключения.

Размещение технических средств и кресла оператора в рабочей зоне, в соответствии с СанПиН 2.2.2/2.4.1340-03 [33] должно обеспечивать удобный доступ к основным функциональным узлам и блокам аппаратуры (Рисунок 4). Необходимо использовать кресло с регулируемой высотой сидения (380 - 45Омм) и подставку для ног.  Устройства документирования и другие, нечасто используемые технические средства, располагаем справа от оператора в зоне максимальной досягаемости, а средства связи слева, чтобы освободить правую руку для записей.

Конструкция его должна обеспечивать:

-  ширину и глубину поверхности сиденья не менее 400 мм;

-  поверхность сиденья с закругленным передним краем;

-  регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град, и назад до 5 град.;

-  высоту опорной поверхности спинки 300 плюс - минус 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости  - 400 мм;

-  угол наклона спинки в вертикальной плоскости в пределах 0 плюс минус 30 градуса;

- регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;

- стационарные или съемные подлокотники длиной не менее 250 мм и шириной 50 - 70 мм;

-  регулировку подлокотников по высоте над сиденьем в пределах 230 плюс - минус 30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм. плюс - минус 30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.

Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

 

Режим труда и отдыха

Сложность работы на компьютере рассчитывается в соответствии с СанПиН 2.2.2.542-96 [33].

группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предваритель­ным запросом;

группа Б: работа по вводу информации;

группа В: творческая работа в режиме диалога с ЭВМ.

Работа программиста разработчика по виду трудовой деятельности относится к группе В - творческая работа в режиме диалога с ЭВМ, а по напряженности работы ко II В категории тяжести СанПиН 2.2.2.542-96 [33].

Следую правилам время регламентированных для II В группы – 50 минут при 8-часовой смене за компьютером, обед согласно внутреннему распорядку предприятия – 60 минут.

 - Размещение оператора на рабочем месте

 - Размещение оператора на рабочем месте


Помещение по пожарной опасности относится к категории Д согласно НПБ105-03 [30].

 

Степень огнестойкости конструкций I согласно СНиП 21-01-97 [35].

Помещение оборудовано первичными средствами пожаротушения - огнетушители марки ОУ-5.

Существует система предупреждения и тушения пожара (датчики на дым и повышения температуры).

 

Одной из чрезвычайных ситуаций является пожар. При возникновении пожара необходимо действовать в соответствии с текущими инструкциями по безопасности и в соответствии с планом эвакуации.

Кроме основного помещение оборудовано двумя аварийными выходами.

План эвакуации представлен на Рисунок 5.

 - План эвакуации

- План эвакуации


Выводы и предложения

 

Работникам отдела разработки созданы условия работы соответствующие всем санитарным правилам и нормам действующие в Российской Федерации. Сами сотрудники не имеют никаких нареканий к качеству своих рабочих мест. Для повышения освещенности рабочих мест, следуют обеспечить искусственное освещение люминесцентными лампами.

 

5 ПРИРОДОПОЛЬЗОВАНИЕ И ОХРАНА ОКРУЖАЮЩЕЙ СРЕДЫ 

 

В процессе своей производственной деятельности человек оказывает непрерывное и все возрастающее воздействие на окружающую его среду обитания.

На протяжении длительного времени среда обитания человека медленно изменяла свой облик (исчезали вырубленные леса, теряли плодородие пахотные земли, высыхали от неумеренного водопотребления реки, озера и т. д.), но в последнее время (начиная примерно с середины XIX века) уровень таких негативных изменений стал особенно заметен в связи с возросшим уровнем энерговооруженности человека и с ростом его потребностей.

В связи с современным уровнем развития производительных сил, уровнем развития науки возникает реальная возможность научно обоснованного природопользования [23, с. 5].

Меры по охране природной среды являются непременным условием выживания человечества. В масштабах нашей страны они регламентируются соответствующими законами и подзаконными актами: указами президентов, постановлениями правительств Российской Федерации, местных органов власти и специально уполномоченных на то органов: Министерства природных ресурсов РФ, Государственного комитета РФ по охране окружающей среды, Министерства труда и социального развития РФ, Министерства здравоохранения РФ, МЧС России и др. Высшим законом, гарантирующим право граждан на чистоту природной среды, является Конституция России (ст.114). Среди законодательных актов можно отметить закон «Об охране окружающей природной среды», Водный и Земельный кодексы, законы «О недрах», «Об экологической экспертизе», «Об охране атмосферного воздуха» [23, с. 11].

Ответственность за экологические правонарушения регламентируется системой юридических норм, правил, под контролем которых находятся взаимоотношения общества и окружающей природной среды и которые носят название экологического права.

Экологическое законодательство также закрепляет профессиональную ответственность за правонарушения: «За экологические правонарушения, т. е. противоправные деяния, нарушающие природоохранительное законодательство и причиняющие вред окружающей природной среде и здоровью человека, должностные лица и граждане несут дисциплинарную, административную либо уголовную, гражданско-правовую, материальную, а предприятия, учреждения, организации – административную и гражданско-правовую ответственность в соответствии с настоящим Законом, иными законодательными актами Российской Федерации и республик в составе Российской Федерации» [43].

Управление охраной окружающей природной среды осуществляется Федеральным собранием, президентом, правительством России и специально уполномоченными на это органами, главными из которых являются Министерство природных ресурсов и Государственный комитет по охране окружающей среды, Министерство здравоохранения, Министерство по чрезвычайным ситуациям и др.

На региональном уровне управление охраной окружающей природной среды ведется представительными и исполнительными органами власти, местными органами самоуправления, а также территориальными органами указанных выше организаций. На промышленных объектах для управления охраной окружающей среды создаются отделы охраны природы. Управление охраной окружающей природной среды базируется на информации, получаемой системой мониторинга окружающей среды. Эта система состоит из трех ступеней наблюдения, оценки состояния и прогноза возможных изменений.

Экологический мониторинг – организованная система наблюдений за состоянием экологических систем, природных комплексов, за динамикой запасов полезных ископаемых, водных, земельных и растительных ресурсов. В системе мониторинга различают три уровня: экологический, биосферный, и санитарно-токсический [23, с 15].

Научно производственный комплекс вторичных источников питания, кроме разработки и проектирования электронной продукции, занимается также ее производством на своей территории. Перечислим список мероприятий принимаемых на предприятии которые приводят к уменьшению загрязнения окружающей среды, минимизируют количество отходов, мероприятия по переработке отходов.

При производстве полупроводниковых приборов и интегральных схем на предприятии, где широко используют дефицитные и высокочистые материалы, особенно актуальны проблемы сбережения материальных ресурсов. Экономии материалов можно добиваются за счет сбора технологических отходов и возвращения их в производственный процесс.

Например, применение установок регенерации отработанных травильных растворов дает возможность проводить операцию травления печатных плат в замкнутом безотходном режиме, решает проблему охраны окружающей среды и позволяет вернуть теряемую при травлении медь.

Операция травления покрытия на поверхности фольгированных подложек для получения топографии схемы лежит в основе технологического процесса изготовления печатных плат и во многом определяет его производительность. Отработанные травильные растворы представляют собой высококонцентрированные, агрессивные жидкости.

Слив и обезвреживание отработанных травителей сопровождается потерями стравленной меди и недовыработанного активного компонента травителя. Это требует постоянных расходов на обезвреживание реагентов и захоронение осадков гидроокисей. Поэтому на НПК ВИП перешли на безотходную систему производства на базе замкнутого цикла «травление-регенерация» в едином технологическом блоке.

Германий – редкий материал, широко востребованный в производстве полупроводниковых приборов. Увеличение производства германия сдерживается во всем мире постепенным истощением его ресурсов – для получения 200 г германия нужно переработать 1 т руды. Вместе с тем, при производстве приборов до 85% германия идет в отходы, которые в свою очередь попадают в окружающую среду, загрязняя ее.

На предприятии используется комплексная система сбора и первичной обработки германийсодержащих отходов, с использованием старых известных методов и вновь созданных технологий, это способствует решению не только экономии дефицитного материала, но и вопросам защиты природы.

В производстве изделий электронной техники, в частности, современных больших интегральных схем используется технология химического осаждения из газовой (паровой) фазы, в которой нашли применение свыше 100 газообразных веществ. Среди них наибольшее количество приходится на группы газов для осаждения и травления различных функциональных слоев. Большинство применяемых на этом производстве газов токсичны, взрыво и пожаро опасны.

Снижение экологической опасности газовых процессов достигается повышением эффективности утилизации выбросов и снижением потребления токсичных и озоноопасных веществ, в том числе за счет применения альтернативных материалов. Предлагаются устройства и способы утилизации вредных выбросов, а также исследуются физико-химические свойства наиболее часто используемых реагентов в процессах химического осаждения газовой фазы и их воздействие на организм человека.

На предприятии используется технология адсорбционной регенерации растворителей, которая позволяет при использовании простого оборудования и дешевых адсорбентов вернуть в производство более 90% растворителя с эффективностью очистки 95-98%, предусмотрена термическая регенерация адсорбентов с целью их повторного применения.

Для защиты атмосферного воздуха используются проводятся следующие мероприятия: модернизация технологического процесса и оборудования, направленная на сведение к минимуму загрязнения атмосферы отходами производства; рассеивание выбросов в атмосфере до концентрации, не превышающей предельно допустимой концентрации (ПДК); использование специальных средств очистки отработанных газов от примесей.

Также используются сухие пылеуловители. К сухим пылеуловителям относятся такие, в которых очистка движущегося воздуха от пыли происходит механически под действием сил гравитации и инерции.

В своей офисной работе научно производственный комплекс тоже подходит рационально к использованию ресурсов. Широко используется электронный документооборот, повторное использование отпечатанной бумаги, сдача использованных картриджей с тонером для печатной техники в специализированные фирмы для утилизации.

Отработавшие средства вычислительной техники и приборы освещения сдаются на утилизацию.

Оргтехника включает в свой состав как органические составляющие (пластик различных видов, материалы на основе поливинилхлорида, фенолформальдегида), так и почти полный набор металлов. Все эти компоненты не являются опасными в процессе эксплуатации изделия. Однако ситуация коренным образом меняется, когда изделие попадает на свалку. Такие металлы, как свинец, сурьма, ртуть, кадмий, мышьяк входящие в состав электронных компонентов переходят под воздействием внешних условий в органические и растворимые соединения и становятся сильнейшими ядами. 

Утилизация пластиков, содержащих ароматические углеводороды, органические хлорпроизводные соединения является насущной проблемой экологии. Поэтому вся оргтехника должна утилизироваться по методике утвержденной Государственным комитетом РФ по телекоммуникациям (от 19 октября 1999 г.). 

Благодаря комплексной системе утилизации оргтехники сводятся к минимуму неперерабатываемые отходы, а основные материалы (пластмассы, цветные и черные металлы) и ценные компоненты (редкие металлы, люминофор, ферриты и др.) возвращаются в производство. Драгметаллы, содержащиеся в электронных компонентах оргтехники концентрируются и после переработки нааффинажном заводе сдаются в Госфонд.

 

Выводы и предложения

Несмотря на то, что ЗАО «НПК «ВИП» занимается высокотехнологичным производством микроэлектроники, все экологические требование предприятием соблюдены полностью, предпринято много мер по предотвращению нанесения вреда окружающей среде при производстве продукции.

 

ЗАКЛЮЧЕНИЕ

 

В этой работе был проведен анализ текущего положения дел на рынке информационных систем для предприятий, приведена история развития информационных систем, разобраны методы внедрения автоматизированных систем в работу предприятия. Подробно изучены тенденции развития текущих информационных систем, и тех, что находятся в разработке.

Во второй главе рассмотрено конкретное предприятие ЗАО «НПК ВИП». Подробно расписана его внутренняя структура, проведен анализ его информационной системы. По этому поводу можно сказать, что предприятие обладает достаточно развитой информационной системой для компании малого размера. Однако на предприятии не внедрена глобальная система планирования ресурсов предприятия, документооборот ведется по устаревшей схеме. Потенциал развития довольно велик, и это развитие идет постепенно, насколько позволяет скромное финансирование.

После оценки текущего состояния информационной системы на предприятии было предложено ввести в работу на предприятии систему за контролем материальных ценностей. Для приложения была разработана клиент-серверная архитектура, выбраны технологии для реализации проекта.

Приложение разработано на языке программирования высокого уровня Python, с использованием множества современных библиотек и фреймворков. Выбрано решение для базы данных приложения и была разработана ее схема.

Были написаны программы клиенты с графическим интерфейсом для выполнения на компьютерах производственных участков и других отделах предприятия.

Написан исходный код программы сервера, с возможностями обработки поступающей информации от клиентских приложением, а так же возможностью доступа по сети используя браузер для отображения процедуры движения материальных средств между отделами предприятия.

После оценки стоимости разработки системы контроля движения материальных ценностей и расчета экономической эффективности от реализации этого проекта был установлен срок окупаемости проекта в 7,5 месяцев.

В работе было уделено внимание безопасности жизнедеятельности и охране труда на предприятии. Были проверены условия труда работников на соответствия действующим стандартам, санитарным нормам и правилам, по обнаруженным недостаткам вынесены рекомендации.

Произведена оценка природопользования и охраны окружающей среды на предприятии, где была описана большая работа предпринятая на предприятии для того что бы соблюсти законодательство и предъявляемые требования в этом вопросе.

Все задачи и требования поставленные перед выполнением работы выполнены. Разработанное приложение готово к работе.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ

 

1 Гвоздева Т. В. Проектирование информационных систем / Т. В. Гвоздева, Б. А. Баллод. – М.: Феникс, 2009. – 512 с.

2 Кулемина В. В Информационные системы в экономике. Краткий курс – М.: Окей-книга, 2009. – 112 с.

3 Исаев Н. В. Информационные системы в экономике – М.: Феникс, 2009. – 464 с.

4 Уткин В. Б. Информационные системы в экономике / В. Б. Уткин, К. В. Балдин. – М.: Академия, 2012. – 288 с.

5 Балдин К. В. Информационные системы в экономике – М.: ИНФРА-М, 2012. – 224 с.

6 Горбенко А. О. Информационные системы в экономике – М.: Бином, 2010. – 296 с.

7 Петрушина С. М. Информационные системы в экономике / С. М. Петрушина, Н. А. Аручиди. – М.: Мини-Тайп, 2012. – 144 с.

8 Емельянова Н. З. Информационные системы в экономике / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. – М.: Форум, 2009. – 464 с.

9 Чистов Д. В. Информационные системы в экономике. Управление эффективностью банковского бизнеса / Д. В. Чистов, Ю. В. Амириди, Е. Р. Кочанова. – М.: КноРус, 2011. – 174 с.

10 Жданчиков П. А. Казначейство. Автоматизированные бизнес-технологии управления финансовыми потоками – М.: Высшая Школа Экономики, 2010. – 368 с.

11  Косиненко Н. С. Информационные системы и технологии в экономике / Н. С. Косиненко, И. Г. Фризен. – М.: Дашков и Ко, 2012. – 304 с.

12  Карминский А. М. Информационные системы в экономике. В 2 частях. Часть 1. Методология создания / А. М. Карминский, Б. В. Черников. – М.: Финансы и статистика, 2006. – 336 с.

13  Гвоздева Т. В. Проектирование информационных систем / Т. В. Гвоздева, Б. А. Баллод. – М.: Феникс, 2009. – 512 с.

14  Зинов В. Г. Инновационное развитие компании. Управление интеллектуальными ресурсами / В. Г. Зинов, Т. Я. Лебедева, С. А. Цыганов. – М.: Дело АНХ, 2009. – 248 с.

15  Грекул В. И Управление внедрением информационных систем / В. И Грекул, Г. Н. Денищенко, Н. Л. Коровкина. – М.: Бином, 2008. – 224 с.

16  Лойко В.И. Информационные системы и технологии в экономике – М.: Дело, 2005. – 334 с.

17  Мильнер Б. З. Управление знаниями в корпорациях / Б. З. Мильнер, З. П. Румянцева, В. Г. Смирнова, А. В. Блинникова. – М.: Дело, 2006. – 304 с.

18  Герасимова В. Д. Анализ и диагностика финансово-хозяйственной деятельности промышленного предприятия – М.: КноРус, 2011. – 360 с.

19  Учитель Ю. Г. SWOT-анализ и синтез - основа формирования стратегии организации / Ю. Г. Учитель, М. Ю. Учитель. – М.: Либроком, 2010. – 328 с.

20  Лутц М. Изучаем Python – СПб.: Символ-Плюс, 2011. – 1280 с.

21  Саммерфилд М. Qt. Профессиональное программирование. Разработка кроссплатформенных приложений на С++ – СПб.: Символ-Плюс, 2011. – 560 с.

22  Прохоренок Н. Python 3 и PyQt. Разработка приложений – СПб.: БХВ-Петербург, 2012. – 704 с.

23  Барашков В.А. Экология производства электронных средств. Экологические аспекты взаимодействия человека с техносферой / В.А. Барашков, Н.Б. Фенькова, С.В. Сергиенко. – Красноярск: ИПЦ СФУ, 2009. – 64 с.

24  ГОСТ 12.1.002-84. Система стандартов безопасности труда. Электрические поля промышленной частоты. Допустимые уровни напряженности и требования к проведению контроля на рабочих местах – М.: Госстандарт, 1984. – 7 с.

25  ГОСТ 12.1.003-83. Межгосударственный стандарт. Система стандартов безопасности труда. Шум – М.: Госстандарт, 1983. – 10 с.

26  ГОСТ 12.1.005-88. Система стандартов безопасности труда.  Общие санитарно-гигиенические требования к воздуху рабочей зоны – М.: Госстандарт, 1988. – 18 с.

27  ГОСТ 12.1.006-84. Система стандартов безопасности труда.  Электромагнитные поля радиочастот – М.: Госстандарт, 1984. – 9 с.

28  ГОСТ 12.1.029 – 80. Система стандартов безопасности труда средства и методы защиты от шума. Классификация – М.: Госстандарт, 1980. – 4 с.

29 ГОСТ 12.1.019–79 .Система стандартов безопасности труда. Электробезопасность. Общие требования и номенклатура видов защиты – М.: Госстандарт, 1979. – 6 с.

30  НПБ 105-03 Нормы пожарной безопасности «Определение категорий помещений, зданий и наружных установок по взрывопожарной и пожарной опасности» – М.: Сибирское университетское издательство, 2010. – 176 с.

31  ПУЭ. Седьмое издание. Правила устройства электроустановок – М.: ДЕАН, 2008. – 1168 с.

32  СанПиН 2.2.2.542-96.Санитарные правила и нормы. «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы» – М.: Детство-Пресс, 2010. – 96 с.

33 СанПиН 2.2.2/2.4.1340-03. Санитарные правила и нормы.  «Гигиенические требования к персональным электронно вычислительным машинам и организации работы» – М.: Детство-Пресс, 2010. – 41 с.

34  СанПиН 2.24.548-96. Санитарные правила и нормы. «Гигиенические требования к микроклимату производственных помещений» – М.: Детство-Пресс, 2010. – 112 с.

35 СНиП 21-01-97. Строительные нормы и правила РФ. Предотвращение распространения пожара – М.: ДЕАН, 2004. – 577 с.

36  СНиП 23-05-95. Строительные нормы и правила РФ. Естественное и искусственное освещение – М.: ДЕАН, 2008. – 1011 с.

37  Основные проблемы создания и использования информационных систем информационных ресурсов организации. [Электронный ресурс] – 2012. – Режим доступа: http://magmenit.narod.ru/essays/essay_1.html

38  Основные принципы коммерческих предприятий организации финансов коммерческих предприятий [Электронный ресурс] – 2008. – Режим доступа: http://dengifinance.ru/finance-osnovy/osnovnye.html

39  Место, значение и задачи анализа финансовых результатов деятельности коммерческого банка [Электронный ресурс] – 2013. – Режим доступа: http://www.bankmain.ru/banks-927-1.html

40  SWOT-анализ: объект, факторы, стратегии [Электронный ресурс] – 2013. – Режим доступа: http://www.aspu.ru/im//151-157.pdf

41  Документация SQLite [Электронный ресурс] – 2013. – Режим доступа: http://www.sqlite.org/docs.html

42  Flask обучение [Электронный ресурс] – 2013. – Режим доступа: http://flask.pocoo.org/docs/tutorial/

43  Официальная домашняя страница формата JSON [Электронный ресурс] – 2013. – Режим доступа: http://json.org/json-ru.html

44  «Об охране окружающей природной среды» : Федеральный закон от 05.03.2013 № 20 – ФЗ // Справочно-правовая система «Консультант Плюс» : [Электронный ресурс] / Компания «Консультант Плюс» – Послед. обновление 21.04.2013


ПРИЛОЖЕНИЕ A

 

Исходный код программы клиента системы контроля движения материальных средств

# -*- coding: utf-8 -*-

import sys #загрузка модуля работы с операционной системой

from PyQt4 import QtCore #загрузка модуля привязок pyqt к основному модуля билиотеки qt

from PyQt4.QtGui import QApplication, QMainWindow #загрузка модуля привязок pyqt к классу приложения и основного окна билиотеку qt

 

from GUI import Ui_MainWindow #загрузка модуля с функция графического интерфейса

import http_utils # загрузка модуля с функциями для работы по проколоу HTTP

 

WebServerAddress ="127.0.0.1:5000" # константа с удресом сервера приложения

 

#DEBUG ONLY

import logging# создание обьекта для вывода отладочной информации. используется для отладки

x = logging.getLogger("logfun")

x.setLevel(logging.DEBUG)

h = logging.StreamHandler()

f = logging.Formatter("%(levelname)s %(asctime)s %(funcName)s %(lineno)d %(message)s")

h.setFormatter(f)

x.addHandler(h)

 

class DataSender(QtCore.QThread):#класс используемый для отправки сообщени серверу в отдельном потоке. наследован от класса потока в qt

 

            def __init__(self, path, data):#констуктор класса

                        QtCore.QThread.__init__(self)#констуктор родительского класса

                        self.path = path#сохранение в свойствах класса аргументов конструктора класса

                        self.data = data

 

            def run(self):#функция которая будет вызвана при начале работа потока

                        try:

                                   http_utils.post_data_send(WebServerAddress, self.path, self.data) #вызов функции отправки данных методом POST

                        except Exception, ex:#обработка исключений и вывод сообщений об ошибках через обьекта журналирования

                                   logfun = logging.getLogger("logfun")

                                   logfun.exception("Something awful happened!")

 

 

class WorkflowDocument():#класс документа приложения

 

            def __init__(self, application):#констуктор класса

                        self.application = application#сохранение в свойствах класса аргументов конструктора класса

 

            def SetView(self, view):#сохранение ссылки на вид ассоциированный с документом

                        self.View = view

 

            def AddItemTypeToDB(self, item_str):#метод добавления типа предмета в базу данных на сервере

                        self.InitSender("/add_item_type",{"item_name" : item_str})#вызов функции которая инициирует передачу данных серверу

 

            def AddPlaceTypeToDB(self, item_str):#метод добавления типа участка в базу данных на сервере

                        self.InitSender("/add_place_type",{"place_name" : item_str})#вызов функции которая инициирует передачу данных серверу

 

            def AddStateTypeToDB(self, item_str):#метод добавления типа состяния в базу данных на сервере

                        self.InitSender("/add_state_type",{"state_name" : item_str})#вызов функции которая инициирует передачу данных серверу

 

            def AddOrderToDB(self, item_str):#метод добавления заказа в базу данных на сервере

                        self.InitSender("/add_order",{"order_name" : item_str})#вызов функции которая инициирует передачу данных серверу

 

            def InitSender(self, path, data):#метод который инициирует передачу данных серверу

                        sender = DataSender(path,data)#создание класса используемый для отправки сообщени серверу в отдельном потоке

                        sender.start()#начало исполнение потока

                        sender.exec_()#старт цикла обработкии сообщений созданного потока

 

            def ReadPlacesFromServer(self):#метод для читывания списка участков с сервера

                        return http_utils.request_data(WebServerAddress, "/read_places",{})#вызов функции запросы данных с сервера

 

            def ReadAllItemsFromServer(self, in_id, out_id):#чтение списка записей о предметах с сервера для выбранных участков

                        data = http_utils.request_data(WebServerAddress, "/get_items", {"place_type_in":in_id, "place_type_out":out_id})#вызов функции запросы данных с сервера

                        self.View.SetInputTableData(filter( lambda x: True if int(x["place_id"]) == in_id else False, data ))#вызов функции вывода полученных данных в элементы управления интерфейса

                        self.View.SetOutputTableData(filter( lambda x: True if int(x["place_id"]) == out_id else False, data ))#вызов функции вывода полученных данных в элементы управления интерфейса

 

            def onViewSetted(self):#метод события прикрепления вида к документу

                        self.View.InitPlaceComboBoxes(self.ReadPlacesFromServer())#установка в выпадающие списки на форме приложения списка отделов.

 

            def GetAddFormInitData(self, form):#метод для получения с писка типа предметов, состояний и заказов с сервера для формы изменения состояния предметов

                        items_data = http_utils.request_data(WebServerAddress, "/read_items",{})#вызов функции запросы данных с сервера

                        states_data = http_utils.request_data(WebServerAddress, "/read_states",{})#вызов функции запросы данных с сервера

                        orders_data = http_utils.request_data(WebServerAddress, "/read_orders",{})#вызов функции запросы данных с сервера

                        form.InitFormData(items_data,states_data,orders_data)#устновка полученных значения в элементы управлния формы

 

            def UpdateItems(self, item_id, item_type, place_id, number, state_id, order_id):#метод для обновления списка предметов на сервере

                        self.InitSender("/update_items",{"item_id":item_id, "item_type": item_type, "place_id": place_id, "number" : number, "state_id" : state_id, "order_id":order_id})#вызов функции которая инициирует передачу данных серверу

 

app = QApplication(sys.argv) #создание обьекта приложения Qt

window = QMainWindow()#создание обьекта класса основного окна

 

ui = Ui_MainWindow()#создание обекта класса графического интерфейса

 

appDoc = WorkflowDocument(app)#создание обьекта документа

appDoc.SetView(ui)#привяка вида к документу

ui.setupDocument(appDoc)#вызов метода сохранение ссылки вида на его документ

ui.setupUi(window)#привязка основного окна к классу графического интерфейса

 

window.show()# метод отрисовывающий окно

appDoc.onViewSetted()#событие установки вида

sys.exit(app.exec_())#цикл обработки сообщений приложения

 

# -*- coding: utf-8 -*-

 

# Form implementation generated from reading ui file "AddForm.ui"

#

# Created: Wed Apr 10 21:23:47 2013

#      by: PyQt4 UI code generator 4.9.1

#

# WARNING! All changes made in this file will be lost!

 

from PyQt4 import QtCore, QtGui#загрузка модуля привязок pyqt к основному модуля билиотеки qt и графической билиотеки

 

try:#получение ссылки на функцию декодирования из кодировки УТФ8

            _fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:#если такой функции нет, то создается лямбда функция которая возвращает свой аргумент. т.е. ничего не делает

            _fromUtf8 = lambda s: s

 

from CustomControls import *#получение всех обьектов из модуля собственых элементов управления

class Ui_AddForm(object):#клас графического интерфейа окна изменения состояния предметов

            def setupUi(self, AddForm):

                        AddForm.setObjectName(_fromUtf8("AddForm"))#создание обьектов элементов управления, привязка их к сетка окна, установка размеров, все это гененриуется автоматически на основе файла редактора

                        AddForm.resize(565, 292)

                        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)

                        sizePolicy.setHorizontalStretch(0)

                        sizePolicy.setVerticalStretch(0)

                        sizePolicy.setHeightForWidth(AddForm.sizePolicy().hasHeightForWidth())

                        AddForm.setSizePolicy(sizePolicy)

                        self.buttonBox = QtGui.QDialogButtonBox(AddForm)

                        self.buttonBox.setGeometry(QtCore.QRect(370, 250, 176, 27))

                        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)

                        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)

                        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))

                        self.item_type_comboBox = XDatedComboBox(AddForm)

                        self.item_type_comboBox.setGeometry(QtCore.QRect(10, 30, 541, 27))

                        self.item_type_comboBox.setObjectName(_fromUtf8("item_type_comboBox"))

                        self.item_number_lineEdit = QtGui.QLineEdit(AddForm)

                        self.item_number_lineEdit.setGeometry(QtCore.QRect(420, 80, 131, 27))

                        self.item_number_lineEdit.setObjectName(_fromUtf8("item_number_lineEdit"))

                        self.order_comboBox = XDatedComboBox(AddForm)

                        self.order_comboBox.setGeometry(QtCore.QRect(10, 200, 541, 27))

                        self.order_comboBox.setObjectName(_fromUtf8("order_comboBox"))

                        self.item_number_label = QtGui.QLabel(AddForm)

                        self.item_number_label.setGeometry(QtCore.QRect(306, 80, 101, 20))

                        self.item_number_label.setObjectName(_fromUtf8("item_number_label"))

                        self.item_type_label = QtGui.QLabel(AddForm)

                        self.item_type_label.setGeometry(QtCore.QRect(20, 10, 121, 17))

                        self.item_type_label.setObjectName(_fromUtf8("item_type_label"))

                        self.order_label = QtGui.QLabel(AddForm)

                        self.order_label.setGeometry(QtCore.QRect(20, 180, 67, 17))

                        self.order_label.setObjectName(_fromUtf8("order_label"))

                        self.state_label = QtGui.QLabel(AddForm)

                        self.state_label.setGeometry(QtCore.QRect(20, 130, 91, 17))

                        self.state_label.setObjectName(_fromUtf8("state_label"))

                        self.state_comboBox = XDatedComboBox(AddForm)

                        self.state_comboBox.setGeometry(QtCore.QRect(10, 150, 541, 27))

                        self.state_comboBox.setObjectName(_fromUtf8("state_comboBox"))

 

                        self.is_adding_radioButton = QtGui.QRadioButton(AddForm)

                        self.is_adding_radioButton.setGeometry(QtCore.QRect(20, 80, 116, 22))

                        self.is_adding_radioButton.setChecked(True)

                        self.is_adding_radioButton.setObjectName(_fromUtf8("is_adding_radioButton"))

                        self.is_removing_radioButton = QtGui.QRadioButton(AddForm)

                        self.is_removing_radioButton.setGeometry(QtCore.QRect(150, 80, 116, 22))

                        self.is_removing_radioButton.setObjectName(_fromUtf8("is_removing_radioButton"))

 

                        self.retranslateUi(AddForm)#вызво функции которая установит строковые константы по умолчанию в элементы

                        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), AddForm.accept)#подключение сигналов кнпок окей и отмена

                        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), AddForm.reject)

                        QtCore.QMetaObject.connectSlotsByName(AddForm)

 

            def retranslateUi(self, AddForm):#функция которая установит строковые константы по умолчанию в элементы

                        AddForm.setWindowTitle(QtGui.QApplication.translate("AddForm", "Обновить предмет", None, QtGui.QApplication.UnicodeUTF8))

                        self.item_number_label.setText(QtGui.QApplication.translate("AddForm", "Количество", None, QtGui.QApplication.UnicodeUTF8))

                        self.item_type_label.setText(QtGui.QApplication.translate("AddForm", "Тип предмета", None, QtGui.QApplication.UnicodeUTF8))

                        self.order_label.setText(QtGui.QApplication.translate("AddForm", "Заказ", None, QtGui.QApplication.UnicodeUTF8))

                        self.state_label.setText(QtGui.QApplication.translate("AddForm", "Состояние", None, QtGui.QApplication.UnicodeUTF8))

                        self.is_adding_radioButton.setText(QtGui.QApplication.translate("AddForm", "Приход", None, QtGui.QApplication.UnicodeUTF8))

                        self.is_removing_radioButton.setText(QtGui.QApplication.translate("AddForm", "Расход", None, QtGui.QApplication.UnicodeUTF8))

 

 

            def setupDocument(self, document_ref):#установка ссылки на документ

                        self.document = document_ref

                        self.document.GetAddFormInitData(self)# вызов метода для получения с писка типа предметов, состояний и заказов с сервера для формы изменения состояния предметов

 

            def InitFormData(self, items, states, orders):#устновка полученных значения в элементы управлния формы

                        for value in items:#для каждого типа предмета в списке этих самых предметов

                                   self.item_type_comboBox.AddItem(value["item_type"], value["item_id"])#добавления пары ключ значения в выпадающий список

                        for value in states:#да тоже саоме для состяоний

                                   self.state_comboBox.AddItem(value["state_type"], value["state_id"])

                        for value in orders:#и для заказаов

                                   self.order_comboBox.AddItem(value["order_type"], value["order_id"])

 

            def SetUpdatedItemInitialData(self, initial_item_id, initial_place_id):#утсановка начальных данных для изменяемого предмета

                        self.place_id = initial_place_id# номер отдела где дело происходит

                        self.item_type_comboBox.SetToData(initial_item_id)#устанавливаем исходны отдел в выпадающем спмске

 

            def GetQuanity(self):#получение количества из соответвующего поля ввода на форме

                        responce = self.item_number_lineEdit.text()#получение текста из элемента управления

                        responce = unicode(responce)#переводим в уникод

                        responce = responce.encode("utf-8")#кодируем в утф 8

                        responce = responce.strip()#режем пробелы и прочее по сторонам

                        if responce:#если там чтот то осталось

                                   if self.is_adding_radioButton.isChecked():#проверяем состоние радиокнопки дабавляения

                                               return abs(int(responce))#возвращаем положительное число с этом случае

                                   if self.is_removing_radioButton.isChecked():#иначе отрицательное конечно

                                               return -abs(int(responce))

                        return None#или ничего

 

# -*- coding: utf-8 -*-

__author__ = "leviathan"

 

from PyQt4 import QtCore, QtGui, Qt#загрузка модуля привязок pyqt к основному модуля билиотеки qt и графической билиотеки

 

class XDatedComboBox(QtGui.QComboBox):#выпадающий список где сохраняется пара ключ - значение

            def AddItem(self, string, data):#метод добавления данных

                        self.addItem(string, userData = data)#строка и данные

            def GetSelectedData(self):#мктод получения выбранных пользователем данных

                        return self.itemData(self.currentIndex()).toInt()[0]#данные по текущему индексу. там лист возращается, потмоу берем по индексу 0

            def SetToData(self, data):#установить интедкс по ключу данных

                        index = self.findData(data)#ищем нужный индекс по данным

                        self.setCurrentIndex(index)#ну и ставим элемент управления по этому индексу

 

class user_table_item(QtGui.QTableWidgetItem):#тип данных для таблицы, где ячейки хранят пользовательские данные

            def __init__(self, data, user_data):#конструктор куда мы даем данные и ключ

                        QtGui.QTableWidgetItem.__init__(self, unicode(data),QtGui.QTableWidgetItem.UserType)#родительский конструктор

                        self.user_data = user_data#сохраняем в свойсве класса пользователбские данные

 

class XContexedTable(QtGui.QTableWidget):#таблицы, где ячейки хранят пользовательские данные и есть контексное меню

 

            def __init__(self, *args):

                        QtGui.QTableWidget.__init__(self, *args)#родительский конструктор

                        self.setSelectionBehavior(int(QtGui.QAbstractItemView.SingleSelection))#ставим настрйоку что можно выделять только одну строку

                        self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)#ставим настриойку что ячейки нельзя редактировать

                        self.contextMenu = QtGui.QMenu()#создаем меню

                        self.update_action = QtGui.QAction(u"Обновить", self)#делаем в нем одно действие обновить

                        self.contextMenu.addAction(self.update_action)#прикрепляем его к меню

 

 

            def contextMenuEvent(self, event):#событие вызова контексного меню

                        self.contextMenu.exec_(event.globalPos())#запуск обработки сообщений конектсного меню

 

 

            def GetSelectedItemUserData(self, column):#метод получения ключа выбранного пользователем предмета в талице

                        select = self.selectionModel()#получен6ия структуры с данными о выбранном

                        if select.hasSelection():#если что то выбранно

                                   selected_row = select.selectedRows()[0].row()#получам номер строки

                                   item = self.item(selected_row, column)#получаем предмет таблицы

                                   return item.user_data#возвращаем пользовательмские данные

                        else:

                                   return None#ну и ничего не возвращаем иначе

 

 

# -*- coding: utf-8 -*-

 

# Form implementation generated from reading ui file "Workflow.ui"

#

# Created: Sat Apr  6 14:30:48 2013

#      by: PyQt4 UI code generator 4.9.1

#

# WARNING! All changes made in this file will be lost!

 

from PyQt4 import QtCore, QtGui, Qt#загрузка модуля привязок pyqt к основному модуля билиотеки qt и графической билиотеки

from functools import partial#подключение функции частичных функций

try:#получение ссылки на функцию декодирования из кодировки УТФ8

            _fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:#если такой функции нет, то создается лямбда функция которая возвращает свой аргумент. т.е. ничего не делает

            _fromUtf8 = lambda s: s

from CustomControls import *#получение всех обьектов из модуля собственых элементов управления

 

from AddForm import Ui_AddForm#импорт класса пользовательскоого интерфейса формы обновления состояния предмета

 

class Ui_MainWindow(object):#клас графического интерфейа основного окна

            def setupUi(self, MainWindow):#создание обьектов элементов управления, привязка их к сетка окна, установка размеров, все это гененриуется автоматически на основе файла редактора

                        MainWindow.setObjectName(_fromUtf8("MainWindow"))

                        MainWindow.resize(1200, 600)

                        self.centralwidget = QtGui.QWidget(MainWindow)

                        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

                        self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget)

                        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))

                        self.gridLayout = QtGui.QGridLayout()

                        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))

                        self.input_table = XContexedTable(self.centralwidget)

                        self.input_table.setEnabled(True)

                        self.input_table.setObjectName(_fromUtf8("input_table"))

                        self.input_table.setColumnCount(0)

                        self.input_table.setRowCount(0)

                        self.gridLayout.addWidget(self.input_table, 2, 0, 1, 1)

                        self.output_table = XContexedTable(self.centralwidget)

                        self.output_table.setObjectName(_fromUtf8("output_table"))

                        self.output_table.setColumnCount(0)

                        self.output_table.setRowCount(0)

                        self.gridLayout.addWidget(self.output_table, 2, 1, 1, 1)

                        self.add_input_item = QtGui.QPushButton(self.centralwidget)

                        self.add_input_item.setObjectName(_fromUtf8("add_input_item"))

                        self.gridLayout.addWidget(self.add_input_item, 3, 0, 1, 1)

                        self.add_output_item = QtGui.QPushButton(self.centralwidget)

                        self.add_output_item.setObjectName(_fromUtf8("add_output_item"))

                        self.gridLayout.addWidget(self.add_output_item, 3, 1, 1, 1)

                        self.input_table_label = QtGui.QLabel(self.centralwidget)

                        self.input_table_label.setObjectName(_fromUtf8("input_table_label"))

                        self.gridLayout.addWidget(self.input_table_label, 0, 0, 1, 1)

                        self.output_table_label = QtGui.QLabel(self.centralwidget)

                        self.output_table_label.setObjectName(_fromUtf8("output_table_label"))

                        self.gridLayout.addWidget(self.output_table_label, 0, 1, 1, 1)

                        self.input_place_switch = XDatedComboBox(self.centralwidget)

                        self.input_place_switch.setObjectName(_fromUtf8("input_place_switch"))

                        self.gridLayout.addWidget(self.input_place_switch, 1, 0, 1, 1)

                        self.output_place_switch = XDatedComboBox(self.centralwidget)

                        self.output_place_switch.setObjectName(_fromUtf8("output_place_switch"))

                        self.gridLayout.addWidget(self.output_place_switch, 1, 1, 1, 1)

                        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)

                        MainWindow.setCentralWidget(self.centralwidget)

                        self.menubar = QtGui.QMenuBar(MainWindow)

                        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))

                        self.menubar.setObjectName(_fromUtf8("menubar"))

                        self.database_menu = QtGui.QMenu(self.menubar)

                        self.database_menu.setObjectName(_fromUtf8("database_menu"))

                        self.file_menu = QtGui.QMenu(self.menubar)

                        self.file_menu.setObjectName(_fromUtf8("file_menu"))

                        MainWindow.setMenuBar(self.menubar)

                        self.exit_action = QtGui.QAction(MainWindow)

                        self.exit_action.setObjectName(_fromUtf8("exit_action"))

                        self.item_type_action = QtGui.QAction(MainWindow)

                        self.item_type_action.setObjectName(_fromUtf8("item_type_action"))

                        self.place_type_action = QtGui.QAction(MainWindow)

                        self.place_type_action.setObjectName(_fromUtf8("place_type_action"))

                        self.state_type_action = QtGui.QAction(MainWindow)

                        self.state_type_action.setObjectName(_fromUtf8("state_type_action"))

                        self.order_action = QtGui.QAction(MainWindow)

                        self.order_action.setObjectName(_fromUtf8("order_action"))

                        self.database_menu.addAction(self.item_type_action)

                        self.database_menu.addAction(self.place_type_action)

                        self.database_menu.addAction(self.state_type_action)

                        self.database_menu.addAction(self.order_action)

                        self.file_menu.addAction(self.exit_action)

                        self.menubar.addAction(self.file_menu.menuAction())

                        self.menubar.addAction(self.database_menu.menuAction())

 

                        self.retranslateUi(MainWindow)

                        QtCore.QMetaObject.connectSlotsByName(MainWindow)

 

                        QtCore.QObject.connect(self.item_type_action, QtCore.SIGNAL("triggered()"), self.AddItemType)#поключение сигналов нажатия на рахные части интерфейса к соответввующим функциям обработки

                        QtCore.QObject.connect(self.place_type_action, QtCore.SIGNAL("triggered()"), self.AddPlaceType)

                        QtCore.QObject.connect(self.state_type_action, QtCore.SIGNAL("triggered()"), self.AddStateType)

                        QtCore.QObject.connect(self.order_action, QtCore.SIGNAL("triggered()"), self.AddOrderType)

 

                        QtCore.QObject.connect(self.exit_action, QtCore.SIGNAL("triggered()"), self.document.application.quit)

 

                        QtCore.QObject.connect(self.input_table.update_action, QtCore.SIGNAL("triggered()"), partial(self.update_item, self.input_table, self.input_place_switch))

                        QtCore.QObject.connect(self.output_table.update_action, QtCore.SIGNAL("triggered()"), partial(self.update_item, self.output_table, self.output_place_switch))

 

                        QtCore.QObject.connect(self.add_input_item, QtCore.SIGNAL("pressed()"), partial(self.OpenAddDialog,-1, self.input_place_switch))

                        QtCore.QObject.connect(self.add_output_item, QtCore.SIGNAL("pressed()"), partial(self.OpenAddDialog, -1, self.output_place_switch))

 

                        self.refresh_timer = QtCore.QTimer()#таймер, создание объекта его точнее

                        self.refresh_timer.start(2000)#запускаем его с интервалом в 2 с.

                        QtCore.QObject.connect(self.refresh_timer, QtCore.SIGNAL("timeout()"), self.RefreshTables)#к сигналу его переполнения подключаем функция обновления содержимого таблиц предметов

 

            def update_item(self, table, switch):#обновление выбранного предмета в таблице

                        selected_user_data = table.GetSelectedItemUserData(0)#получаем данные выбранного предмета в таблице

                        if selected_user_data is None:#если ничег оне выьрано уходим

                                   return

                        self.OpenAddDialog(selected_user_data, switch)#создаем диалог

 

            def OpenAddDialog(self, initial_type, switch):#создание диалога изменения состояния предмета

                        ui = Ui_AddForm()#создание обекта класса графического интерфейса

                        window = QtGui.QDialog()#создание обьекта класса окна диалога

 

                        QtCore.QObject.connect(window, QtCore.SIGNAL("accepted()"), partial(self.AddPressed, ui)) #подключение обработчика к сигналу нажатия на кнопку ок

 

                        ui.setupUi(window)#привязка окна к классу графического интерфейса

                        ui.setupDocument(self.document)#вызов метода сохранение ссылки вида на его документ

 

                        ui.SetUpdatedItemInitialData(initial_type  , switch.GetSelectedData())#утсановка начальных данных для изменяемого предмета

 

                        window.setModal(True)#отрисовка окна в модальном режиме

                        window.show()#показывание окна

                        return window.exec_()#обработка сообщений

 

            def AddPressed(self, form):#обработка нажатия окея на форме обновления предмета

                        item_type = form.item_type_comboBox.GetSelectedData()#получение кода типа предмета

                        place_id = form.place_id#получение кода участка

                        number = form.GetQuanity()#получение количества

                        state_id = form.state_comboBox.GetSelectedData()#получение кода состояния

                        order_id = form.order_comboBox.GetSelectedData()#получение кода заказа

 

                        if not item_type:#если чего то нет заканчиваем функцию

                                   return

                        if not place_id:

                                   return

                        if not number:

                                   return

                        if not state_id:

                                   return

                        if not order_id:

                                   return

 

                        self.document.UpdateItems(1, item_type, place_id, number, state_id, order_id)#говорим документу что нужно послать наши новые данные по предмету на сервер

 

            def AddItemType(self):#обработка событий меню на добавление типа предметов участков заказов и прочего

                        self.AskerRoutine(u"Добавление типа предметов",u"Введите название нового типа наименования", self.document.AddItemTypeToDB)#функция опрашивателя пользователя

            def AddPlaceType(self):

                        self.AskerRoutine(u"Добавление типа участка",u"Введите название нового типа участа", self.document.AddPlaceTypeToDB)

            def AddStateType(self):

                        self.AskerRoutine(u"Добавление типа состояния",u"Введите название нового типа состояния", self.document.AddStateTypeToDB)

            def AddOrderType(self):

                        self.AskerRoutine(u"Добавление заказа",u"Введите название нового заказа", self.document.AddOrderToDB)

 

            def AskerRoutine(self, title, text, handler):#функция опрашивателя пользователя

                        responce, ok = QtGui.QInputDialog.getText(self.centralwidget, title, text)#спрашивающий диалог, там введут новые данные

                        if ok:#проверяем ввели ли

                                   if responce:

                                               responce = unicode(responce)#в уникод

                                               responce = responce.encode("utf-8")#кодируем в утф 8

                                               responce = responce.strip()#режем пробелы

                                               handler(responce)#ну и в переданный в аргумент обработчик передаем полученные данные

 

            def InitPlaceComboBoxes(self, places_dict):#запись списка возможных участков в выпадаюище списки

                        for value in places_dict:#для каждого места

                                   self.input_place_switch.AddItem(value["place_type"], value["place_id"])#пишем его в выпадиющий список, чтоб пользователь мог выбрать

                                   self.output_place_switch.AddItem(value["place_type"], value["place_id"])

 

            def RefreshTables(self):#метод обновления данных в таблицах предметов

                        in_id = self.input_place_switch.GetSelectedData()#получения номера входного и выходного участка

                        out_id = self.output_place_switch.GetSelectedData()

                        self.document.ReadAllItemsFromServer(in_id, out_id)#по этим номерам запрос данных у сервера

 

 

            def retranslateUi(self, MainWindow):#первоначальная запись строковых констант в элементы управления

                        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))

                        self.add_input_item.setText(QtGui.QApplication.translate("MainWindow", "Добавить", None, QtGui.QApplication.UnicodeUTF8))

                        self.add_output_item.setText(QtGui.QApplication.translate("MainWindow", "Добавить", None, QtGui.QApplication.UnicodeUTF8))

                        self.input_table_label.setText(QtGui.QApplication.translate("MainWindow", "Входной стеллаж", None, QtGui.QApplication.UnicodeUTF8))

                        self.output_table_label.setText(QtGui.QApplication.translate("MainWindow", "Выходной стеллаж", None, QtGui.QApplication.UnicodeUTF8))

                        self.database_menu.setTitle(QtGui.QApplication.translate("MainWindow", "База данных", None, QtGui.QApplication.UnicodeUTF8))

                        self.file_menu.setTitle(QtGui.QApplication.translate("MainWindow", "Файл", None, QtGui.QApplication.UnicodeUTF8))

                        self.exit_action.setText(QtGui.QApplication.translate("MainWindow", "Выход", None, QtGui.QApplication.UnicodeUTF8))

                        self.item_type_action.setText(QtGui.QApplication.translate("MainWindow", "Добавить тип предмета", None, QtGui.QApplication.UnicodeUTF8))

                        self.place_type_action.setText(QtGui.QApplication.translate("MainWindow", "Добавить тип отдела", None, QtGui.QApplication.UnicodeUTF8))

                        self.state_type_action.setText(QtGui.QApplication.translate("MainWindow", " Добавить тип состояния", None, QtGui.QApplication.UnicodeUTF8))

                        self.order_action.setText(QtGui.QApplication.translate("MainWindow", "Добавить заказ", None, QtGui.QApplication.UnicodeUTF8))

 

            def SetInputTableData(self, data):#установка данных во входную талицу

                        self.SetDataToTable(self.input_table, data)#метод записи полученных от сервера данных по предметам в талицы ена основной форме

 

            def SetOutputTableData(self, data):#и выходную

                        self.SetDataToTable(self.output_table, data)#метод записи полученных от сервера данных по предметам в талицы ена основной форме

 

            def SetDataToTable(self, table, data):#метод записи полученных от сервера данных по предметам в талицы ена основной форме

 

                        columns_items_keys = ["item_type", "number", "state_type", "order_type"]#список ключей данных от сервера

                        table.clear()#чистим текущую таблицу

                        table.setRowCount(0)#сбрасиваем колитчество столбцоы

                        table_headers = [u"Предмет",u"Количетсво",u"Состояние",u"Заказ"]#устанавливаем заголовки

                        table.setColumnCount(len(table_headers))#устанавливаем количество колонок

                        table.setHorizontalHeaderLabels(table_headers)#устанавливаем заголовки

 

                        new_row_number = 0#счетчик номеров строк

                        for data_dict_for_row in data:#за каждую запись в полученных данных

                                   if int(data_dict_for_row["number"]) > 0:#если там количество предметов больше 0

 

                                               table.insertRow(new_row_number)#создаем новый столбец

                                               for index, item_key in enumerate(columns_items_keys):#за каждый ключ в ихном списке

                                                           item_data = data_dict_for_row[item_key]#полчаем данные

                                                           user_data = data_dict_for_row["item_type_id"]#в качестве ключа сохраняем айди предмета

                                                           item = user_table_item(item_data, user_data)#создаем обьект предмета таблицы

                                                           table.setItem(new_row_number,index,item)#устанавливаем этот предмет в таблицу

                                               new_row_number +=1#увеливаем счетчик строк

 

            def setupDocument(self, document_ref):#установка ссылки на документ

                        self.document = document_ref

# -*- coding: utf-8 -*-

 

import httplib#билиотека для работы по протоколу HTTP

import json#билиотека для работы c json

import zlib#билиотека для работы с архивами zip

 

 

def post_data_send(address, path, data): #функция отправки данных методом POST

            domain = address.split(":")[0]#получение доменного имени из адреса

            headers={#заголовки HTTP сообщения

            "(Request-Line)":"POST {0} HTTP/1.1".format(domain),

            "Host": domain,

            "Accept":"text/javascript, text/html, application/xml, text/xml, */*",

            "Accept-Language":"ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",

            "Accept-Encoding":"gzip, deflate",

            "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",}

            post_data = "&".join([ "{0}={1}".format(e, data[e]) for e in data.keys()])#формирование строки запроса из данных в аргументе функции

            conn = httplib.HTTPConnection(address)#создание подключения

            conn.request("POST", path, post_data, headers)#исполнение запроса

            response = conn.getresponse()#получение ответа

            return response.read()#чтение данных ответа

 

def request_data(address, path,data):#функция получения данных методом GET

            conn = httplib.HTTPConnection(address)#создание обьекта подключения

            get_data = "&".join([ "{0}={1}".format(e, data[e]) for e in data.keys()])#  #формирование строки запроса из данных в аргументе функции

            try:

                        conn.request("GET", path,get_data)#исполнение запроса

                        response = conn.getresponse()#получение ответа

                        if response.status == httplib.OK:#проверка что ответ получен без ошибок

                                   unzipped_data = zlib.decompress(response.read())#разархивирование данных

                                   answer_dict = json.loads(unzipped_data)#выгрузка данных из джейсон в слоаврь пайтона

                                   return answer_dict#возвращение полученного словаря

            except :#обработчик исключений

                        return {}#при ошибках вернем пуцстой словарь


ПРИЛОЖЕНИЕ Б 

Исходный код программы сервера контроля за движением материальных ценностей

create table if not exists items (

  key integer primary key autoincrement,

  item_id integer not null,

  item_type integer not null,

  place_type integer not null,

  number integer not null,

  state_type integer not null,

  order_type integer not null,

  change_time datetime NOT NULL

);

 

  create table if not exists item_types (

  type_id integer primary key autoincrement,

  item_name string not null

);

 

 

create table if not exists place_types (

  type_id integer primary key autoincrement,

  place_name string not null

);

 

 

create table if not exists state_types (

  type_id integer primary key autoincrement,

  state_name string not null

);

 

 

create table if not exists order_types (

  type_id integer primary key autoincrement,

  order_name string not null

);

 

#!/usr/bin/python

# -*- coding: utf-8 -*-

# configuration

 

# all the imports

import sqlite3#подключение модуля скулайта

from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, make_response#подклюение всяких полезных функций фласка

from contextlib import closing#импорт метода который закроет соединение с бд после обработки блока кода

 

import json#билиотека для работы c json

import zlib#билиотека для работы с архивами zip

 

FLASKR_SETTINGS ="init.py"#названпие файла с настрйоками

 

app = Flask(__name__)#создание веб приложения

app.config.from_object("init")#, silent=True#конфигурация приложения

 

def connect_db():#функция подключения к БД

            database_path = app.config["DATABASE"]#получение пути до бд

            return sqlite3.connect(database_path)#ну и вызов метода подключения из библиоткету скулайта

 

def init_db():#инициализация бд

            with closing(connect_db()) as db:#подключение к бд с последующим ее закрытием

                        with app.open_resource("schema.sql") as f:#с выполениекм сехмы

                                   db.cursor().executescript(f.read())#выполянем то чт ов схеме

                        db.commit()

 

@app.before_request#декоратор, того что дело выполнятся перед обработкой запроса

def before_request():#сам метод

            g.db = connect_db()#перед обработкой запроса подключаемся к бд. подключение сохраняем

 

@app.teardown_request#декоратор, того что дело выполнятся после обработки запроса

def teardown_request(exception):#сам метод

            g.db.close()# после обработки запроса подключение к бд. прикрываем

 

def create_responce_from_dict(entries):#метод создает ответ из пайтон дикта

            string_data = json.dumps(entries)#пишет в джейсон

            zipped_data = zlib.compress(string_data)#пакует зипом

            resp = make_response(zipped_data)#делает из этого обьект ответа

            resp.headers["Content-Encoding"] = "gzip"#не забывает об этом упомянуть в заголовках ответа

            return resp#возвращает

 

@app.route("/read_places", methods=["GET"])#обаботчик запроса по адресу слева

def read_places():

            cur = g.db.execute("select * from place_types")#выполняет запрос к БД, где выбирает все типы участков

            entries = [dict(place_id=row[0], place_type=row[1]) for row in cur.fetchall()]#читает это в словарь

            return create_responce_from_dict(entries)#и создает из этого ответ и посылает пользователю

 

 

@app.route("/read_items", methods=["GET"])#тоже самое, только спрашиваю типы предметов

def read_items():

            cur = g.db.execute("select * from item_types")

            entries = [dict(item_id=row[0], item_type=row[1]) for row in cur.fetchall()]

            return create_responce_from_dict(entries)

 

 

@app.route("/read_states", methods=["GET"])#тоже самое, только спрашиваю типы состояний

def read_states():

            cur = g.db.execute("select * from state_types")

            entries = [dict(state_id=row[0], state_type=row[1]) for row in cur.fetchall()]

            return create_responce_from_dict(entries)

 

@app.route("/read_orders", methods=["GET"])#тоже самое, только спрашиваю типы заказов

def read_orders():

            cur = g.db.execute("select * from order_types")

            entries = [dict(order_id=row[0], order_type=row[1]) for row in cur.fetchall()]

            return create_responce_from_dict(entries)

 

@app.route("/update_items", methods=["POST"])#обработка пост запроса на обновления состояния предмета

def update_items():

            g.db.execute("insert into items (item_id, item_type, place_type, number, state_type,order_type, change_time) values (?,?,?,?,?,?, datetime("now"))", [request.form["item_id"],request.form["item_type"],request.form["place_id"],request.form["number"],request.form["state_id"],request.form["order_id"]]) #в базу данных пишутся присланные данные

            g.db.commit()#исполнение изменений в БД

            return "New entry was successfully posted"#возвращение сообщения

 

@app.route("/get_items", methods=["GET"])#получение данных о предметах, по указанным в запросе кодам участка

def show_entries():

            if request.data:

                        data_dict = dict([e.split("=") for e in request.data.split("&")])#получение кодов участка из запроса

                        cur = g.db.execute("select items.place_type,item_types.item_name,  sum(items.number), state_types.state_name, order_types.order_name , items.item_type from (((items INNER JOIN item_types ON items.item_type = item_types.type_id)

                                                                          INNER JOIN place_types ON items.place_type = place_types.type_id)

                                                                          INNER JOIN state_types ON items.state_type = state_types.type_id)

                                                                          INNER JOIN order_types ON items.order_type = order_types.type_id WHERE items.place_type={0} or items.place_type={1} GROUP BY items.item_type, items.place_type, items.state_type, items.order_type".format(data_dict.get("place_type_in", 0), data_dict.get("place_type_out", 0))) #выполняет запрос к БД, где выбирает все типы участков

                        entries = [dict(place_id = row[0],item_type=row[1], number=row[2], state_type=row[3], order_type=row[4], item_type_id=row[5]) for row in cur.fetchall()]#читает это в словарь

                        return create_responce_from_dict(entries)#и создает из этого ответ и посылает пользователю

            else:

                        abort(401)

 

@app.route("/", methods=["GET"])#вывод даных о всез изменениях с предметами и отрисовка в шаблоне ХТМЛ

def show_all_entries():

            cur = g.db.execute("select items.key,item_types.item_name,  items.number, state_types.state_name, place_types.place_name,order_types.order_name , items.change_time from (((items INNER JOIN item_types ON items.item_type = item_types.type_id)

                                                              INNER JOIN place_types ON items.place_type = place_types.type_id)

                                                              INNER JOIN state_types ON items.state_type = state_types.type_id)

                                                              INNER JOIN order_types ON items.order_type = order_types.type_id") ##выполняет запрос к БД, где выбирает все типы участков

            entries = [dict(item_id = row[0],item_type=row[1], number=row[2], state_type=row[3], place_type = row[4],order_type=row[5], data=row[6]) for row in cur.fetchall()]#читает это в словарь

            return render_template("show_entries.html", entries=entries)#отрисовывает гипертекст по шаблону

 

 

 

@app.route("/add_item_type", methods=["POST"])#добавление типа предмета пост запросом

def add_item_type():

            new_item_type = request.form["item_name"]#чтение нвого типа из параметров запроса

            g.db.execute("insert into item_types (item_name) values (?)", [new_item_type])#выполнение обновление БД

            g.db.commit()#сохранение изменений

            return "New entry was successfully posted"#возвращение ободряющей надписи

 

@app.route("/add_place_type", methods=["POST"])#тоже самое для типа участка

def add_place_type():

            new_entry = request.form["place_name"]

            g.db.execute("insert into place_types (place_name) values (?)", [new_entry])

            g.db.commit()

            return "New entry was successfully posted"

 

@app.route("/add_state_type", methods=["POST"])#тоже самое для типа состояния

def add_state_type():

            new_entry = request.form["state_name"]

            g.db.execute("insert into state_types (state_name) values (?)", [new_entry])

            g.db.commit()

            return "New entry was successfully posted"

 

@app.route("/add_order", methods=["POST"])#тоже самое для типа заказа

def add_order():

            new_entry = request.form["order_name"]

            g.db.execute("insert into order_types (order_name) values (?)", [new_entry])

            g.db.commit()

            return "New entry was successfully posted"

 

# @app.route("/login", methods=["GET", "POST"])

# def login():

#          flash("Nice try")

#          return redirect(url_for("show_entries"))

 

# @app.route("/logout")

# def logout():

#          flash("Nice try")

#          return redirect(url_for("show_entries"))

 

if __name__ == "__main__":

            init_db()#инициализация бд

            app.run()#запуск приложения