Разработка ИС учета охраняемых объектов ЧОП 'Рубеж-М'
Введение
Постепенный рост охраняемых объектов
сопровождается обновлением производственного парка. Поэтому вопросам
обслуживания и охраны необходимо уделять первостепенное внимание, как с точки
зрения контроля и обеспечения плановой работы производства, так и с точки
зрения минимизации промышленных рисков и трагических последствий.
К тому, что компьютерные технологии прочно вошли
в нашу жизнь, мы привыкли уже достаточно давно. На сегодняшний день любая
организация на определенной стадии своего развития сталкивается с вопросом о
необходимости автоматизации. Предприятия, решившие внедрить систему
автоматизированного учета своей деятельности, руководствуются желанием
упростить уже существующий комплекс операций учета за счет оптимизации
документооборота и сокращения трудозатрат персонала компании.
Резкий подъем спроса на услуги автоматизации,
наблюдаемый в последнее время, в первую очередь связан с общим ростом
производства в стране. Но есть и другие, более глубинные причины, основанные на
понимании руководителями предприятий необходимости постановки на более
современный уровень систем планирования, расчета полной себестоимости,
определения центров затрат и т.д.
Основные направления деятельности ЧОП «Рубеж-М» -
охрана объектов. Сложно представить работу служб без автоматизации. Особенно,
если заметить, что в случае с трагическими последствиями, комиссия и органы
прокуратуры поднимают всю обязательную документацию, а ее отсутствие может
привести к печальным последствиям для должностных лиц. Без автоматизации управления
охраной подготовка даже простого аналитического отчета может вылиться в годы
труда.
В рамках работы ЧОП «Рубеж-М» необходима
информационная система (ИС), выполняющая следующие основные функции:
- учет номенклатуры оборудования;
- оформление заказа на охрану объектов и
обслуживание оборудования;
- формирование выходных документов:
- прайс-лист на запчасти и расходные материалы;
- договор на обслуживание оборудования;
- акт сдачи-приемки работ;
- дефектная ведомость;
- счет и счет-фактура, выставляемые клиенту;
- статистика.
Цель проекта - разработка ИС учета охраняемых
объектов ЧОП «Рубеж-М». Объект автоматизации -
ЧОП «Рубеж-М».
1. Технический проект
1.1 Описание предметной области
Компания ЧОП «Рубеж-М». готова предложить:
- Охрана объектов
- Электромонтах ТСО
- Пожарная безопасность
Основные направления деятельности ЧОП «Рубеж-М».
-
текущее и капитальное обслуживание, операции по инженерно-техническому
сопровождению сложных работ при капитальном обслуживании, операции РИР.
Система обслуживания и обслуживания оборудования
- это совокупность связанных положений и норм, определяющих организацию и
выполнение работ по техническому обслуживанию оборудования. Основные понятия и
термины системы:
Цель системы - сохранить в течение заданного
времени при заданных условиях эксплуатации производительность, точность и
другие показатели оборудования и охранной деятельности, гарантированные в
технической документации.
Сущность системы заключается в том, что после
отработки оборудованием определенного количества часов, кубических метров или
других показателей его работы, проводятся профилактические осмотры, различные
виды плановых обслуживаний.
Техническое обслуживание состоит в наблюдении за
состоянием оборудования, регулировке и устранении мелких неисправностей, обычно,
без остановки оборудования.
Плановые обслуживания в зависимости от объема,
сроков, сложности проведения подразделяются на текущие, средние и капитальные.
Модернизация оборудования устраняет моральный
износ либо изменяет специализацию оборудования для выполнения дополнительных
работ.
Обслуживающий цикл - повторяющаяся совокупность
различных видов планового обслуживание. Обслуживание цикл определяется
изготовителем оборудования и адаптируется предприятием под свои условия
эксплуатации.
Структура цикла - это заданный перечень и
чередование плановых обслуживание внутри цикла.
Состав нормативной базы системы обслуживание
оборудования:
- структура и продолжительность обслуживаемых
циклов оборудования;
- структура и продолжительность цикла
технического обслуживания;
- нормы трудоемкости;
- нормы расходов материалов.
Нормы времени на операции не указываются
изготовителем оборудования. Ранее они определялись профильными министерствами
или разрабатывались самими предприятиями. Паспорт на оборудование содержит
необходимую эксплуатационную документацию, документацию на обслуживание и
обслуживания. Если в паспорте указано, что оборудование является средством
измерения, то в обязательном порядке необходима проверка оборудования в
соответствии с паспортом и «законом о единстве средств измерений».
Руководит обслуживаемым хозяйством Главный
механик, у которого в подчинении: склад оборудования и запасных частей, а также
отделы, выполняющие конструкторскую и планово-хозяйственную работу для всего
обслуживаемого хозяйства.
За оборудование своего профиля также отвечают
главный энергетик, Служба КИПиА, АСУ ТП.
Ответственные (главный механик, энергетик)
составляют годовой план-график обслуживания оборудования на основе нормативной
документации, а также внеплановых заказов на обслуживание от обслуживаемых
организаций.
На основе годового плана определяется
необходимый объем работ, услуг, материалов, запасных частей. В соответствии с
годовым планом формируется минимальный план поставок материалов к необходимому
сроку. Объем обслуживания определяет необходимую численность и оснащенность
обслуживающей службы.
Этапы проведения планового обслуживание и
обслуживания (рисунки 1.2 и 1.3):
- подготовка к обслуживанию: подготовка
необходимой технической (при необходимости, договорной) документации,
приобретение необходимых материалов и запчастей, составление дефектной
ведомости на основе предварительного осмотра оборудования;
- остановка оборудования, разборка и уточнение
дефектной ведомости;
- замена деталей, выполнение необходимых работ,
сборка оборудования;
- вывод из обслуживание с оформлением необходимой
документации и проведением необходимых процедур и испытаний.
Рисунок 1.1 - Контекстная
диаграмма системы обслуживание и обслуживания
Рисунок 1.2 - Диаграмма
декомпозиции системы обслуживание и обслуживания
В дефектной ведомости фиксируется фактическое
состояние оборудования, объем предстоящих обслуживаемых работ. Ведомость можно
так же использовать для проверки качества последнего обслуживания.
Из всего вышеописанного складывается
документооборот обслуживающей службы. Несколько единиц документов для каждого
обслуживания: заявки на материалы, запасные части, дефектные ведомости,
паспорта на оборудования, нормативы на операции (один плановый обслуживание
может содержать от 3-х до нескольких десятков операций - и для каждой могут
требоваться свои материалы, инструменты, а для некоторых - оформление допусков,
учет требований по квалификации персонала и т.д.), акты вывода из обслуживания,
ввода в эксплуатацию.
Деятельность «Подготовка к обслуживанию»
(выделена цветом на рисунке 1.3) весьма трудоемка и не автоматизирована в
должной мере. На данный момент весь документооборот реализован с помощью
средств MS Word и MS Excel.
Учет заказов на выполнение работ, перечень запчастей и расходных материалов
ведутся в виде таблиц MS Excel,
которые при необходимости распечатываются. Дефектные ведомости, заявки на
материалы и запчасти и прочее подготавливается и хранится в виде документов MS
Word.
1.2 Обоснование необходимости
внедрения ИС
ИС необходима для обеспечения более высокой
производительность труда, большей надежности и достоверности информации, лучшей
ее сохранности.
Основной целью внедрения ИС является создание
единого информационного пространства, позволяющую решать не только учетные
функции, но и управленческие задачи. В сфере автоматизации учета заказов под
охрану объектов ИС поможет [1]:
- вести учет договоров;
- вести учет обслуживаемого оборудования;
- вести учет выездов специалистов (выполненных
работ);
- вести учет движения запасных частей;
- вести учет операций с оборудованием;
- осуществлять оперативное формирование отчетов;
- получать статистическую информацию на основе
данных, отражаемых в учетной системе.
Предприятие-заказчик сам определяет для себя
вариант внедрения. Существуют два варианта: комплексное внедрение и внедрение
собственными силами.
Комплексные системы достаточно дороги, внедрять
их довольно сложно и долго. Многие системы невозможно адаптировать без
разработчика, а предприятия зачастую сильно удалены от них. Примером могут
служить все импортные системы. В дополнении к сказанному: для импортных систем
высока стоимость работы консультантов, стоимость обучения, для эффективной
работы с разработчиком крайне желательно знание иностранного языка.
С другой стороны, системы российских
разработчиков часто используют «закрытые» для изменений системы, часто такие
системы не могут «пережить» смены очередной платформы, а когда команда уходит
на предприятие крупного заказчика, продукт просто умирает [1].
Поэтому необходим организованный переход и
совместная работа Службы Главного механика, технолога, инженера и т.д. Есть
много способов организации такой работы, но суть ее в том, что необходимо
определить технологическую политику предприятия, политику модернизации,
определить группы активов (важные, вспомогательные, закупаемые, сносимые,
подлежащие модернизации и т.д.). Необходимо определить политику организации
обслуживаемой службы: какие работы выполняются самим предприятием, что отдается
сторонним подрядчикам. Необходима политика материально-технического
обеспечения, ориентированная на обслуживание оборудования, система закупок на
основе стоимости владения технической политики и т.д.
Информационные системы обычно приобретаются на
достаточно долгий срок (среднее время «жизни» ИС - 5-10 лет, но это не предел -
во многих компаниях используются системы с гораздо большим «стажем» работы,
правда, и обрастающими за это время новыми возможностями). Чтобы система
автоматизации приносила ожидаемый эффект, она должна соответствовать данному
предприятию - его возможностям, уровню развития и т.д. Стоимость ИС для
небольшой фирмы не так уж и мала [2].
Несмотря на то, что в настоящее время существует
множество готовых решений в области автоматизации учета работ на предприятии, в
этих системах реализованы также десятки других задач, которые не все найдут
свое применение на конкретном предприятии в силу специфики его деятельности.
Критериев выбора систем автоматизации, как и
многих других достаточно сложных и дорогих товаров (например, автомобилей),
существует, конечно же, много. Какие-то из них крайне важны, какие-то могут
отражать очень индивидуальные потребности. В подобных ситуациях следует во
многом ориентироваться на «здравый смысл», а также иметь в виду некоторые
ключевые моменты, носящие специальный характер. Выбирая систему автоматизации,
стоит обратить внимание на следующее [3]:
- что система автоматизации может делать, или
какова ее функциональность;
- во что обойдется приобретение системы, запуск
ее в эксплуатацию и поддержание в рабочем состоянии, т.е. какова ее совокупная
стоимость владения (крайне важно знать именно общую стоимость, а не просто цену
программного обеспечения).
- есть ли гарантии успешного завершения проекта
внедрения и полноценного ввода системы в эксплуатацию;
- что у системы «внутри» и, следовательно,
насколько она надежна, долговечна, производительна, в конце концов, современна;
- какова эффективность и возможные сроки
окупаемости системы;
- уровень и качество сервиса в послепродажный
период;
- возможность сопровождать и развивать систему
силами специалистов самой фирмы;
- каковы перспективы системы, будет ли она
развиваться и поддерживаться поставщиком в будущем.
Очень важно сначала выявить реальные потребности
фирмы. Определить реальные потребности фирмы в автоматизации - дело не простое.
Очень хорошо, если на фирме разработан план развития на несколько лет вперед, в
котором определена роль информационных технологий и описана последовательность
создания корпоративной автоматизированной системы управления. Такой продуманный
подход дает наибольшую отдачу, существенно снижает риск выбрать «не ту» ИС и
избежать проблем так называемой «лоскутной» автоматизации. При этом в качестве
первоочередных задач может рассматриваться автоматизация наиболее критичных на
данном этапе видов деятельности («узких» мест, от которых существенно зависит
жизнь фирмы) или наиболее трудоемких при обработке традиционным способом (среди
последних - например, бухгалтерский и налоговый учет, бюджетирование, расчет
зарплаты, и др.) [1].
Таким образом, для реализации задачи учета
заказов на выполнение работ по хранению и обслуживанию оборудования выбран
вариант реализации посредством разработки ИС учета охраняемых объектов, который
учитывает специфику процесса обработки информации в ЧОП «Рубеж-М».
1.3 Обзор существующих программных
продуктов
Рассмотрим несколько примеров реализованных
информационных систем учета обслуживаемых работ, а также систем, позволяющих
вести учет заказов клиентов.
Компания ITM предлагает предприятиям экономичный
путь внедрения информационной системы управления техническим обслуживанием и
обслуживанием (ИСУ ТОиР) оборудования (#"701556.files/image003.gif">
Рисунок 2.1 - Диаграмма потоков
данных верхнего уровня
Рисунок 2.2 - Диаграмма поток
данных на уровне подсистем
2.2 Инфологические проектирование
системы
База данных представляет собой некоторую целевую
модель предметной области. В БД (базах данных) находят отражение факты о
предметной области, которые лежат в сфере интересов пользователей
автоматизированной системы.
Проектирование БД начинается с предварительной
структуризации предметной области. Объекты реального мира классифицируются,
фиксируется их совокупность, подлежащая отображению в БД; для объекта каждого
типа определяется совокупность свойств, посредством которых они будут
описываться в БД; фиксируются виды отношений (взаимосвязей) между объектами.
Затем решается вопрос о том, какая информация об этих объектах должна быть
представлена в базе, и как это сделать с помощью данных [12].
Идея установления соответствия между состоянием
предметной области, его восприятием и представлением в БД лежит в основе так
называемого инфологического подхода к проектированию информационных систем.
Сущность - любой различимый объект (объект,
который мы можем отличить от другого), информацию о котором необходимо хранить
в базе данных. Для идентификации конкретных экземпляров сущностей в некотором
типе сущности при ее описании используются специальные атрибуты, играющие роль
идентификатора. Это может быть один или несколько атрибутов, значения которых
позволяют однозначно отличать один экземпляр сущности от другого [13].
Атрибут - поименованная характеристика сущности.
Его наименование должно быть уникальным для конкретного типа сущности, но может
быть одинаковым для различного типа сущностей. Атрибуты используются для
определения того, какая информация должна быть собрана о сущности. Здесь также
существует различие между типом и экземпляром. Однако каждому экземпляру сущности
присваивается только одно значение атрибута [13].
Ключ - минимальный набор атрибутов, по значениям
которых можно однозначно найти требуемый экземпляр сущности. Минимальность
означает, что исключение из набора любого атрибута не позволяет однозначно идентифицировать
сущность [13].
Модель «сущность-связь» является неформальной
моделью предметной области и используется на этапе инфологического
проектирования БД. Существует несколько подходов к построению этой модели,
однако общим для всех является использование трех основных конструктивных
элементов для представления составляющих предметной области - сущности,
атрибута, и связи. Информация о проекте суммируется с использованием
графических диаграмм [14].
Современные CASE-средства охватывают обширную
область поддержки многочисленных технологий проектирования информационных
систем: от простых средств анализа и документирования до полномасштабных
средств автоматизации, покрывающих весь жизненный цикл программного
обеспечения.
Наиболее трудоемкими этапами разработки
информационных систем являются этапы анализа и проектирования, в процессе
которых CASE-средства обеспечивают качество принимаемых технических решений и
подготовку проектной документации. При этом большую роль играют методы
визуального представления информации. Это предполагает построение структурных
или иных диаграмм в реальном масштабе времени, использование многообразной
цветовой палитры, сквозную проверку синтаксических правил. Графические средства
моделирования предметной области позволяют разработчикам в наглядном виде
изучать существующую информационную систему, перестраивать ее в соответствии с
поставленными целями и имеющимися ограничениями [15].
Среди таких
пакетов
- Rational Rose, Together Control Center, BPWin, ERWin, Model Mart, Silverrun
Business Process Modeller, Process Analyst.
Для инфологического проектирования базы данных
было выбрано CASE-средство Computer Associates ERwin 4.0.
Создание модели данных, как правило, начинается
с создания логической модели. После описания логической модели, проектировщик
может выбрать необходимую СУБД (систему управления базами данных) и ERwin
автоматически создаст соответствующую физическую модель. На основе физической
модели ERwin может сгенерировать системный каталог СУБД или соответствующий
SQL-скрипт. Этот процесс называется прямым проектированием (Forward
Engineering). Тем самым достигается масштабируемость - создав одну логическую
модель данных, можно сгенерировать физические модели под любую поддерживаемую
ERwin СУБД. С другой стороны, ERwin способен по содержимому системного каталога
или SQL-скрипту воссоздать и физическую, и логическую модель данных (Reverse
Engineering). На основе полученной логической модели данных можно сгенерировать
физическую модель для другой СУБД и затем сгенерировать ее системный каталог
[14].
В проектируемой модели использовалась
логико-физическая модель, описанная далее.
2.2.1 Логическое проектирование
В разрабатываемой системе можно выделить
следующие сущности: Группы, Реквизиты, Клиенты, МатЦенности, Заказы, МатЦенностиПоЗаказу,
Работники, СоставЗаказа, Специализации.диаграмма системы на логическом уровне
представлена на рисунке 2.3.
Рисунок 2.3 - ER-диаграмма
системы на логическом уровне
Данные в БД должны обладать свойством целостности.
Под целостностью данных понимается корректность данных и их непротиворечивость
в любой момент времени. Поддержание целостности базы данных может
рассматриваться как защита данных от неверных изменений или разрушения (этот
вопрос не относится к незаконным изменениям и разрушениям, которые являются
проблемой безопасности).
Выделяют три группы правил целостности [4, 5]:
- целостность по сущностям. Объекту или сущности
реального мира в реляционных базах данных соответствуют кортежи отношений.
Требование состоит в том, что любой кортеж любого отношения отличим от любого
другого кортежа этого отношения, т.е. другими словами, любое отношение должно
обладать первичным ключом. Это требование автоматически удовлетворяется, если в
системе не нарушаются базовые свойства отношений. Первичный ключ - это
минимальный набор атрибутов, по значениям которых можно однозначно найти
требуемый экземпляр сущности;
- целостность по ссылкам. База данных не должна
содержать несогласованных значений внешних ключей. Правило утверждает, что если
В ссылается на А, тогда А должно существовать. Говорят, что отношение, в
котором определен внешний ключ, ссылается на соответствующее отношение, в
котором такой же атрибут является первичным ключом. Требование целостности по
ссылкам, или требование внешнего ключа состоит в том, что для каждого значения
внешнего ключа, появляющегося в ссылающемся отношении, в таблице, на которую
ведет ссылка, должен найтись кортеж с таким же значением первичного ключа, либо
значение внешнего ключа должно быть неопределенным (т.е. ни на что не
указывать);
- целостность, определяемая пользователем. У
пользователя (или у разработчика) базы данных должна быть возможность
определить, какие операции должны быть запрещены, а какие разрешены, нужны ли
для разрешенных операций компенсирующие, и если да, то какие (т.е. возможность
каскадного удаления).
В разрабатываемой структуре БД учтены основные
правила целостности. Каждая сущность идентифицируется уникальным ключом, и
разработана система внешних ключей. База данных не содержит несогласованных
значений внешних ключей, то есть при работе с записями происходит каскадное
обновление связанных полей и каскадное удаление связанных записей.
Целостность, определяемая пользователем,
поддерживается ограничениями в таблицах базы данных на ввод неотрицательных
значений, а также обеспечением выбора значений внешних ключей из списков без
разрешения варианта ввода недопустимого значения.
Нормализация - процесс проверки и реорганизации
сущностей и атрибутов, т.е. разбиения таблицы на две или более, обладающих
лучшими свойствами при включении, изменении и удалении данных. Окончательная
цель нормализации сводится к получению такого проекта БД, в котором каждый факт
появляется лишь в одном месте, т. е. исключена избыточность информации. Это
делается не столько с целью экономии памяти, сколько для исключения возможной
противоречивости хранимых данных. Нормализация позволяет быть уверенным, что
каждый атрибут определен для своей сущности, значительно сократить объем памяти
для хранения информации и устранить аномалии в организации хранения данных.
Процесс нормализации сводится к последовательному приведению структуры данных к
нормальным формам - формализованным требованиям к организации данных.
Сущность находится в 1-й нормальной форме, когда
все атрибуты содержат атомарные значения. Среди атрибутов не должно встречаться
повторяющихся групп, т.е. несколько значений для каждого экземпляра.
Для приведения сущности к первой НФ следует
[12]:
- разделить сложные атрибуты на атомарные;
- создать новую сущность;
- перенести в нее все «повторяющиеся» атрибуты;
- выбрать возможный ключ для нового № (или
создать новый номер);
- установить идентифицирующую связь от прежней
сущности к новой, № прежней сущности станет внешним ключом для новой сущности.
Сущность находится во 2-й нормальной форме, если
она находится в первой НФ и каждый не ключевой атрибут полностью зависит от
первичного ключа. 2НФ имеет смысл для сущностей, имеющих сложный первичный
ключ.
Для приведения сущности ко второй НФ следует
[12]:
- выделить атрибуты, которые зависят только от
части первичного ключа, создать новую сущность;
- поместить атрибуты, зависящие от части ключа, в
их собственную (новую) сущность;
- установить идентифицирующую связь от прежней
сущности к новой.
Сущность находится в 3-й нормальной форме, если
она находится во 2НФ и никакой не ключевой атрибут не зависит от другого не
ключевого атрибута (не должно быть взаимозависимости между не ключевыми
атрибута).
Для приведения сущности к третьей НФ следует
[12]:
- создать новую сущность и перенести в нее
атрибуты с одной и той же зависимостью от не ключевого атрибута;
- использовать атрибуты, определяющие эту
зависимость в качестве первичного ключа новой сущности;
- установить не идентифицирующую связь от новой
сущности к старой.
Разработанная модель находится в 3-й нормальной
форме.
2.2.2 Физическое проектирование
Физическая модель данных зависит от конкретной
СУБД. В физической модели содержится информация обо всех объектах БД. Поскольку
стандартов на объекты БД не существует, физическая модель зависит от конкретной
реализации СУБД. Следовательно, одной и той же логической модели могут
соответствовать несколько разных физических моделей. Если в логической модели
не имеет значения, какой конкретно тип данных имеет атрибут, то в физической
модели важно описать всю информацию о конкретных физических объектах.
В качестве СУБД выбрана Microsoft
Access.диаграмма системы на физическом уровне представлена на рисунке 2.4.
Рисунок 2.4 - ER-диаграмма системы на физическом
уровне
Физическое описание модели удобнее всего
представить в виде таблиц. База данных проекта содержит таблицы, названия
которых соответствуют именам сущностей инфологической модели. Структура базы
данных описана в таблице 2.1.
Таблица 2.1 - Описание таблиц
базы данных
Наименование
таблицы
|
Наименование
поля
|
Тип
поля
|
Первичный
ключ
|
Внешний
ключ
|
Группы
|
ID
|
AutoNumber
|
Yes
|
No
|
|
Группа
|
Text(50)
|
No
|
No
|
Заказы
|
NЗаказа
|
AutoNumber
|
Yes
|
No
|
|
ДатаПриема
|
Date/Time
|
No
|
No
|
|
ДатаСдачи
|
Date/Time
|
No
|
No
|
|
КлиентID
|
Long
Integer
|
No
|
Yes
|
|
РаботникID
|
Long
Integer
|
No
|
Yes
|
|
Сумма
|
Currency
|
No
|
No
|
Клиенты
|
ID
|
AutoNumber
|
Yes
|
No
|
|
Наименование
|
Text(100)
|
No
|
No
|
|
Информация
|
Text(255)
|
No
|
No
|
|
Адрес
|
Text(100)
|
No
|
No
|
|
Телефоны
|
Text(30)
|
No
|
No
|
|
Реквизиты
|
Text(100)
|
No
|
No
|
|
ИНН
|
Text(15)
|
No
|
No
|
|
КПП
|
Text(15)
|
No
|
No
|
МатЦенности
|
Шифр
|
AutoNumber
|
Yes
|
No
|
|
ГруппаID
|
Long
Integer
|
No
|
Yes
|
|
Наименование
|
Text(100)
|
No
|
No
|
|
ЕдИзм
|
Text(10)
|
No
|
No
|
|
Информация
|
Text(255)
|
No
|
No
|
|
Количество
|
Single
|
No
|
No
|
|
Цена
|
Currency
|
No
|
No
|
МатЦенностиПоЗаказу
|
NЗаказа
|
Long
Integer
|
Yes
|
Yes
|
|
МЦ_ID
|
Long
Integer
|
Yes
|
Yes
|
|
Количество
|
Single
|
No
|
No
|
|
Цена
|
Currency
|
No
|
No
|
Работники
|
ТабN
|
AutoNumber
|
Yes
|
No
|
|
ФИО
|
Text(100)
|
No
|
No
|
|
СпециализацияID
|
Long
Integer
|
No
|
Yes
|
Реквизиты
|
Наименование
|
Text(100)
|
Yes
|
No
|
|
Адрес
|
Text(100)
|
No
|
No
|
|
Телефоны
|
Text(30)
|
No
|
No
|
|
Реквизиты
|
Text(100)
|
No
|
No
|
|
ИНН
|
Text(15)
|
No
|
No
|
|
КПП
|
Text(15)
|
No
|
No
|
|
ГенДиректор
|
Text(30)
|
No
|
No
|
|
ГлавБух
|
Text(30)
|
No
|
No
|
СоставЗаказа
|
ID
|
AutoNumber
|
Yes
|
No
|
|
NЗаказа
|
Long
Integer
|
No
|
Yes
|
|
ДатаС
|
Date/Time
|
No
|
No
|
|
ДатаПо
|
Date/Time
|
No
|
No
|
|
Работа
|
Text(255)
|
No
|
No
|
|
РаботникID
|
Long
Integer
|
No
|
Yes
|
|
Количество
|
Single
|
No
|
No
|
|
Стоимость
|
Currency
|
No
|
No
|
Специализации
|
ID
|
AutoNumber
|
Yes
|
No
|
|
Специализация
|
Text(50)
|
No
|
No
|
2.3 Используемые классификаторы и системы
кодирования
Классификатор - это
механизм (элемент модели), описывающий определенные черты структуры и поведения
системы. К классификаторам относятся классы, типы данных, интерфейсы,
подсистемы. Наиболее общими классификаторами являются классы. Все прочие
классификаторы определяются относительно их сходства с классами, с учетом их
ограничений по содержанию или использованию. При этом каждый вид классификатора
представлен в метамодели своим собственным классом. Большая часть свойств
класса есть и у классификаторов, однако каждый из них имеет свои ограничения
[11].
В процессе проектирования задачи были
использованы классификаторы, информация которых однозначно идентифицирует
объекты классифицируемого множества и признаки классификации, объективно отражает
существующие отношения между объектами и обеспечивает сопоставимость
показателей по качественным и количественным признакам.
В задаче используются классификаторы, перечень и
описание которых представлены в таблице 2.2.
Таблица 2.2 - Состав
классификаторов
Наименование
реквизита
|
Длина
кода в знаках
|
Вид
классификатора
|
Структура
кода
|
№
заказа
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
Таб.
№
|
3
|
Порядковая
|
Общесистемный
|
XХX
|
Код
МТР
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
Шифр
изделия
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
№
договора
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
№
акта приема-передачи
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
№
счета
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
№
счета-фактуры
|
4
|
Порядковая
|
Общесистемный
|
XХXX
|
2.4 Разработка интерфейса ИС
Пользователь имеет возможность выбора функций
системы, применяя кнопочное и пиктографическое меню. Пользователь видит перед
собой содержимое базы данных в виде экранного документа, в котором значения
реквизитов (полей) отвечают наименованиями из его предметной области согласно
заданию проекта, а не условным обозначениями полей базы данных.
Взаимодействие с пользователем осуществляется
посредством экранных форм. Граф переходов экранных форм (дерево диалога)
представлен на рисунке 2.5.
Рисунок 2.5 - Граф перехода экранных форм
3. Программа и методика испытаний
разработанной системы
3.1 Обоснование выбора СУБД
На сегодняшний день известно более двух десятков
форматов данных настольных СУБД, однако наиболее популярными следует признать
Access, Paradox, FoxPro и dBase.
Рассмотрим каждую из этих СУБД в отдельности.
и Visual dBase
Первая промышленная версия СУБД dBase -
dBase II (принадлежащая тогда компании Ashton-Tate, приобретенной позже
компанией Borland) появилась в начале 80-х годов. Благодаря простоте в
использовании, нетребовательности к ресурсам компьютера и, что не менее важно,
грамотной маркетинговой политике компании-производителя этот продукт приобрел
немалую популярность [4].
Хранение данных в dBase основано на принципе
«одна таблица - один файл» (эти файлы обычно имеют расширение *.dbf). MEMO-поля
и BLOB-поля (доступные в поздних версиях dBase) хранятся в отдельных файлах
(обычно с расширением *.dbt). Индексы для таблиц также хранятся в отдельных
файлах. При этом в ранних версиях этой СУБД требовалась специальная операция
реиндексирования для приведения индексов в соответствие с текущим состоянием
таблицы [4].
Формат данных dBase является открытым, что
позволило ряду других производителей заимствовать его для создания dBase-подобных
СУБД, частично совместимых с dBase по форматам данных. Например, весьма
популярная некогда СУБД FoxBase (разработанная Fox Software, Inc. и ныне
принадлежащая Microsoft) использовала формат данных dBase для таблиц, однако
форматы для хранения MEMO-полей и индексов были своими собственными,
несовместимыми с dBase.
После покупки dBase компанией Borland этот
продукт, получивший впоследствии название Visual dBase, приобрел набор
дополнительных возможностей, характерных для средств разработки этой компании и
для имевшейся у нее другой настольной СУБД - Paradox. Среди этих возможностей
были специальные типы полей для графических данных, поддерживаемые индексы,
хранение правил ссылочной целостности внутри самой базы данных, а также
возможность манипулировать данными других форматов, в частности серверных СУБД,
за счет использования BDE API и SQL Links [4].
В настоящее время Visual dBase принадлежит
компании dBase, Inc. Его последняя версия - Visual dBase 7.5 имеет следующие
возможности:
- cредства
манипуляции данными dBase и FoxPro всех версий;
- ядро доступа к данным Advantage Database Server
фирмы Extended Systems и ODBC-драйвер для доступа к данным этой СУБД;
- средства визуального построения запросов.
В конце 80-х - начале 90-х годов Paradox,
принадлежавший тогда компании Borland International, был весьма популярной
СУБД, в том числе и в нашей стране, где он одно время занимал устойчивые
позиции на рынке средств разработки настольных приложений с базами данных.
Принцип хранения данных в Paradox сходен с
принципами хранения данных в dBase - каждая таблица хранится в своем файле
(расширение *.db), MEMO- и BLOB-поля хранятся в отдельном файле (расширение
*.md), как и индексы (расширение *.px).
Однако, в отличие от dBase, формат данных
Paradox не является открытым, поэтому для доступа к данным этого формата
требуются специальные библиотеки. Например, в приложениях, написанных на C или
Pascal, использовалась некогда популярная библиотека Paradox Engine, ставшая
основой Borland Database Engine (BDE). Эта библиотека используется ныне в
приложениях, созданных с помощью средств разработки Borland (Delphi,
C++Builder), в некоторых генераторах отчетов (например, Crystal Reports) и в
самом Paradox. Существуют и ODBC-драйверы к базам данных, созданным различными
версиями этой СУБД [4].FoxPro и Visual FoxProведет свое происхождение от
настольной СУБД FoxBase фирмы Fox Software. Разрабатывая FoxBase в конце 80-х
годов, эта компания преследовала цель создать СУБД, функционально совместимую с
dBase с точки зрения организации файлов и языка программирования, но
существенно превышающую ее по производительности. Одним из способов повышения
производительности являлась более эффективная организация индексных файлов,
нежели в dBase, - по формату индексных файлов эти две СУБД несовместимы между
собой [4].
По сравнению с аналогичными версиями dBase,
FoxBase и более поздняя версия этого продукта, получившая название FoxPro,
предоставляли своим пользователям несколько более широкие возможности, такие
как использование деловой графики, генерация кода приложений, автоматическая
генерация документации к приложениям и т.д.
Впоследствии этот продукт был приобретен
компанией Microsoft. Его последние версии (начиная с версии 3.0, выпущенной в
1995 году) получили название Visual FoxPro. С каждой новой версией этот продукт
оказывался все более и более интегрирован с другими продуктами Microsoft, в
частности с Microsoft SQL Server, - в состав Visual FoxPro в течение нескольких
последних лет входят средства переноса данных FoxPro в SQL Server и средства
доступа к данным этого сервера из Visual FoxPro и созданных с его помощью
приложений [5].
Последняя версия этого продукта - Visual FoxPro
6.0, доступна и отдельно, и как составная часть Microsoft Visual Studio 6.0.
Отличительной особенностью этой настольной СУБД от двух рассмотренных выше
является интеграция этого продукта с технологиями Microsoft, в частности
поддержка COM (Component Object Model - компонентная объектная модель,
являющаяся основой функционирования 32-разрядных версий Windows и организации
распределенных вычислений в этой операционной системе), интеграция с Microsoft
SQL Server, возможности создания распределенных приложений, основанных на
концепции Windows DNA (Distributed interNet Applications) [5]. Fox Pro 6.0
предоставляет следующие возможности [4]:
- средства создания COM-объектов и
объектов для Microsoft Transaction Server, позволяющих создавать масштабируемые
многозвенные приложения для обработки данных;
- средства доступа к данным серверных СУБД,
базирующиеся на использовании OLE DB (набор COM-интерфейсов, позволяющий
осуществить унифицированный доступ к данным из разнообразных источников, в том
числе из нереляционных баз данных и иных источников, например Microsoft
Exchange);
- средства доступа к данным Microsoft SQL Server
и Oracle, включая возможность создания и редактирования таблиц, триггеров,
хранимых процедур;
- средства отладки хранимых процедур Microsoft
SQL Server;
- средство визуального моделирования компонентов
и объектов, являющиеся составными частями приложения - Visual Modeller;
- средство для управления компонентами
приложений, позволяющее осуществлять их повторное использование.
Итак, тенденции развития этого продукта
очевидны: из настольной СУБД Visual FoxPro постепенно превращается в средство
разработки приложений в архитектуре «клиент/сервер» и распределенных приложений
в архитектуре Windows DNA. Впрочем, эти тенденции в определенной степени
характерны для всех наиболее популярных настольных СУБД: и dBase, и Paradox
также позволяют осуществлять доступ к наиболее популярным серверным СУБД.Access
В отличие от Visual FoxPro, фактически
превратившегося в средство разработки приложений, Access ориентирован в первую
очередь на пользователей Microsoft Office, в том числе и не знакомых с
программированием. Это, в частности, проявилось в том, что вся информация,
относящаяся к конкретной базе данных, а именно таблицы, индексы (естественно,
поддерживаемые), правила ссылочной целостности, бизнес-правила, список
пользователей, а также формы и отчеты хранятся в одном файле, что в целом
удобно для начинающих пользователей.Access -
это функционально полная реляционная СУБД. В ней предусмотрены все необходимые
вам средства для определения и обработки данных, а также для управления ими при
работе с большими объемами информации [6].
В состав Access входят [6]:
- средства манипуляции данными Access
и данными, доступными через ODBC (последние могут быть «присоединены» к базе
данных Access);
- средства создания форм, отчетов и приложений;
при этом отчеты могут быть экспортированы в формат Microsoft Word или Microsoft
Excel, а для создания приложений используется Visual Basic for Applications,
общий для всех составных частей Microsoft Office;
- средства доступа к данным серверных СУБД через
OLE DB;
- средства создания клиентских приложений для
Microsoft SQL Server;
- средства администрирования Microsoft SQL
Server.
Система Access - это набор
инструментов конечного пользователя для управления базами данных. В ее состав
входят конструкторы таблиц, форм, запросов и отчетов. Эту систему можно рассматривать
и как среду разработки приложений. Используя макросы или модули для
автоматизации решения задач, можно создавать ориентированные на пользователя
приложения такими же мощными, как и приложения, написанные непосредственно на
языках программирования. При этом они будут включать кнопки, меню и диалоговые
окна [6]. специально спроектирован для создания многопользовательских
приложений, где файлы базы данных являются разделяемыми ресурсами в сети.
Система Access поддерживает обработку транзакций с гарантией их целостности.
Кроме того, предусмотрена защита на уровне пользователя, что позволяет
контролировать доступ к данным отдельных пользователей и целых групп.
Основываясь на изложенных выше данных в качестве
СУБД разрабатываемой системы был выбран Microsoft Access.
3.2 Обоснование выбора языка
программирования
Бурное развитие вычислительной техники,
потребность в эффективных средствах разработки программного обеспечения привели
к появлению систем программирования, ориентированных на так называемую «быструю
разработку», среди которых можно выделить Borland Delphi и Microsoft Visual
Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application
Development - среда быстрой разработки приложений) лежит
технология визуального проектирования и событийного программирования, суть
которой заключается в том, что среда разработки берет на себя большую часть
рутинной работы, оставляя программисту работу по конструированию диалоговых
окон и функций обработки событий [7].- это среда быстрой
разработки, в которой в качестве языка программирования используется язык
Delphi. Язык Delphi - строго типизированный
объектно-ориентированный язык, в основе которого лежит хорошо знакомый
программистам Object Pascal. - мощная система визуального
объектно-ориентированного проектирования, позволяющая решать множество задач, в
частности [8]:
- создавать законченные приложения для Windows
самой различной направленности, от чисто вычислительных и логических, до
графических и мультимедиа;
- быстро создавать (даже начинающим программистам)
профессионально выглядящий оконный интерфейс для любых приложений;
- создавать мощные системы работы с локальными и
удаленными базами данных;
- создавать справочные системы (файлы .hlp) для
своих приложений.
- и многое другое.
Мечта программистов о среде программирования, в
которой бы простота и удобство сочетались с мощью и гибкостью, стала
реальностью с появлением среды Delphi. Она обеспечивала визуальное
проектирование пользовательского интерфейса, имела развитый
объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и
уникальные по своей простоте и мощи средства доступа к базам данных. Язык
Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык
C++, но при этом он оказался весьма надежным и легким в изучении (особенно в
сравнении с языком C++). В результате, среда Delphi позволила программистам
легко создавать собственные компоненты и строить из них профессиональные
программы. Среда оказалась настолько удачной, что по запросам любителей C++
была позже создана среда C++Builder - клон среды Delphi на основе языка C++ (с
расширенным синтаксисом). Среда Delphi стала, по сути, одним из лучших средств
программирования для операционной системы Windows [9].
Общая продуктивность любых инструментов создания
программного обеспечения определяется следующими пятью важнейшими аспектами
[9]:
- качеством визуальной среды разработки;
- скоростью работы компилятора и быстродействием
откомпилированных программ;
- мощностью языка программирования и его
сложностью;
- гибкостью и масштабируемостью используемой
архитектуры баз данных;
- наличием поддерживаемых средой разработки
шаблонов проектирования и использования.
Безусловно, существует еще немало важных
факторов - например, вопросы установки, документация,
поддержка сторонних производителей и т.д. Тем не менее, можно считать, что этой
упрощенной модели вполне достаточно для объяснения, почему имеет смысл
остановить свой выбор на Delphi.
3.3 Назначение программы
Программа предназначена для автоматизации
деятельности работников ЧОП «Рубеж-М» в части учета номенклатуры оборудования,
оформление заказа на обслуживание оборудования, учета запчастей и расходных
материалов на складе, ведения прайс-листа на запчасти и расходные материалы,
формирования статистики, формирования и печати выходных документов.
3.4 Условия применения
Минимальные необходимые требования для
нормального функционирования системы: персональный компьютер на базе процессора
Intel Celeron с тактовой частотой 400MHz, 256 МБ оперативной памяти, свободное
пространство на жестком диске 10 Мб, VGA-совместимый дисплей (рекомендуется
SVGA-дисплей).
3.5 Описание задачи
Для загрузки программы следует запустить на
выполнение исполняемый файл Repair.exe
и далее работать с ним в соответствии с данным описанием.
После запуска программы на экране появляется
главная форма (рисунок Б.1), из главного меню которой можно получить доступ к
любой экранной форме.
Для редактирования данных об
организациях-клиентах, МТР, видах МТР, ответственных лицах, направлениях работы
ответственных лиц, информации об организации (рисунки Б.2 -
Б.5) следует выбрать соответствующий пункт меню «Справочники» главного меню
программы. Далее принципы работы с любой из этих форм одинаковы и соответствуют
описанному ниже.
Добавление, удаление или сохранение данных на
всех формах производится посредством соответствующих кнопок на формах,
снабженных всплывающими подсказками. Для добавления
новой записи следует нажать кнопку «+», после чего появится новая пустая строка
в таблице данных на форме. Для изменения данных следует выбрать необходимую
строку в таблице и ввести в нее новые значения полей. После добавления или
изменения следует нажать кнопку с дискетой для сохранения введенных данных,
либо кнопку «х» для удаления введенных данных. Для удаления выбранной в таблице
на форме записи следует нажать кнопку «х».
Для того чтобы распечатать данные на форме,
следует нажать кнопку с изображением принтера (при ее наличии), после чего на
экране появится сформированный отчет в формате MS
Excel (рисунки В.1 -
В.10), который можно либо просто просмотреть, либо отправить на печать.
Данные на главной форме можно отфильтровать по
различным критериям (диапазон дат, клиент), выбирать которые можно, выделяя их
галкой.
Для регистрации нового заказа на главной форме в
верхней таблице следует внести все необходимые данные. После этого в нижних
таблицах главной формы следует внести перечень выполняемых в рамках заказа
работ с указанием дат начала и окончания, а также перечень необходимых в рамках
выполнения этих работ МТР. При внесении данных вид МТР выбирается при нажатии
кнопки «…» в таблице данных, после чего появляется форма «МТР (запчасти и
расходные материалы)» (рисунок Б.3). После выбора номера на данной форме
следует нажать кнопку «Добавить в заказ», после чего произойдет возврат к
главной форме.
К любому заказу можно сформировать и распечатать
договор, приложение к договору (перечень работ и МТР), акт сдачи-приемки, счет,
счет-фактуру.
Для получения статистической информации в
графическом виде предназначена форма «Статистика» (рисунки Б.6 - Б.9),
вызываемая из одноименного пункта меню «Печать» главной формы. Для
произвольного диапазона дат на форме отображаются диаграммы по данным, хранимым
в базе данных.
3.6 Входные и выходные данные
Входными данными для системы являются: данные об
организациях-клиентах, МТР, видах МТР, ответственных лицах, направлениях работы
ответственных лиц, информация об организации.
Выходными данными для системы являются:
- прайс-лист на запчасти и расходные материалы;
- договор на обслуживание и обслуживание
оборудования;
- наряд на выполнение работ;
- акт сдачи-приемки работ;
- дефектная ведомость;
- счет и счет-фактура, выставляемые клиенту;
- выполненные работы за период;
- формирование статистических диаграмм:
- потребность в МТР (материально-технических
ресурсах) за период;
- статистика расхода МТР за период;
- суммы работ за период;
- суммы работ по клиентам за период.
4. Экономический и социальный эффект
от внедрения проекта
.1 Оценка уровня качества
разрабатываемого программного продукта
Для оценки технического уровня разрабатываемого
продукта необходимо провести анализ и сравнение с выбранным аналогом по
функциональному назначению, основным техническим и эксплуатационным параметрам.
Подобный анализ осуществляется с помощью процедуры оценки комплексного
показателя качества и эксплуатационного технического уровня разрабатываемого
продукта.
В качестве программы для сравнения при
разработке дипломного проекта выбрана программа «1С:ТОиР Управление
обслуживанием и обслуживаниеами оборудования» от компании «Деснол Софт».
Эта разработка принята в качестве базового
варианта исходя из трех факторов:
- смежный профиль;
- соответствие требованиям технического задания
дипломного проекта;
- доступность для исследования и сравнения с
разрабатываемым проектом реальной версии программы.
Эксплуатационно-технический уровень (ЭТУ)
разработки модели алгоритма программы представляет собой обобщенную
характеристику их эксплуатационных свойств, возможностей, степени новизны. Для
проведения оценки воспользуемся обобщающим индексом
эксплуатационно-технического уровня JЭТУ:
, (5.1)
где JЭТУ -
комплексный показатель качества нового программного продукта по группе
показателей;
n -
число рассматриваемых показателей;
Вi
-
коэффициент весомости i-гo показателя в долях единицы, устанавливаемый
экспертным путем;
Xi
-
относительный показатель качества, устанавливаемый экспертным путем по
выбранной шкале оценивания.
Для целей оценки JЭТУ будем
использовать 5-ти бальную шкалу.
В таблице 4.1 представлены результаты расчета
балльно-индексным методом при 5-ти балльной шкале оценивания. Каждый показатель
оценим по пятибалльной шкале на основе имеющейся информации о разработанном
программном продукте и об аналоге. Показатели проекта-аналога, которые нет
возможности оценить, не имея доступа к продукту, примем равными разработанному
продукту.
Таблица 4.1- Оценка
эксплуатационно-технического уровня проекта и аналога
Показатели
качества программного продукта
|
Коэффициент
весомости Bi
|
Проект
|
Аналог
|
|
|
Xj
|
Вj´Xj
|
Xj
|
Вj´Xj
|
Интерфейс
(удобство обращения с системой)
|
0,09
|
5
|
0,45
|
4
|
0,36
|
Новизна
(соответствие современным требованиям)
|
0,06
|
5
|
0,3
|
5
|
0,3
|
Соответствие
профилю деятельности заказчика
|
0,15
|
5
|
0,75
|
4
|
0,6
|
Операционная
система (многозадачность, графика)
|
0,05
|
4
|
0,2
|
4
|
0,2
|
Надежность
|
0,15
|
4
|
0,6
|
4
|
0,6
|
Скорость
доступа к данным
|
0,05
|
4
|
0,2
|
4
|
0,2
|
Гибкость
|
0,05
|
4
|
0,2
|
3
|
0,15
|
Функции
обработки данных
|
0,15
|
5
|
0,75
|
4
|
0,6
|
Соотношение
стоимость/ возможности
|
0,1
|
4
|
0,4
|
3
|
0,3
|
Время
на обучение персонала
|
0,15
|
5
|
0,75
|
2
|
0,3
|
ИТОГО:
|
1
|
|
4,6
|
|
3,61
|
Отношение двух найденных индексов называют
коэффициентом технического уровня Аk
первого программного продукта по отношению ко второму:
(4.2)
Если полученный коэффициент больше 1, то
разработка проекта с технической точки зрения оправдана. В нашем случае условие
выполняется.
4.2 Организация и планирование работ
по разработке проекта
Для разработки системы было задействовано два
человека: руководитель проекта и исполнитель (инженер-программист).
Руководитель выполняет постановку задачи,
курирует ход работ и дает необходимые консультации при разработке системы.
Исполнитель отвечает за проектирование информационного обеспечения, разработку
структур баз данных, реализацию вычислительных алгоритмов в виде завершенного
продукта, разработку интерфейсных блоков и отладку программы. Выбор комплекса
работ по разработке проекта производится в соответствии со стандартом «ГОСТ Р
ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла
программных средств». Стадии разработки, этапы и содержание работ приведены в
таблице 5.2.
Таблица 4.2 - Стадии разработки,
этапы и содержание работ
Этапы
работ
|
Содержание
работ
|
1
Исследование и обоснование стадии создания
|
1.1
Постановка задачи 1.2 Обоснование необходимости разработки 1.3 Подбор и
изучение литературы
|
2
Научно-исследовательская работа
|
2.1
Анализ существующих методов решения задачи 2.2 Обоснование принципиальной
важности разработки
|
3
Разработка и утверждение технического задания
|
3.1
Определение требований к проекту 3.2 Выбор программных средств разработки
3.3 Согласование и утверждение ТЗ
|
4
Технический проект
|
4.1
Разработка алгоритма решения задачи 4.2 Определение структуры входных и
выходных данных
|
5
Проектирование
|
5.1
Программирование и отладка алгоритма 5.2 Тестирование 5.3 Анализ полученных
результатов и исправление облар\желли\ ошибок
|
6
Оформление рабочей документации
|
6.1
Выбор методики ТЭО, изучение ГОСТов и правил оформления пояснительной записки
6.2 Оформление раздела ТЭО 6.3 Оформление пояснительной записки
|
Для определения ожидаемой продолжительности
работы Тож применяется формула (4.3).
, (4.3)
где tmin
-
кратчайшая продолжительность заданной работы (оптимистическая оценка);
tmax
-
самая большая продолжительность работы (пессимистическая оценка);
tн.в.
-
наиболее вероятная продолжительность работы, определяемая по формуле (4.4):
, (4.4)
Оценка трудоемкости отдельных видов работ
приведена в таблице 4.3.
Таблица 4.3 - Оценка
трудоемкости отдельных видов работ
Виды
работ
|
Оптимистическая
оценка tmin
|
Реалистическая
оценка tн.в
|
Пессимистическая
оценка tmax
|
Ожидаемая
продолжительность работы
|
1.1
|
3
|
4
|
5
|
4
|
1.2
|
1
|
2
|
3
|
2
|
1.3
|
8
|
9
|
10
|
9
|
2.1
|
3
|
4
|
5
|
4
|
2.2
|
2
|
4
|
6
|
4
|
3.1
|
2
|
3
|
4
|
3
|
3.2
|
1
|
2
|
3
|
2
|
3.3
|
2
|
3
|
4
|
3
|
4.1
|
11
|
13
|
15
|
13
|
4.2
|
2
|
3
|
4
|
3
|
5.1
|
30
|
40
|
50
|
40
|
5.2
|
3
|
4
|
5
|
4
|
5.3
|
10
|
13
|
16
|
13
|
6.1
|
3
|
4
|
5
|
4
|
6.2
|
2
|
4
|
6
|
4
|
6.3
|
10
|
12
|
14
|
12
|
Суммарное
ожидаемое время на выполнение всех этапов
|
124
|
На основе данных таблице 4.3 разработан
календарный график выполнения работ (таблице 4.4), показывающий
последовательность и взаимосвязь выполнения комплекса работ.
Таблица 4.4 - Календарный график
выполнения работ
Вид
работы
|
Исполнители
|
Длительность
в днях
|
Загрузка,
дней
|
Загрузка,
%
|
1.1
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
2
|
50
|
1.2
|
Программист
|
2
|
100
|
|
Руководитель
|
|
1
|
50
|
1.3
|
Программист
|
9
|
9
|
100
|
|
Руководитель
|
|
|
|
2.1
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
3
|
75
|
2.2
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
4
|
|
3.1
|
Программист
|
3
|
3
|
100
|
|
Руководитель
|
|
3
|
100
|
3.2
|
Программист
|
2
|
2
|
100
|
|
Руководитель
|
|
|
|
3.3
|
Программист
|
3
|
3
|
100
|
|
Руководитель
|
|
3
|
100
|
4.1
|
Программист
|
13
|
13
|
100
|
|
Руководитель
|
|
|
|
4.2
|
Программист
|
3
|
3
|
100
|
|
Руководитель
|
|
|
|
5.1
|
Программист
|
40
|
40
|
100
|
|
Руководитель
|
|
|
|
5.2
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
4
|
100
|
5.3
|
Программист
|
13
|
13
|
100
|
|
Руководитель
|
|
6
|
46
|
6.1
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
|
|
6.2
|
Программист
|
4
|
4
|
100
|
|
Руководитель
|
|
|
|
6.3
|
Программист
|
12
|
12
|
100
|
|
Руководитель
|
|
|
|
|
Итого:
124 дня Итого по исполнителям: РП - 26 дней, ИП - 124 дня
|
4.3 Расчет затрат на разработку
проекта
Капитальные вложения, связанные с автоматизацией
обработки информации рассчитываются по формуле:
К=Кп+Кр, (4.5)
где Кп - вложения на
проектирование;
Кр
- вложения на реализацию.
Суммарные затраты на проектирование системы и
разработку программы:
, (4.6)
где m
-
количество работников, участвующих в разработке проекта;
Зoi
- затраты
на основную заработную плату работника i-й категории, руб.;
Wd
-
коэффициент, учитывающий дополнительную заработную плату, затраченную на
разработку, в долях к основной заработной плате (Wd
= 0,5);
Wс
- коэффициент, учитывающий отчисления на социальные нужды, в долях к сумме
основной и дополнительной заработной платы разработчиков (Wс
= 0,262: страховые взносы в Пенсионный фонд в долях единицы - 0,2, страховые
взносы в ФСС - 0,029, страховые взносы в ФОМС - 0,031, страховые взносы на
производственный травматизм - 0,002);
Wн
-
коэффициент, учитывающий накладные расходы организации, в долях к основной
заработной плате разработчиков, равный 0,6;
СM
-
затраты на материалы;
Мв
- затраты на использование машинного времени.
Материалы, приобретенные в процессе работы, и их
стоимость приведены в таблице 5.5.
Таблица 4.5 - Затраты на
материалы
Материалы
|
Единица
измерения
|
Приобретённое
количество
|
Цена
за единицу, руб.
|
Сумма,
руб.
|
Картридж
для принтера
|
шт.
|
1
|
285
|
285
|
Бумага
офисная
|
пачка
|
1
|
150
|
150
|
Флеш-память
|
шт.
|
1
|
230
|
230
|
Итого:
|
665
|
Денежные расходы на основную заработную плату
определяются по формуле:
363,67´26 + 318,19´124 =
48910,98 руб., (4.7)
где ЗПсрni
- среднедневная заработная плата работника i-ой категории, руб.;
Ti
- трудоемкость работ, выполняемых работником i-ой категории, чел/дн.
Затраты времени на разработку системы по каждому
исполнителю принимаются, исходя из его загрузки по календарному графику
выполнения работ (см. таблицу 5.2).
Данные по расчету основной заработной платы
проектировщиков занесены в таблицу 5.6, исходя из того, что в месяце в среднем
- 22 рабочих дня. Основная заработная плата разработчиков системы приведена в
таблице 5.6.
Таблица 4.6 - Расчет основной
заработной платы проектировщиков
Должность
|
Должностной
оклад, руб.
|
Средняя
дневная ставка, руб.
|
Затраты
времени на разработку чел./дней
|
ФОТ,
руб.
|
Руководитель
Программист
|
8000
7000
|
363,67
318,19
|
26
124
|
9455,42
39455,56
|
Итого
|
|
48910,98
|
Дополнительная
заработная плата (40%)
|
19564,39
|
Отчисления
в социальные фонды (26%)
|
17803,60
|
Ввиду того, что разработанный программный
продукт должен быть разработан на ПК, к суммарным затратам на разработку
необходимо добавить еще и затраты на использование машинного времени,
исчисляемые по формуле:
, (4.8)
где tмв
- машинное время компьютера, необходимое для разработки программного продукта;
Sмч
- стоимость 1 часа машинного времени;
Км
- коэффициент мультипрограммности (показывает долю машинного времени,
отводимого непосредственно на работу над проектом); Км=1.
Учитывая время на разработку программы на
компьютере, представленное в таблице 5.3, коэффициент мультипрограммности,
равный 1, и условной стоимости 1 часа работы на компьютере в платном
компьютерном зале, равной 15 руб., рассчитаем расходы на разработку программы:
Зm
= 150´15´1
= 2250 руб.
Накладные расходы Зн определим
по формуле:
Таким образом, вложения на
проектирование равны:
КП = 48910,98 ´ ((1+0,5) ´
(1+0,26)+0,6) + 2250,00 + 665,00 = 124703,30 руб.
Смета затрат на разработку
программного продукта по статьям расходов представлена в таблице 4.7.
Таблица 4.7 - Смета затрат на
разработку программного продукта
Статьи
затрат
|
Сумма
(руб.)
|
Основная
заработная плата
|
48910,98
|
Дополнительная
зарплата
|
24455,49
|
Отчисления
во внебюджетные фонды
|
19075,28
|
Затраты
на материалы
|
665,00
|
Затраты
на машинное время
|
2250,00
|
Накладные
расходы организации
|
29346,59
|
ИТОГО:
|
124703,30
|
Вложения на реализацию проекта:
(4.9)
где Ко - затраты на основное и
вспомогательное оборудование, руб.;
Кзд -
затраты на строительство, реконструкцию здания и помещений, руб.;
Кпп -
затраты на приобретение типовых разработок, пакетов, руб.;
Кпп -
затраты на прокладку линий связи, руб.;
Киб -
затраты на создание информационной базы, руб.;
Кпк -
затраты на подготовку и переподготовку кадров, руб.
В связи с тем, что для внедрения системы,
рассматриваемой в данном дипломном проекте, не было затрат, связанных с
прокладкой линии связи, затрат на реконструкцию и строительство зданий, то
данные затраты для внедрения системы не учитывают. Также не принимаются в
расчет затраты по подготовке и переподготовке кадров, затраты на создание
информационной базы и затраты на приобретение типовых разработок.
Таким образом, при внедрении системы,
рассматриваемой в данном дипломном проекте, затраты на его реализацию
определяются затратами на оборудование и материалы. В оборудование и материалы
входит персональный компьютер стоимостью 20000 руб.
Затраты на основное и вспомогательное
оборудование определяется по формуле:
, (4.10)
где Cbj
- балансовая стоимость j-го
вида оборудования, руб. (20 000,00 руб.);
Qj
- количество единиц j-гo
оборудования, руб. (1 шт.);
Yj
- коэффициент загрузки j-го
вида оборудования при обработке информации по решению задач предметной области.
Коэффициент загрузки оборудования:
, (4.11)
где Фэфj - эффективный
годовой фонд времени работы технического средства j-го вида, час./год.
, (4.12)
где tкj
-
трудоемкость однократной обработки информации по к-й задаче на j-м
виде технических средств, часов машинного времени (tкj=6);
Uj
- частота (периодичность) решения к-й задачи, дней /год (Uj
=264).
Таким образом, получаем затраты на приобретение
оборудования:
Ko
= 20000 ´
1 ´
(6´264)/(264´8)
= 15000,00 руб.
Суммарные затраты на разработку проекта
составят:
K
= 15000,00 + 124703,30 = 139703,30 руб.
Суммарные затраты, связанные с внедрением
аналога, складываются из следующих затрат:
- затрат на приобретение программного продукта
(86000 руб.);
- затрат по оплате услуг на установку и
сопровождение продукта (13500 руб.);
- затрат на основное и вспомогательное
оборудование (20000 руб.);
- затрат по подготовке пользователя (15350 руб).
Итого суммарные затраты, связанные с внедрением
аналога, составят:
K
= 86000 +23500 + 20000 + 35350 = 164850 руб.
4.4 Расчет эксплуатационных затрат
К эксплуатационным относятся затраты, связанные
с обеспечением нормального функционирования как обеспечивающих, так и
функциональных подсистем автоматизированной системы, следовательно, под этими
затратами подразумевают текущие затраты. Текущие затраты рассчитываются по
формуле:
Зтек = Ззп + Са
+ Зэ + Срем + Зм + Зн , (4.13)
где Ззп - затраты на зарплату
основную и дополнительную с отчислениями во внебюджетные фонды, руб.;
Са - амортизационные отчисления от
стоимости оборудования и устройств системы, руб.;
Зэ - затраты на силовую энергию,
руб.;
Срем - затраты на текущий обслуживание
оборудования и устройств системы, руб.;
Зм - затраты на материалы и машинные
носители, руб.;
Зн - накладные расходы
информационного отдела, руб.
Эксплуатацию разработанной системы осуществляют
специалисты. Затраты на заработную плату основную и дополнительную с
отчислениями на социальные нужды производственного персонала рассчитывается по
формуле
, (4.14)
где ti
- время эксплуатации системы i-м работником, дни;
i
- среднедневная заработная плата i-го
работника, руб./день.
Данные для расчета основной заработной платы
специалистов занесены в таблицу 4.8.
Таблица 4.8 - Расчет основной
заработной платы специалистов (для эксплуатации нового программного продукта)
Должность
|
Должностной
оклад, руб.
|
Средняя
дневная ставка, руб.
|
Затраты
времени на эксплуатацию, чел./дней
|
Фонд
заработной платы, руб.
|
Оператор
системы
|
13000
|
590,90
|
80
|
89
485,90
|
Итого
|
89
485,90
|
Сзп1 = 80 ´
590,90 ´
1,5 ´
1,262 = 89 485,90 руб. (за год).
Аналогичные расчеты произведем по использованию
продукта аналога, используя данные, приведенные в таблице 5.9.
Таблица 4.9 - Данные по
заработной плате специалистов (для продукта-аналога)
Должность
|
Должностной
оклад, руб.
|
Средняя
дневная ставка, руб.
|
Затраты
времени на эксплуатацию, чел./дней
|
Фонд
заработной платы, руб.
|
Оператор
системы
|
13000
|
590,90
|
90
|
100
671,63
|
Итого
|
100
671,63
|
Сзп2 = 90 ´
590,90 ´
1,5 ´
1,262 = 100 671,63 руб.
Сумма амортизационных отчислений рассчитывается
следующим образом:
, (4.15)
где Cbj
- балансовая стоимость j-гo
вида оборудования, руб.;
tj
- время работы j-гo вида оборудования, час;
Fэфj
- эффективный фонд времени работы оборудования в год, час;
aj
- норма годовых амортизационных отчислений для j-гo вида оборудования,
%;
gj
- количество единиц оборудования j-гo вида.
Эффективный фонд времени работы оборудования
можно вычислить по формуле
Fэф
=Dр´
Нэ
, (4.16)
где Dp
- количество рабочих дней в году, Dp
= 249;
Нэ - норматив среднесуточной
загрузки, час./день, Нз = 8.
Таким образом, эффективный фонд времени работы
оборудования составит
Fэф
= 249´8
= 1992 час.
Известны следующие данные для расчета
амортизационных отчислений:
аj
= 20%;
gj
= 1;
tj1
(для проекта) = 80 ´ 8 = 640 час.;
tj2
(для аналога) = 90 ´ 8= 720 час.;
Cbj
= 20000 руб.
Сумма амортизационных отчислений для проекта
составит:
Сa1
= 20000´0,2´1´640
/1992 = 1285,14 руб.
Сумма амортизационных отчислений для аналога
составит:
Сa2
= 20000´0,2´1´720
/1992 = 1445,78 руб.
Затраты на силовую энергию рассчитываются по
формуле
, (4.17)
где Nj
- установленная мощность j-го
вида технических средств, кВт;
tj
-
время работы j-го вида технических средств, час;
gj
- коэффициент использования установленной
мощности оборудования;
Тэ - тариф на электроэнергию,
руб./кВт ч.
Для расчета затрат на силовую энергию используем
тариф на электроэнергию для промышленных предприятий, установленный на данной
территории, и составляющий 1,45 руб./кВт-ч. Установленная мощность для
компьютера равна 0,3 кВт. Таким образом затраты на силовую энергию составят:
а) для проекта: Зэ1 = 0,3´640´1,45
= 278,40 руб.;
б) для аналога: Зэ2 = 0,3´720´1,45
= 313,20 руб.
Затраты на текущий обслуживание оборудования
рассчитываются по формуле
, (4.18)
где Cpi
- норматив затрат на обслуживание (Cpi = 0,05).
Затраты на текущий обслуживание оборудования
составят:
а) для проекта: Зрем1 = 0,05´20000´640/1992
= 321,29 руб.
б) для аналога: Зрем2 = 0,05´20000´720/1992
= 361,45 руб.
Затраты на материалы, потребляемые в течение
года, составляют 1% от балансовой стоимости основного оборудования и равны 200
руб.
Накладные расходы включают затраты на содержание
административного и управленческого персонала, на содержание помещения и т.д.
Норматив накладных расходов составляет 20% от прямых затрат, включающих первые
пять статей затрат, представленных в таблице 5.10.
Таблица 4.10 - Расчет годовых
эксплуатационных затрат для проекта
Статьи
затрат
|
Затраты
на проект, руб.
|
Затраты
на аналог, руб.
|
Основная
и дополнительная зарплата с отчислениями в социальные фонды
|
89
485,90
|
100
671,63
|
Амортизационные
отчисления
|
1
285,14
|
1
445,78
|
Затраты
на электроэнергию
|
278,40
|
313,20
|
Затраты
на текущий обслуживание
|
321,29
|
361,45
|
Затраты
на материалы
|
200,00
|
200,00
|
Накладные
расходы
|
18
314,15
|
20
598,41
|
Итого
|
109
884,88
|
123
590,47
|
Накладные расходы для проекта составят:
Сн1
= (89 485,90 + 1285,14 + 278,40 + 321,29 + 200,00) ´
0,2 = 18 314,15 руб.
Накладные расходы для аналога составят:
Сн2
= (100671,63 + 1445,78 + 313,20 + 361,45 + 200,00) ´
0,2 = 20 598,41 руб.
4.5 Расчет экономического эффекта и
показателей экономической эффективности
Оценка экономической эффективности вариантов
проектных решений элементов ИС основывается на расчете показателей
сравнительной экономической эффективности капитальных вложений. Годовой
экономический эффект от использования разрабатываемой системы определяется по
разности приведенных затрат на базовый и новый варианты в расчете на годовой
объем выпуска:
, (4.19)
где Зприв аналог, Зприв
проект -
приведенные затраты на единицу работ, выполняемых с помощью базового и
проектируемого вариантов процесса обработки информации, руб.;
Ak - коэффициент
эксплуатационно-технической эквивалентности (Ak = 1,27);
N - объем
работ, выполняемых с помощью разрабатываемого продукта (N = 1).
3i=Ci+Eн´Ki , (4.20)
где Ci - себестоимость
(текущие эксплуатационные затраты единицы работ), руб.;
Ен - нормативный
коэффициент экономической эффективности (Ен =0,33);
Ki - суммарные
затраты, связанные с созданием программного продукта.
Данные для расчета экономического
эффекта представлены в таблице 4.11.
Таблица 4.11 - Расчет
экономического эффекта
Данные
|
Разрабатываемый
продукт
|
Продукт-аналог
|
Себестоимость
(текущие эксплуатационные затраты), руб.
|
109
884,88
|
123
590,47
|
Суммарные
затраты, связанные с внедрением проекта, руб.
|
139
703,30
|
164
850,00
|
Приведенные
затраты на единицу работ, руб.
|
155
986,97
|
177
990,97
|
Экономический
эффект от использования разрабатываемой системы, руб.
|
66
521,44
|
Приведенные затраты на единицу работ по проекту
составят:
Зприв проект = 109 884,88 +
0,33 ´
139 703,30 = 155 986,97 руб.
Приведенные затраты на единицу работ по аналогу
составят:
Зприв аналог= 123 590,47 +
0,33 ´
164 850,00 = 177 990,97 руб.
Экономический эффект от использования
разрабатываемой системы (Э) составит:
Э = 177 990,97 ´
1,27 - 155 986,97 = 70 061,56 руб.
После определения годового экономического
эффекта рассчитаем срок окупаемости затрат (Ток) на разработку
продукта:
(4.21)
Срок окупаемости составит:
Ток = 139 703,30 /
70 061,56 = 2 года.
Расчет фактического коэффициента
экономической эффективности (Еф) произведем по формуле:
, (4.22)
Сопоставим фактический коэффициент экономической
эффективности с нормативным значением коэффициента эффективности капитальных
вложений (Ен = 0,33) и сделаем вывод: чем выше
фактический коэффициент экономической эффективности, тем быстрее окупаются
капитальные вложения, осуществленные в разработку программного продукта.
Таким образом, разработка и внедрение
разрабатываемого продукта является эффективной, т. к. Еф в нашем
случае получилось больше Ен.
В ходе проделанной работы найдены все
необходимые данные, доказывающие целесообразность и эффективность данной
разработки. Приведем эти данные в сводной таблице 4.12.
Таблица 4.12 - Сводная таблица
экономического обоснования разработки и внедрения проекта
Затраты
на разработку и реализацию проекта (рубль)
|
109
884,88
|
Общие
эксплуатационные затраты (рубль)
|
155
986,97
|
Экономический
эффект (рубль)
|
66
521,44
|
Коэффициент
экономической эффективности
|
0,5
|
Срок
окупаемости (год)
|
2
|
5. Безопасность жизнедеятельности и
эргономика
Настоящая глава разработана на основе санитарных
правил и норм СанПиН 2.2.2/2.4.1340-03. Гигиенические требования к персональным
электронно-вычислительным машинам и организации работы.
5.1 Анализ опасных и вредных
производственных факторов на рабочем месте пользователя ПЭВМ
Опасным называется производственный фактор,
воздействие которого на работающего в определенных условиях человека приводит к
травме или другому внезапному резкому ухудшению здоровья. Если же
производственный фактор приводит к заболеванию или снижению работоспособности,
то его считают вредным (ГОСТ 12.0.002-80).
В ГОСТ 12.0.003-74* «ССБТ. Опасные и вредные производственные
факторы Классификация» приводится классификация элементов условий труда,
выступающих в роли опасных и вредных производственных факторов. Они
подразделяются на четыре группы: физические, химические, биологические и
психофизиологические.
На рабочем месте пользователя ЭВМ присутствуют
два вида факторов - физические и психофизиологические.
Физические факторы:
а) Освещение (отсутствие или недостаток
естественного света, недостаточная освещенность рабочей зоны, повышенная
яркость света, пониженная контрастность, прямая и отраженная блесткость,
повышенная пульсация светового потока). Информация, которую человек получает из
внешнего мира, поступает в основном через зрительный канал. Поэтому качество
информации, получаемой посредством зрения, во многом зависит от освещения.
Причиной плохого освещения может быть неправильное расположение как
естественных, так и искусственных источников освещения. Требования к освещению
на рабочих местах, оборудованных ПЭВМ, перечислены в СанПиН 2.2.2/2.4.1340-03.
б) Шум и вибрация. Источником этих факторов
является шумящее оборудование (печатающие устройства, серверы и т.п.).
Предельно допустимые значения уровня шума и вибрации на рабочих местах,
оборудованных ПЭВМ, регламентируются в СанПиН.
г) Температура воздуха;
д) Относительная влажность воздуха;
е) Скорость движения воздуха;
ж) Интенсивность теплового излучения
Последние четыре фактора относятся к
характеристикам микроклимата помещения. Они могут возникать в силу
недостаточной проветриваемости помещения, неисправности оконных и дверных
конструкций, отсутствия оборудования, поддерживающего индивидуальный
микроклимат помещения (кондиционеров, обогревателей) и т.д. Требования к
микроклимату, содержанию аэроионов и вредных химических веществ в воздухе на
рабочих местах, оборудованных ПЭВМ, приведены в СанПиН.
Психофизиологические факторы.
а) Физические перегрузки (статические и
динамические)
б) Нервно-психические перегрузки (умственное
перенапряжение, перенапряжение анализаторов, монотонность труда, эмоциональные
перегрузки)
5.2 Требования безопасности при
работе с ПЭВМ
Требования безопасности да отдельные типы, виды
оборудования устанавливаются с учетом особенностей конструкции и работы
элементов и функциональных систем оборудования после определения возможных
источников опасных и вредных факторов.
Требования к ПЭВМ.
. ПЭВМ должны соответствовать требованиям
настоящих Санитарных правил и каждый их тип подлежит
санитарно-эпидемиологической экспертизе с оценкой в испытательных лабораториях,
аккредитованных в установленном порядке.
. Концентрации вредных веществ, выделяемых ПЭВМ
в воздух помещений, не должны превышать предельно допустимых концентраций
(ПДК), установленных для атмосферного воздуха
. Дизайн ПЭВМ должен предусматривать окраску
корпуса в спокойные мягкие тона с диффузным рассеиванием света. Корпус ПЭВМ,
клавиатура и другие блоки и устройства ПЭВМ должны иметь матовую поверхность с
коэффициентом отражения 0,4 - 0,6 и не иметь блестящих деталей, способных
создавать блики.
. Документация на проектирование, изготовление и
эксплуатацию ПЭВМ не должна противоречить требованиям настоящих санитарных
правил.
Требования к помещениям для работы с ПЭВМ
Помещения для эксплуатации ПЭВМ должны иметь
естественное и искусственное освещение. Эксплуатация ПЭВМ в помещениях без естественного
освещения допускается только при соответствующем обосновании и наличии
положительного санитарно-эпидемиологического заключения, выданного в
установленном порядке.
Естественное и искусственное освещение должно
соответствовать требованиям действующей нормативной документации. Окна в
помещениях, где эксплуатируется вычислительная техника, преимущественно должны
быть ориентированы на север и северо-восток.
Оконные проемы должны быть оборудованы
регулируемыми устройствами типа: жалюзи, занавесей, внешних козырьков и др.
. Для внутренней отделки интерьера помещений,
где расположены ПЭВМ, должны использоваться диффузно отражающие материалы с
коэффициентом отражения для потолка - 0,7 - 0,8; для стен - 0,5 - 0,6; для пола
- 0,3 - 0,5.
. Полимерные материалы используются для
внутренней отделки интерьера помещений с ПЭВМ при наличии
санитарно-эпидемиологического заключения.
. Помещения, где размещаются рабочие места с
ПЭВМ, должны быть оборудованы защитным заземлением (занулением) в соответствии
с техническими требованиями по эксплуатации.
. Не следует размещать рабочие места с ПЭВМ
вблизи силовых кабелей и вводов, высоковольтных трансформаторов,
технологического оборудования, создающего помехи в работе ПЭВМ.
Требования к микроклимату, содержанию аэроионов
и вредных химических веществ в воздухе на рабочих местах, оборудованных ПЭВМ.
В помещении должны обеспечиваться оптимальные
параметры микроклимата для категории работ 1 а и 1б в соответствии с
действующими санитарно- эпидемиологическими нормативами микроклимата
производственных помещений
В помещении необходимо проводить ежедневную
влажную уборку и систематическое проветривание после каждого часа работы на
ПЭВМ.
Уровни положительных и отрицательных аэроионов в
воздухе помещения должны соответствовать действующим
санитарно-эпидемиологическим нормативам.
Требования к освещению на рабочих местах,
оборудованных ПЭВМ
Рабочие столы следует размещать таким образом,
чтобы видеодисплейные терминалы были ориентированы боковой стороной к световым
проемам, чтобы естественный свет падал преимущественно слева.
Искусственное освещение в помещениях для
эксплуатации ПЭВМ должно осуществляться системой общего равномерного освещения.
В случаях преимущественной работы с документами, следует применять системы
комбинированного освещения (к общему освещению дополнительно устанавливаются
светильники местного освещения, предназначенные для освещения зоны расположения
документов).
Освещенность на поверхности стола в зоне
размещения рабочего документа должна быть 300 -500 лк. Освещение не должно
создавать бликов на поверхности экрана. Освещенность поверхности экрана не
должна быть более 300 лк.
Следует ограничивать прямую блесткость от
источников освещения, при этом яркость светящихся поверхностей (окна,
светильники и др.), находящихся в поле зрения, должна быть не более 200 кд/м .
Следует ограничивать отраженную блесткость на
рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора
типов светильников и расположения рабочих мест по отношению к источникам
естественного и искусственного освещения, при этом яркость бликов на экране
ПЭВМ не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200
кд/м2.
Показатель ослепленности для источников общего
искусственного освещения в помещении должен быть не более 20. Показатель
дискомфорта - не более 40.
Яркость светильников общего освещения в зоне
углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной
плоскостях должна составлять не более 200 кд/м2, защитный угол светильников
должен быть не менее 40 градусов.
Светильники местного освещения должны иметь не
просвечивающий отражатель с защитным углом не менее 40 градусов.
Следует ограничивать неравномерность
распределения яркости в поле зрения пользователя ПЭВМ, при этом соотношение
яркости между рабочими поверхностями не должно превышать 3:1 - 5:1, а между
рабочими поверхностями и поверхностями стен и оборудования - 10:1.
В качестве источников света при искусственном
освещении следует применять преимущественно люминесцентные лампы типа ЛБ и
компактные люминесцентные лампы (КЛЛ). При устройстве отраженного освещения в
административно-общественньгх помещениях допускается применение
металлогалогенных ламп. В светильниках местного освещения допускается
применение ламп накаливания, в том числе галогенных.
Требования к визуальным параметрам ВДТ,
контролируемым на рабочих местах
. Предельно допустимые значения визуальных
параметров ВДТ, контролируемые на рабочих местах, представлены в таблице 5.1.
Таблица 5.1
N
п/п
|
Параметры
|
Допустимые
значения
|
1
|
Яркость
белого поля
|
Не
менее 35 кд/кв. м
|
2
|
Неравномерность
яркости рабочего поля
|
Не
более +/- 20%
|
3
|
Контрастность
(для монохромного режима)
|
Не
менее 3:1
|
4
|
Временная
нестабильность изображения (мелькания)
|
Не
должна фиксироваться
|
5
|
Пространственная
нестабильность изображения (дрожание)
|
Не
более 2-х 1E(-4L),где L-
проектное расстояние наблюдения, мм
|
. При размещении рабочих мест с ПЭВМ расстояние
между рабочими столами с видеомониторами (в направлении тыла поверхности одного
видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а
расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.
. Экран видеомонитора должен находиться от глаз
пользователя на расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров
алфавитно-цифровых знаков и символов.
Электробезопасность.
. Защитное заземление - это преднамеренное
электрическое соединение с землей или ее эквивалентом металлических
нетоковедущих частей, которые могут оказаться под напряжением. Защитное
действие заземлении основано на снижении напряжения прикосновения при переходе
напряжения на нетоковедущие части, что достигается уменьшением потенциала
корпуса относительно земли как за счет малого сопротивления заземления, так и
за счет повышения потенциала примыкающей к оборудованию поверхности земли.
Согласно ПУЭ в административном помещении при
напряжении 380 В и выше переменного и 440 В и выше постоянного тока
электроустановки подлежат заземлению во всех случаях.
. Защитным занулением называется преднамеренное
электрическое соединение с нулевым защитным проводником металлических
нетоковедуших частей, которые могут оказаться под напряжением. Нулевой защитный
проводник - это проводник, соединяющий зануляемые части с глухозаземленной
нейтральной точкой обмотки источника тока или ее эквивалентом (ГОСТ
12.1.009-76).
Зануление применяется в четырехпроводных сетях
напряжением до 1000 В с заземленной нейтралью.
Рисунок 5.1 - Принципиальная
схема зануления
. Рабочая изоляция электроустановок - это
электрическая изоляция токоведущих частей электроустановки, обеспечивающая ее
нормальную работу и защиту от поражения электрическим током (ГОСТ
12.1.009--76). В процессе эксплуатации электроустановок изоляция подвержена
различным повреждениям (механическим, химическим, тепловым и др.), а также
старению, в результате чего ухудшаются ее свойства (в основном активное
сопротивление).
Для обнаружения дефектов производится контроль
изоляции, который состоит в измерении ее активного сопротивления.
Рисунок 5.2 - Схема измерения
сопротивления изоляции сети мегаомметром
Контроль изоляции подразделяется на приемосдаточный,
периодический и постоянный. Приемо-сдаточный контроль изоляции производится при
вводе в эксплуатацию вновь смонтированных или вышедших из обслуживаниеа
электроустановок.
Требования к уровням шума и вибрации на рабочих
местах, оборудованных ПЭВМ
. В административных помещениях при выполнении
основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих
местах не должны превышать предельно допустимых значений, установленных для
данных видов работ в соответствии с действующими санитарно-эпидемиологическими
нормативами. Для инженерных работников это 60 дБА.
. Шумящее оборудование (печатающие устройства,
серверы и т.п.), уровни шума которого превышают нормативные, должно размещаться
вне помещений с ПЭВМ.
Требования к уровням электромагнитных полей на
рабочих местах, оборудованных ПЭВМ
Временные допустимые уровни ЭМП, создаваемых
ПЭВМ на рабочих местах пользователей, представлены в таблице 6.2.
Таблица 5.2 - Временные
допустимые уровни ЭМП, создаваемых ПЭВМ
Наименование
параметров
|
ВДУ
ЭМП
|
Напряженность
электрического поля
|
в
диапазоне частот 5 Гц - 2 кГц
|
25
В/м
|
|
в
диапазоне частот 2 кГц - 400 кГц
|
2,5
В/м
|
Плотность
магнитного потока
|
в
диапазоне частот 5Гц - 2 кГц
|
250
н'Гл
|
|
в
диапазоне частот 2 кГц - 400 кГц
|
25
нТл
|
Напряженность
электростатического поля
|
15
кВ/м
|
Требования к средствам измерений
Инструментальный контроль уровней ЭМП должен
осуществляться приборами с допускаемой основной относительной погрешностью
измерений +/- 20%, включенными в Государственный реестр средств измерения и
имеющими действующие свидетельства о прохождении Государственной поверки.
Следует отдавать предпочтение измерителям с
изотропными антеннами-преобразователями.
Требования к организации и оборудованию рабочих
мест с ПЭВМ для пользователей
. Высота рабочей поверхности стола для взрослых
пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии
такой возможности высота рабочей поверхности стола должна составлять 725 мм.
. Модульными размерами рабочей поверхности стола
для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры,
следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 80U и 1000 мм при
нерегулируемой его высоте, равной 725 мм.
. Рабочий стол должен иметь пространство для ног
высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен -
не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.
. Конструкция рабочего стула должна
обеспечивать:
ширину и глубину поверхности сиденья не менее
400 мм;
поверхность сиденья с закругленным передним
краем;
регулировку высоты поверхности сиденья в
пределах 400 - 550 мм и углам наклона вперед до 15 град, и назад до 5 град.;
высоту опорной поверхности синяки 300 +/- 20 мм,
ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости -400 мм;
угол наклона спинки в вертикальной плоскости в
пределах +/- 30 градусов;
регулировку расстояния спинки от переднего края
сиденья в пределах 260 - 400 мм;
стационарные или съемные подлокотники длиной не
менее 250 Мм и шириной - 50 - 70 мм;
регулировку подлокотников по высоте над сиденьем
в пределах 230 +/-30 мм и внутреннего расстояния между подлокотниками в
пределах 350 - 500 мм.
. Рабочее место пользователя ПЭВМ следует
оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее
400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной
поверхности подставки до 20 град. Поверхность подставки должна быть рифленой и
иметь по переднему краю бортик высотой 10 мм.
. Клавиатуру следует располагать на поверхности
стола на расстоянии 100 - 300 мм от края, обращенного к пользователю, или на
специальной, регулируемой по высоте рабочей поверхности, отделенной от основной
столешницы.
Требования к организации медицинского
обслуживания пользователей ПЭВМ
. Лица, работающие с ПЭВМ более 50% рабочего
времени (профессионально связанные с эксплуатацией ПЭВМ), должны проходить
обязательные предварительные при поступлении на работу и периодические
медицинские осмотры в установленном порядке.
. Женщины со времени установления беременности
переводятся на работы, не связанные с использованием ПЭВМ, или для них
ограничивается время работы с ПЭВМ (не более 3-х часов за рабочую смену) при
условии соблюдения гигиенических требований, установленных настоящими
Санитарными правилами. Трудоустройство беременных женщин следует осуществлять в
соответствии с законодательством Российской Федерации.
Требования к проведению государственного
санитарно-эпидемиологического надзора и производственного контроля
Государственный санитарно-эпидемиологический надзор
за производством и эксплуатацией ПЭВМ осуществляется в соответствии с
настоящими Санитарными правилами.
Не допускается реализация и эксплуатация на
территории Российской Федерации типов ПЭВМ, не имеющих
санитарно-эпидемиологического заключения.
. Инструментальный контроль за соблюдением
требований настоящих Санитарных правил осуществляется в соответствии с
действующей нормативной документацией.
. Производственный контроль за
соблюдением санитарных правил осуществляется производителем и поставщиком ПЭВМ,
а также предприятиями и организациями, эксплуатирующими ПЭВМ в установленном
порядке, в соответствии с действующими санитарными правилами и другими
нормативными документами.
5.3 Инструкция по охране труда для
сотрудника одела телекоммуникационных технологий
. Общие требования безопасности
.1. К работам с ПЭВМ и ВДТ допускаются лица:
не моложе 18 лет, прошедшие обязательный
предварительные при приеме на работу и ежегодные медицинские осмотры в порядке
и сроки, установленные Минздравмедпромом России и Госкомсанэпиднадзором России,
и не имеющие медицинских противопоказаний для работы с ПЭВМ и ВДТ;
прошедшие курс обучения принципам работы с
вычислительной техникой и специальное обучение работе на ПЭВМ с использованием
конкретного программного обеспечения;
прошедшие вводный инструктаж по
электробезопасности с присвоением 1-й квалификационной группы;
ознакомленные с инструкциями по эксплуатации на
используемые на рабочем месте средства оргтехники (собственно ПЭВМ и ВДТ,
принтеры, сканеры, источники бесперебойного питания и т.п.).
.2. К работе с ПЭВМ и ВДТ не допускаются женщины
со времени установления беременности и в период кормления ребенка грудью.
. Требования безопасности перед началом работы
.1. До включения используемого на рабочем месте
оборудования сотрудник обязан:
.1.1. Осмотреть и привести в порядок рабочее
место, убрать с рабочего места все посторонние предметы, которые могут
отвлекать внимание и затруднять работу.
.1.2. Проверить правильность установки стола,
стула, подставки под ноги, пюпитра, угол наклона экрана монитора, положение
клавиатуры и..
.1.3. Проверить правильность и надежность
заземления оборудования:
.1.4. Проверить правильность расположения
оборудования:
.1.5. Проверить надежность подключения к
системному блоку разъемов периферийного оборудования.
.1.6. Убедиться в отсутствии засветок, отражений
и бликов на экране монитора. Убедиться в отсутствии ярко освещенных предметов в
поле зрения при переносе взгляда с экрана монитора на документ. Убедиться, что
освещенность документов достаточна для четкого различения их содержания. При
возможности, отрегулировать освещение и принять меры к исключению бликов и
засветок на экране и в поле зрения.
.1.7. Убедиться в отсутствии пыли на экране
монитора и клавиатуре, при необходимости, протереть их специальной салфеткой.
.2. Включить оборудование рабочего места в
последовательности, установленной инструкциями по эксплуатации на оборудование
с учетом характера выполняемых на рабочем месте работ.
.3. После включения оборудования и запуска
используемой программы сотрудник обязан:
убедиться в отсутствии дрожания и мерцания
изображения на экране монитора;
установить яркость, контрастность, цвет и размер
символов, фон экрана, обеспечивающие наиболее комфортное и четкое восприятие
изображения.
. Требования безопасности при выполнении работ
.1. Сотруднику во время работы запрещается:
прикасаться к задней панели системного блока при
включенном питании;
переключать разъемы интерфейсных кабелей
периферийных устройств при включенном питании;
закрывать оборудование бумагами и посторонними
предметами;
допускать скапливание бумаг на рабочем месте;
производить отключение питания во время
выполнения активной задачи;
снимать защитный фильтр с экрана монитора;
допускать попадание влаги на поверхности
устройств;
производить самостоятельно вскрытие и
обслуживание оборудования;
производить вскрытие или заправку на рабочем
месте картриджей лазерных принтеров и копировальной техники;
прикасаться к нагретым элементам принтеров и
копировальной техники;
работать со снятыми кожухами оборудования,
являющегося источниками лазерного и ультрафиолетового излучения;
располагаться при работе на расстоянии менее 50
см. от экрана монитора.
.2. Режимы труда и отдыха при работе с ПЭВМ и
ВДТ должны организовываться в соответствии с требованиями СанПиН в зависимости
от вида и категории трудовой деятельности. Виды трудовой деятельности
разделяются на 3 группы : группа А - работа по считыванию информации с экрана
ВДТ или ПЭВМ с предварительным запросом, группа Б - работа по вводу информации
группа, В - творческая информация в режиме диалога с ЭВМ.
.3. При наличии ионизаторов, их использование
допускается только во время перерывов в работе и при отсутствии людей и
помещении.
. Требования безопасности в аварийных ситуациях
.1. Обо всех неисправностях в работе
оборудования и аварийных ситуациях сообщать непосредственному руководителю.
.2. При обнаружении обрыва проводов питания или
нарушения целости их изоляции, неисправности заземления и других повреждений
электрооборудования, появления запаха гари, посторонних звуков в работе
оборудования и тестовых сигналов, индицирующих о его неисправности, немедленно
прекратить работу и отключить питание.
.3. При поражении работника электрическим током
принять меры по его освобождению от действия тока путем отключения
электропитания и до прибытия врача оказать потерпевшему первую медицинскую
помощь.
.4. В случае возгорания оборудования отключить
питание, сообщить в пожарную охрану и руководителю, после чего приступить к
тушению пожара имеющимися средствами.
. Требования безопасности по окончании работы
.1. По окончании работы сотрудник обязан
соблюдать следующую последовательность отключения оборудования:
произвести закрытие всех выполняемых на ПЭВМ
задач;
отключить питание в последовательности,
установленной инструкциями по эксплуатации на оборудование с учетом характера
выполняемых работ.
.2. Убрать со стола рабочие материалы и привести
в порядок рабочее место.
. Ответственность за невыполнение инструкций
Лица, допустившие невыполнение или нарушение
инструкции по охране труда, привлекаются к дисциплинарной ответственности в
соответствии с правилами внутреннего трудового распорядка и, при необходимости,
подвергаются внеочередной проверке знаний норм и правил охраны труда.
Заключение
В ходе выполнения дипломного проекта была
проведена следующая работа:
- рассмотрена система учета охраняемых объектов,
выполняемая ЧОП «Рубеж-М»- проведен анализ деятельности
сотрудников ЧОП «Рубеж-М»;
- сформулированы основные задачи автоматизации и
выделены ключевые направления и функции разработки;
- произведен выбор прикладного программного
обеспечения;
- проведено проектирование БД и интерфейса ИС;
- разработана автоматизированная информационная
система учета обслуживаниеных работ нефтяного оборудования.
Разработанная ИС обеспечивает выполнение
следующих основных функций:
- учет номенклатуры оборудования;
- оформление заказа на обслуживание и
обслуживание оборудования;
- ведение прайс-листа на запчасти и расходные
материалы;
- формирование выходных документов:
- прайс-лист на запчасти и расходные материалы;
- договор на обслуживание и обслуживание
оборудования;
- наряд на выполнение работ;
- акт сдачи-приемки работ;
- дефектная ведомость;
- счет и счет-фактура, выставляемые клиенту;
- выполненные работы за период;
- формирование статистических диаграмм:
- потребность в МТР (материально-технических
ресурсах) за период;
- статистика расхода МТР за период;
- суммы работ за период;
- суммы работ по клиентам за период.
Также произведена оценка экономической
эффективности разработки ИС учета обслуживаниеных работ нефтяного оборудования.
В рамках дальнейшего развития проекта можно
определить автоматизацию других подразделений компании в рамках единой
информационной системы предприятия.
Список использованных источников
1. Абляев С.В., Пушкарев Н.Н.
Управление человеческими ресурсами на основе компьютерных технологий / Под ред.
Н.Ф. Пушкарева. - М: Финансы и статистика, 2009. - 176с.
2. Барановская
Т..П., Лойко В..И. и другие Информационные системы и технологии в экономике:
Учебник - М.: Финансы и статистика, 2003. - 416 с.
. Братищенко В.В.
Проектирование информационных систем. - Иркутск:
Изд-во БГУЭП, 2004. - 84 с.
. Бугорский В.Н., Фомин В.И.
Информационные системы в экономике: основы информационного бизнеса. Учебное
пособие СПб.: СПБГИЭА, 2004.
. Вендров А.М. CASE-технологии.
Современные методы и средства проектирования информационных систем. -
М.: Финансы и статистика, 2000.
. Вендров А.М. Проектирование
программного обеспечения экономических информационных систем. -
М.: Финансы и статистика, 2000.
. Гагарина Л.Г., Кокорева
Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. -
М.: ИД «ФОРУМ»; ИНФРА-М, 2008. - С. 400.
. Гарсиа-Молина Г., Ульман
Дж., Уидом Дж. Системы баз данных. Полный курс. - М.:
Вильямс, 2003. - 1088 с.
. Грекул В.И., Денищенко
Г.Н., Коровкина Н.Л. Проектирование информационных систем. -
М.: Интернет-университет информационных технологий -
ИНТУИТ.ру, 2005.
. Григорьев Ю.А., Ревунков
Г.И., Банки данных. М.: Издательство МГТУ имени Н.Э. Баумана, 2002.
. Гринберг А.С., Горбачев
Н.Н., Бондаренко А.С. Информационные технологии управления. - М.: ЮНИТИ-ДАНА,
2008
. Журнал «Кадровое дело»
. Ивасенко А.Г., Гридасов
А.Ю., Павленко В.А. Информационные технологии в экономике и управлении. - М.:
КНОРУС, 2007
14. Информационные технологии управления: Учебное пособие / Под
ред. Ю.М. Черкасова. - М.: ИНФРА-М, 2001. - 216 с. - (Серия «Высшее
образование») (скачать
<http://info-tehnologii.ru/files/IT%20upravlenia%20Chercasova.rar>)
15. Информационные технологии управления: Учебное пособие для
ВУЗов под ред. Г.А. Титоренко - М.:ЮНИТИ-ДАНА, 2003. - 439 с.
. Кауфельд
Д. Microsoft Office Access 2003 для «чайников»: Пер. с англ. -- М.: «Диалектика», 2006. - 320 стр. с ил.
. Козырев
А.А. Информационные технологии в экономике и управлении: Учебник. - СПб.:
Изд-во Михайлова В.А., 2008
. Коннолли
Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение.
Теория и практика
= Database Systems: A Practical Approach to Design, Implementation, and
Management. - 3-е изд.
- М.:
Вильямс,
2003. - 1436 с.
19. Кузнецов
С.Д. Основы баз данных. -
2-е изд. - М.:
Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний,
2007. - 484 с.
. Маклаков
С. В. Создание информационных систем с AllFusion Modeling Suite. - М.: Диалог-МИФИ, 2005.
21. Меняев М.Ф. Информационные технологии управления: Учебное
пособие в 3-х кн. Кн. 3. Системы управления организацией - М.: Омега - Л, 2003.
- 464 с.
. Оскерко
В.С., Пунчик З.В. Практикум по технологиям баз данных. - Мн.: «БГЭУ», 2004. -
170 с.
23. Петров В.Н. Информационные системы - СПб: Питер, 2003. -
688 с.
. Рубенкинг
Нил Дж. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 - М.: Диалектика, 2007. - 336 с.
25. Саак А.Э., Пахомов Е.В., Тюшняков В.Н. Информационные технологии
управления: Учебник для вузов. - СПб.: Питер, 2005. - 320 с.
26. СанПиН
2.2.2/2.4.1340-03. Санитарно-эпидемиологические правила и нормативы.
Гигиенические требования к персональным электронно-вычислительным машинам и
организации работы. - М: Издательство стандартов, 2003.
27. Семенов М.И. и другие Автоматизированные информационные
технологии в экономике: Учебник - М.: Финансы и статистика, 2003. - 416 с.
. Смирнова,
Г.Н. Проектирование экономических информационных систем: Учеб. для вузов / Г.Н.
Смирнова, А.А. Сорокин, Ю.Ф. Тельнов; Под ред. Ю.Ф. Тельнова. -М. : Финансы и
статистика, 2002. - 512 с. : ил.
29. Советов Б.Я., Цехановский В.В. Информационные технологии:
Учебник для ВУЗов - М.: Высшая школа, 2003. - 263 с.
. Соммервилл
Иан. Инженерия программного обеспечения / Пер. с англ. - 6-е издание. - М.:
Вильямс, 2002. -
624 с.
31. Уткин В.Б. Информационные системы и технологии в экономике:
Учебник - М.: ЮНИТИ-ДАНА, 2003. - 355 с.
. Хавьер
Пашеку. Программирование в Borland Delphi 2006 для профессионалов - М.: Вильямс, 2006. - 944 с.
33. Хотинская Г.И. Информационные технологии управления:
Учебное пособие. - М.: Дело и Сервис, 2003. - 128 с.
. Хотяшов
Э.Н. Проектирование машинной обработки экономической информации. М.:Финансы и
статистика, 2001.-246 с.
Приложение 1
Текст программы
Repair;,in 'uMain.pas' {fmMain},in
'uDM.pas' {DM: TDataModule},in 'uOrgs.pas' {fmOrgs},in 'uDiapason.pas'
{fmDiapason},in 'uCateg.pas' {fmCateg},in 'uParts.pas' {fmParts},in
'uPersonal.pas' {fmPersonal},in 'uProf.pas' {fmProf},in 'uRep.pas',in
'uStatistics.pas' {fmStatistics},in 'uStr.pas',in 'uInfo.pas' {fmInfo};
{$R
*.res}.Initialize;.CreateForm(TfmMain, fmMain);.CreateForm(TDM,
DM);.CreateForm(TfmOrgs, fmOrgs);.CreateForm(TfmDiapason,
fmDiapason);.CreateForm(TfmCateg, fmCateg);.CreateForm(TfmParts,
fmParts);.CreateForm(TfmPersonal, fmPersonal);.CreateForm(TfmProf,
fmProf);.CreateForm(TfmStatistics, fmStatistics);.CreateForm(TfmInfo,
fmInfo);.Run;.uCateg;, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;=
class(TForm): TDBGrid;: TPanel;: TBitBtn;: TBitBtn;: TBitBtn;:
TBitBtn;FormShow(Sender: TObject);FormClose(Sender: TObject; var Action:
TCloseAction);bbtInsClick(Sender: TObject);bbtDelClick(Sender: TObject);bbtSaveClick(Sender:
TObject);bbtExitClick(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmCateg;uDM, uParts, DB;
{$R *.dfm}TfmCateg.FormShow(Sender:
TObject);.tbCateg.Open;.tbCateg.Sort := 'Группа';;
TfmCateg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных закрывается, если он не
используется в других формах:
if not fmParts.Showing
then.tbCateg.Close;;TfmCateg.bbtInsClick(Sender:
TObject);.tbCateg.Insert;;TfmCateg.bbtDelClick(Sender: TObject);.tbCateg.Delete;;TfmCateg.bbtSaveClick(Sender:
TObject);DM.tbCateg.State in [dsEdit, dsInsert]
then.tbCateg.Post;;TfmCateg.bbtExitClick(Sender: TObject);;;.uDiapason;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
ComCtrls, Buttons, ExtCtrls;= class(TForm): TLabel;: TLabel;: TDateTimePicker;:
TDateTimePicker;: TBitBtn;: TBitBtn;: TBevel;
{ Private declarations }
{ Public declarations
};GetDiapason(var DateFrom, DateTo: TDate): Boolean;: TfmDiapason;
{$R *.dfm}
//Функция возвращает диапазон дат, заданный
пользователем:
function GetDiapason(var DateFrom,
DateTo: TDate): Boolean;.dtpDateFrom.Date := DateFrom;.dtpDateTo.Date :=
DateTo;fmDiapason.ShowModal = mrOK then begin:= fmDiapason.dtpDateFrom.Date;:=
fmDiapason.dtpDateTo.Date;:= True;:= False;;.uDM;, Classes, DB, ADODB;=
class(TDataModule): TADOConnection;: TADOTable;: TDataSource;: TAutoIncField;:
TWideStringField;: TADOTable;: TDataSource;: TAutoIncField;: TWideStringField;:
TWideStringField;: TWideStringField;: TWideStringField;: TWideStringField;:
TWideStringField;: TADOTable;: TDataSource;: TWideStringField;:
TWideStringField;: TWideStringField;: TWideStringField;: TWideStringField;:
TWideStringField;: TWideStringField;: TWideStringField;: TADOTable;:
TDataSource;: TAutoIncField;: TWideStringField;: TWideStringField;:
TWideStringField;: TBCDField;: TADOTable;: TDataSource;: TAutoIncField;:
TWideStringField;: TIntegerField;: TStringField;: TCurrencyField;:
TDataSource;: TADODataSet;: TAutoIncField;: TDateTimeField;: TDateTimeField;:
TIntegerField;: TIntegerField;: TBCDField;: TStringField;: TStringField;:
TDataSource;: TADODataSet;: TIntegerField;: TStringField;: TCurrencyField;:
TFloatField;: TDataSource;: TADODataSet;: TIntegerField;_ID: TIntegerField;:
TBCDField;: TCurrencyField;: TStringField;: TADODataSet;: TADODataSet;:
TBCDField;: TStringField;: TADODataSet;: TBCDField;: TADODataSet;:
TADODataSet;: TWideStringField;: TFloatField;: TADOTable;: TDataSource;:
TAutoIncField;: TWideStringField;: TWideStringField;: TAutoIncField;:
TDateTimeField;: TDateTimeField;: TWideStringField;: TBCDField;:
TIntegerField;: TIntegerField;: TFloatField;: TADOTable;: TAutoIncField;:
TWideStringField;: TDataSource;: TStringField;: TFloatField;: TADODataSet;:
TWideStringField;: TWideStringField;: TWideStringField;: TFloatField;:
TBCDField;: TFloatField;_ID: TIntegerField;: TBCDField;: TFloatField;:
TDateTimeField;: TDateTimeField;: TFloatField;: TStringField;: TFloatField;:
TStringField;: TStringField;tbPartsCalcFields(DataSet: TDataSet);dstJobsCalcFields(DataSet:
TDataSet);dstOrderPartsCalcFields(DataSet: TDataSet);DataModuleDestroy(Sender:
TObject);
{ Private declarations }
{ Public declarations };: TDM;
{$R *.dfm}
//Расчет суммы каждой позиции аксессуаров на
складе:
procedure TDM.tbPartsCalcFields(DataSet:
TDataSet);.FieldByName('Сумма').Value
:=.FieldByName('Количество').Value
* DataSet.FieldByName('Цена').Value;
end;
//Расчет суммы по каждой позиции продукции по
заказу:
procedure
TDM.dstJobsCalcFields(DataSet: TDataSet);.FieldByName('Сумма').Value
:=.FieldByName('Количество').Value
* DataSet.FieldByName('Стоимость').Value;
end;
//Расчет суммы по каждой позиции затраченной
аксессуара по заказу:
procedure
TDM.dstOrderPartsCalcFields(DataSet: TDataSet);.FieldByName('Сумма').Value
:=.FieldByName('Количество').Value
* DataSet.FieldByName('Цена').Value;;TDM.DataModuleDestroy(Sender:
TObject);.Close;;.uInfo;, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;= class(TForm):
TLabel;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;:
TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TBitBtn;:
TBitBtn;: TDBMemo;: TBevel;FormShow(Sender: TObject);FormClose(Sender: TObject;
var Action: TCloseAction);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender:
TObject);
{ Private declarations }
{ Public declarations };:
TfmInfo;uDM, DB;
{$R *.dfm}TfmInfo.FormShow(Sender:
TObject);.tbInfo.Open;;TfmInfo.FormClose(Sender: TObject;Action:
TCloseAction);.tbInfo.Close;;TfmInfo.BitBtn1Click(Sender:
TObject);DM.tbInfo.State = dsEdit
then.tbInfo.Post;;;TfmInfo.BitBtn2Click(Sender:
TObject);.tbInfo.Cancel;;;.uMain;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, Buttons, XPMan, ImgList, ActnList,
StdActns,, ActnMan, ToolWin, ActnCtrls, ActnMenus, jpeg, ExtCtrls,, ComCtrls,
Grids, DBGrids;= class(TForm): TXPManifest;: TActionManager;: TImageList;:
TFileExit;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;:
TAction;: TPanel;: TPanel;: TDBGrid;: TDBGrid;: TSplitter;: TPanel;: TBitBtn;:
TBitBtn;: TBitBtn;: TGroupBox;: TCheckBox;: TCheckBox;: TDateTimePicker;:
TDateTimePicker;: TCheckBox;: TDBLookupComboBox;: TDBGrid;: TSplitter;:
TAction;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TAction;: TAction;:
TActionMainMenuBar;acSpravReqExecute(Sender:
TObject);acSpravSpecExecute(Sender: TObject);acSpravClientsExecute(Sender:
TObject);acSpravStaffExecute(Sender: TObject);acSpravStoreExecute(Sender:
TObject);acRepStatExecute(Sender: TObject);acSpravGroupExecute(Sender:
TObject);FormShow(Sender: TObject);bbtPrintClick(Sender:
TObject);DBGrid1TitleClick(Column: TColumn);chbDate1Click(Sender:
TObject);FormCreate(Sender: TObject);bbtInsClick(Sender:
TObject);bbtSaveClick(Sender: TObject);bbtDelClick(Sender: TObject);DBGrid3EditButtonClick(Sender:
TObject);DBGrid1Exit(Sender: TObject);DBGrid2Exit(Sender:
TObject);DBGrid3Exit(Sender: TObject);acRepMTRListExecute(Sender:
TObject);bbtContractClick(Sender: TObject);bbtAppendixClick(Sender:
TObject);bbtActClick(Sender: TObject);bbtBillClick(Sender:
TObject);bbtFactClick(Sender: TObject);acRepJobsExecute(Sender:
TObject);acRepDefectExecute(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmMain;FileCtrl, uInfo, uProf, uOrgs, uDM, uPersonal, uParts, uStatistics,,
uRep, uCateg, ADODB, DB;
var: 1..3; //Хранит номер таблицы-Грида на форме
{$R
*.dfm}TfmMain.acSpravReqExecute(Sender:
TObject);.Show;;TfmMain.acSpravSpecExecute(Sender:
TObject);.Show;;TfmMain.acSpravClientsExecute(Sender: TObject);.Show;;TfmMain.acSpravStaffExecute(Sender:
TObject);.Show;;TfmMain.acSpravStoreExecute(Sender:
TObject);.Show;;TfmMain.acRepStatExecute(Sender:
TObject);.Show;;TfmMain.acSpravGroupExecute(Sender:
TObject);.Show;;TfmMain.FormShow(Sender: TObject);.dstOrders.Open;.dstJobs.Open;.dstOrderParts.Open;.Date
:= Date;.Date := Date;Click(Self);.SetFocus;;TfmMain.bbtPrintClick(Sender:
TObject);_Universal(DBGrid1, 7, 'Журнал
заказов');
end;
//Сортировка данных по выбранному полю:
procedure
TfmMain.DBGrid1TitleClick(Column: TColumn);
(DBGrid1.DataSource.DataSet as
TADODataset).Sort := Column.FieldName;.MessageBox('Сортировка
по
данному
полю
невозможна',
'Информация',
MB_OK+MB_ICONINFORMATION);;TfmMain.chbDate1Click(Sender: TObject);: string;:=
'';chbDate1.Checked thenFilter <> '' then:= Filter + ' and ';:= Filter +
'ДатаПриема
>= ' + QuotedStr(DateToStr(dtpDate1.Date));;chbDate2.Checked thenFilter
<> '' then:= Filter + ' and ';:= Filter + 'ДатаПриема
<= ' + QuotedStr(DateToStr(dtpDate2.Date));;chbClient.Checked and
(dblcbClient.KeyValue <> Null) thenFilter <> '' then:= Filter + '
and ';:= Filter + 'КлиентID
= ' + IntToStr(dblcbClient.KeyValue);;Filter <> '' then.dstOrders.Filter
:= Filter;.dstOrders.Filtered := True;.dstOrders.Filtered :=
False;;TfmMain.FormCreate(Sender: TObject);.Date := Date;.Date := Date;.Caption
:= 'Печать'
+ Chr(10) + 'договора';.Caption
:= 'Печать'
+ Chr(10) + 'Приложения';
bbtAct.Caption := 'Печать акта' + Chr(10) +
'сдачи-приемки';.Caption := 'Печать' + Chr(10) + 'счета-фактуры';;
//В зависимости от номера Грида, в котором
находился курсор до нажатия кнопки,
//выполняется добавление записи в
соответствующий набор данных:
procedure
TfmMain.bbtInsClick(Sender: TObject);GridID of
: DM.dstOrders.Insert;
: DM.dstJobs.Insert;
: DM.dstOrderParts.Insert;
end;;
//В зависимости от номера Грида, в котором
находился курсор до нажатия кнопки,
//выполняется сохранение записи в
соответствующий набор данных:
procedure
TfmMain.bbtSaveClick(Sender: TObject);GridID of
: if DM.dstOrders.State in [dsEdit,
dsInsert] then.dstOrders.Post;
: if DM.dstJobs.State in [dsEdit,
dsInsert] then.dstJobs.Post;
: if DM.dstOrderParts.State in
[dsEdit, dsInsert] then.dstOrderParts.Post;;;
//В зависимости от номера Грида, в котором
находился курсор до нажатия кнопки,
//выполняется удаление записи в соответствующий
набор данных:
procedure
TfmMain.bbtDelClick(Sender: TObject);GridID of
: DM.dstOrders.Delete;
: DM.dstJobs.Delete;
: DM.dstOrderParts.Delete;
end;;
//При щелчке по кнопке "..." в ячейке
"Запчасть" в DBGrid1 на экран выводится
//завпчастей для выбора нужного из списка:
procedure
TfmMain.DBGrid3EditButtonClick(Sender: TObject);.bbtGo.Visible :=
True;fmParts.ShowModal = mrOK thennot (DM.dstOrderParts.State in [dsEdit,
dsInsert]) then.dstOrderParts.Edit;.dstOrderParts.FieldByName('МЦ_ID').Value
:= DM.tbParts.FieldByName('Шифр').Value;.dstOrderParts.FieldByName('Цена').Value
:= DM.tbParts.FieldByName('Цена').Value;.bbtGo.Visible
:= False;;TfmMain.DBGrid1Exit(Sender: TObject);:= 1;;TfmMain.DBGrid2Exit(Sender:
TObject);:= 2;;TfmMain.DBGrid3Exit(Sender: TObject);:=
3;;TfmMain.bbtContractClick(Sender:
TObject);_Contract;;TfmMain.bbtAppendixClick(Sender:
TObject);_Appendix;;TfmMain.bbtActClick(Sender:
TObject);_Act;;TfmMain.bbtBillClick(Sender: TObject);_Bill;;TfmMain.bbtFactClick(Sender:
TObject);_Fact;;TfmMain.acRepMTRListExecute(Sender: TObject);, Date2: TDate;:=
Date;:= Date;GetDiapason(Date1, Date2) then_MTR(Date1,
Date2);;TfmMain.acRepJobsExecute(Sender: TObject);, Date2: TDate;:= Date;:=
Date;GetDiapason(Date1, Date2) then_JobList(Date1,
Date2);;TfmMain.acRepDefectExecute(Sender: TObject);_Defect;;.uOrgs;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids,
DBGrids, DBCtrls, StdCtrls, Buttons, Mask;= class(TForm): TPanel;: TBitBtn;:
TPanel;: TDBGrid;: TBitBtn;: TGroupBox;: TDBEdit;: TLabel;: TLabel;: TDBEdit;:
TLabel;: TDBEdit;: TDBEdit;: TLabel;: TDBMemo;: TLabel;: TLabel;: TDBEdit;:
TLabel;: TDBEdit;: TBitBtn;: TBitBtn;: TBitBtn;FormShow(Sender:
TObject);bbtPrintClick(Sender: TObject);DBGrid1TitleClick(Column:
TColumn);bbtInsClick(Sender: TObject);bbtDelClick(Sender:
TObject);bbtSaveClick(Sender: TObject);bbtExitClick(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmOrgs;uDM, uRep, ADODB, DB;
{$R *.dfm}TfmOrgs.FormShow(Sender:
TObject);.tbOrgs.Open;;TfmOrgs.bbtPrintClick(Sender:
TObject);_Universal(DBGrid1, 7, 'Организации-заказчики');
//Сортировка данных в таблице по выбранному
столбцу:
procedure
TfmOrgs.DBGrid1TitleClick(Column: TColumn);
(DBGrid1.DataSource.DataSet as
TADOTable).Sort := Column.FieldName;.MessageBox('Сортировка
по
данному
полю
невозможна',
'Информация',
MB_OK+MB_ICONINFORMATION);;TfmOrgs.bbtInsClick(Sender:
TObject);.tbOrgs.Insert;;TfmOrgs.bbtDelClick(Sender: TObject);.tbOrgs.Delete;;TfmOrgs.bbtSaveClick(Sender:
TObject);DM.tbOrgs.State in [dsEdit, dsInsert]
then.tbOrgs.Post;;TfmOrgs.bbtExitClick(Sender: TObject);;;.uParts;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids,
DBGrids, DBCtrls, StdCtrls, Buttons;= class(TForm): TDBGrid;: TPanel;:
TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TPanel;:
TDBLookupComboBox;: TCheckBox;: TGroupBox;: TEdit;bbtPrintClick(Sender:
TObject);bbtExitClick(Sender: TObject);bbtInsClick(Sender: TObject);bbtDelClick(Sender:
TObject);bbtSaveClick(Sender: TObject);FormClose(Sender: TObject; var Action:
TCloseAction);CheckBox1Click(Sender: TObject);FormCreate(Sender:
TObject);FormShow(Sender: TObject);edNameChange(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmParts;uDM, uRep, ADODB, DB, uCateg;
{$R
*.dfm}TfmParts.bbtPrintClick(Sender: TObject);CheckBox1.Checked
then_Universal(DBGrid1, 7, dblcbGroup.Text + ' на
складе')_Universal(DBGrid1,
7, 'МТР
на
складе');;TfmParts.bbtExitClick(Sender:
TObject);;;TfmParts.bbtInsClick(Sender:
TObject);.tbParts.Insert;;TfmParts.bbtDelClick(Sender:
TObject);.tbParts.Delete;;TfmParts.bbtSaveClick(Sender:
TObject);DM.tbParts.State in [dsEdit, dsInsert]
then.tbParts.Post;;TfmParts.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
//Набор данных закрывается, если он не
используется в других формах:
if not fmCateg.Showing
then.tbCateg.Close;
end;
//В зависимости от состояния флажка выполняется
отбор запчастей по выбранному виду МТР:
procedure
TfmParts.CheckBox1Click(Sender: TObject);CheckBox1.Checked
then.tbCateg.Open;.Columns[6].Visible := False; //Скрывается
поле
вида
МТР.tbCateg.Close;.Columns[6].Visible
:= True; //Отображается поле
вида
МТР;.tbParts.Requery([]);;TfmParts.FormCreate(Sender:
TObject);.tbCateg.Open;.tbCateg.Sort := 'Группа';.tbCateg.First;.tbParts.Open;.tbParts.Sort
:= 'ГруппаID,
Наименование';.KeyValue
:= DM.tbCateg.FieldByName('ID').Value;;TfmParts.FormShow(Sender:
TObject);Click(Self);;
//Поиск
МТР
по
наименованию:TfmParts.edNameChange(Sender:
TObject);.tbParts.Locate('Наименование',
edName.Text, [loPartialKey, loCaseInsensitive]);;.uPersonal;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids,
DBGrids, DBCtrls, StdCtrls, Buttons;= class(TForm): TDBGrid;: TPanel;:
TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;FormShow(Sender:
TObject);DBGrid1TitleClick(Column: TColumn);bbtPrintClick(Sender:
TObject);bbtExitClick(Sender: TObject);bbtInsClick(Sender:
TObject);bbtDelClick(Sender: TObject);bbtSaveClick(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmPersonal;uDM, uRep, ADODB, DB;
{$R
*.dfm}TfmPersonal.FormShow(Sender: TObject);.tbPersonal.Open;;
//Сортировка данных в таблице по выбранному
столбцу:
procedure TfmPersonal.DBGrid1TitleClick(Column:
TColumn);
(DBGrid1.DataSource.DataSet as
TADOTable).Sort := Column.FieldName;.MessageBox('Сортировка
по
данному
полю
невозможна',
'Информация',
MB_OK+MB_ICONINFORMATION); ;TfmPersonal.bbtPrintClick(Sender:
TObject);_Universal(DBGrid1, 3, 'Ответственные
лица');;TfmPersonal.bbtExitClick(Sender:
TObject);;;TfmPersonal.bbtInsClick(Sender:
TObject);.tbPersonal.Insert;;TfmPersonal.bbtDelClick(Sender:
TObject);.tbPersonal.Delete;;TfmPersonal.bbtSaveClick(Sender:
TObject);DM.tbPersonal.State in [dsEdit, dsInsert]
then.tbPersonal.Post;;.uProf;, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;=
class(TForm): TDBGrid;: TPanel;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;FormShow(Sender:
TObject);FormClose(Sender: TObject; var Action:
TCloseAction);bbtInsClick(Sender: TObject);bbtDelClick(Sender:
TObject);bbtSaveClick(Sender: TObject);bbtExitClick(Sender: TObject);
{ Private declarations }
{ Public declarations };: TfmProf;uDM,
uPersonal, DB;
{$R *.dfm}TfmProf.FormShow(Sender:
TObject);.tbProf.Open;;TfmProf.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
//Набор данных закрывается, если он не
используется в других формах:
if not fmPersonal.Showing then.tbProf.Close;;TfmProf.bbtInsClick(Sender:
TObject);.tbProf.Insert;;TfmProf.bbtDelClick(Sender:
TObject);.tbProf.Delete;;TfmProf.bbtSaveClick(Sender: TObject);DM.tbProf.State
in [dsEdit, dsInsert] then.tbProf.Post;;TfmProf.bbtExitClick(Sender: TObject);;;.uRep;
//Модуль для формирования отчетов и документов
interface, SysUtils, Classes,
ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;Rep_Universal(ADBGrid:
TDBGrid; NumCol: Integer; ACaption: string);Rep_MTR(Date1, Date2:
TDate);Rep_JobList(Date1, Date2: TDate);Rep_Contract;Rep_Appendix;Rep_Act;Rep_Bill;Rep_Fact;Rep_Defect;GetRightDate(ADate:
TDateTime): string;, DateUtils, Dialogs, uStr;
//Формирование отчета по выбранному набору
данных (вывод заголовков видимых
//полей
и
их
значений):Rep_Universal(ADBGrid:
TDBGrid; NumCol: Integer; ACaption: string);: Variant;, j, Width: Integer;:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Application.EnableEvents := False;.Workbooks.Add;i:=0 to NumCol-1
do
begin
//Вывод в шапку таблицы названий полей из
DBGrid'а:
Excel.Cells[5,i+1] :=
ADBGrid.Columns[i].Title.Caption;
//Форматирование
заголовка::=
Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));.Cells[5,i+1].ColumnWidth :=
Width;.Cells[5,i+1].Font.Bold := True;;.Cells[1,1] := Date;.Cells[3,1] :=
ACaption;.Cells[3,1].Font.Bold := True;.Cells[3,1].Font.Size := 12;:= 5;
//Экспорт данных из таблиц БД:
with ADBGrid.DataSource.DataSet do
DisableControls; //Отключаем сетку на время
формирования отчета
First;not Eof do
Inc(i);
//Выводятся NumCol первых полей таблицы,
отображенных в DBGrid'е:
for j:=0 to NumCol-1
do.Cells[i,j+1].NumberFormat := '@';.Cells[i,j+1] :=
FieldByName(ADBGrid.Columns[j].FieldName).DisplayText;; ;;;
//with.Application.EnableEvents := True;.Visible :=
True;.Quit;;.DataSource.DataSet.EnableControls;.Cursor := crDefault;.Enabled :=
True;
end;;
//Формирование списка потребности в МТР за
указанный диапазон дат:
procedure Rep_MTR(Date1, Date2:
TDate);, Categ: string;: Variant;, j, PosInc: Integer;, SumItogo: Currency;
//Добавление новой шапки таблицы для новой
категории МТР:
procedure
AddHeader;DM.dstMTRList.FieldByName('Группа').AsString
<> Categ then.Cells[i+PosInc,7] := Sum;:= 0;:=
0;(i,2);.Rows.Item[PosInc+i].Select;.Selection.Insert;.Selection.Insert;.Selection.Insert;.Selection.Insert;.Selection.Insert;.Rows.Item[3].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Rows.Item[4].Select;.Selection.Copy;.Rows.Item[PosInc+i+1].Select;.ActiveSheet.Paste;.Rows.Item[5].Select;.Selection.Copy;.Rows.Item[PosInc+i+2].Select;
Excel.ActiveSheet.Paste;
//Копирование строки "Итого":
Excel.Rows.Item[PosInc+i-2].Select;.Selection.Copy;.Rows.Item[PosInc+i+3].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;:= DM.dstMTRList.FieldByName('Группа').AsString;.Cells[PosInc+i,3]
:= Categ;(i,2);;;
//Шаблон
хранится
в
папке
Шаблоны::=
GetCurrentDir + '\Templates\' + 'Потребность
МТР.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;
SumItogo := 0; //Общая сумма МТР:= 0; //Cумма по
виду МТР:= 5;.Cells[1,1] := 'Потребность в МТР за период' + Chr(10) +
'с
' + DateToStr(Date1) + ' по
' + DateToStr(Date2);
//Запрос перечня потребности в МТР за заданный
период:
dstMTRList.Parameters.ParamByName('pDate1').Value
:= Date1;.Parameters.ParamByName('pDate2').Value :=
Date2;.Parameters.ParamByName('pDate11').Value :=
Date1;.Parameters.ParamByName('pDate22').Value := Date2;.Open;.First;:=
dstMTRList.FieldByName('Группа').AsString;.Cells[3,3]
:= Categ;
//Цикл
по
МТР:not
dstMTRList.Eof do
AddHeader;
//Добавление новой строки для МТР:
if j <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[5].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := j+1;.Cells[i+PosInc,2] := FormatFloat('0000',
dstMTRList.FieldByName('МЦ_ID').AsInteger);.Cells[i+PosInc,3]
:= dstMTRList.FieldByName('Наименование').AsString;.Cells[i+PosInc,4]
:= dstMTRList.FieldByName('ЕдИзм').AsString;.Cells[i+PosInc,5]
:= dstMTRList.FieldByName('Количество').AsFloat;.Cells[i+PosInc,6]
:= dstMTRList.FieldByName('Цена').AsCurrency;.Cells[i+PosInc,7]
:= dstMTRList.FieldByName('Сумма').AsCurrency;:=
Sum + dstMTRList.FieldByName('Сумма').AsCurrency;:=
SumItogo + dstMTRList.FieldByName('Сумма').AsCurrency;(i);(j);.Next;;
//while not dstMTRList.Eof.Close;.Cells[i+PosInc,7] := Sum;.Cells[i+7,7] :=
SumItogo;; //with.Visible := True;.Quit;;.Cursor := crDefault;
end;;
//Формирование списка выполненных работ за
указанный диапазон дат:
procedure Rep_JobList(Date1, Date2:
TDate);: string;: Variant;, PosInc: Integer;: Currency;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir +
'\Templates\' + 'Работы.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;
PosInc := 4;.Cells[1,1] := 'Выполненные работы
за период' + Chr(10) +
'за период с ' + DateToStr(Date1) + ' по ' +
DateToStr(Date2);
//Запрос перечня работ за заданный период:
dstEmpJobList.Parameters.ParamByName('pDate1').Value
:= Date1;.Parameters.ParamByName('pDate2').Value :=
Date2;.Parameters.ParamByName('pDate11').Value :=
Date1;.Parameters.ParamByName('pDate22').Value := Date2;.Open;:= 0; //Сумма
работ.First;
//Цикл
по
работам:not
dstEmpJobList.Eof do
begin
//Добавление новой строки для работы:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc+i-1].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] :=
dstEmpJobList.FieldByName('ДатаС').AsString;.Cells[i+PosInc,3]
:= dstEmpJobList.FieldByName('ДатаПо').AsString;.Cells[i+PosInc,4]
:= dstEmpJobList.FieldByName('Работа').AsString;.Cells[i+PosInc,5]
:= dstEmpJobList.FieldByName('Количество').AsFloat;.Cells[i+PosInc,6]
:= dstEmpJobList.FieldByName('Стоимость').AsCurrency;.Cells[i+PosInc,7]
:= dstEmpJobList.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstEmpJobList.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstEmpJobList.Eof.Cells[i+PosInc,7] := Sum;.Close;; //with.Visible
:= True;.Quit;;.Cursor := crDefault;;;
//Формирование
договора:Rep_Contract;:
Variant;:= CreateOleObject('Word.Application');.Cursor :=
crHourGlass;.Documents.Open(GetCurrentDir + '\Templates\Договор.dot');
//Данные договора и заказа:.Selection.Goto(Name
:= 'НомерДог');
ObjWord.Selection.TypeText(Text :=
FormatFloat('0000', DM.dstOrders.FieldByName('NЗаказа').AsFloat));.Selection.Goto(Name
:= 'ДатаДог');.Selection.TypeText(Text
:= GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime));.Selection.Goto(Name
:= 'ДатаЗаказа');.Selection.TypeText(Text
:= GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime));.Selection.Goto(Name
:= 'ДатаОконч');.Selection.TypeText(Text
:= GetRightDate(DM.dstOrders.FieldByName('ДатаСдачи').AsDateTime));
//Данные
клиента:.Selection.Goto(Name
:= 'Заказчик');.Selection.TypeText(Text
:= DM.tbOrgs.FieldByName('Наименование').AsString);.Selection.Goto(Name
:= 'Заказчик2');.Selection.TypeText(Text
:= DM.tbOrgs.FieldByName('Наименование').AsString);.Selection.Goto(Name
:= 'Адрес');.Selection.TypeText(Text
:= DM.tbOrgs.FieldByName('Адрес').AsString);.Selection.Goto(Name
:= 'ИННЗак');.Selection.TypeText(Text
:= DM.tbOrgs.FieldByName('ИНН').AsString);.Selection.Goto(Name
:= 'РеквизитыЗак');.Selection.TypeText(Text
:= DM.tbOrgs.FieldByName('Реквизиты').AsString);
//Реквизиты компании:.tbInfo.Open;
ObjWord.Selection.Goto(Name := 'Орг');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('Наименование').AsString);.Selection.Goto(Name
:= 'Орг2');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('Наименование').AsString);.Selection.Goto(Name
:= 'ЮрАдрес');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('Адрес').AsString);.Selection.Goto(Name
:= 'ПочтАдрес');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('Адрес').AsString);.Selection.Goto(Name
:= 'ИНН');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('ИНН').AsString);.Selection.Goto(Name
:= 'Реквизиты');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('Реквизиты').AsString);.Selection.Goto(Name
:= 'ГенДир');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('ГенДиректор').AsString);.Selection.Goto(Name
:= 'ГенДир2');.Selection.TypeText(Text
:= DM.tbInfo.FieldByName('ГенДиректор').AsString);.tbInfo.Close;.Visible
:= True;.Quit;;.Cursor := crDefault;
end;;
//Формирование списка работ по Договору
(приложения к Договору):
procedure Rep_Appendix;: string;:
Variant;, j, PosInc: Integer;, SumItogo: Currency;
//Шаблон
хранится
в
папке
Шаблоны::=
GetCurrentDir + '\Templates\' + 'Прил
к
Договору.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;
j := 0;:= 0; //Общая сумма работ:= 7;
Excel.Cells[1,4] :=
FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger)
+
' от
' + GetRightDate(dstOrders.FieldByName('ДатаПриема').AsDateTime);.Cells[3,2]
:= dstOrders.FieldByName('Клиент').AsString;
//Цикл по работам:.First;
Sum := 0; //Сумма
работnot
dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;.Cells[i+PosInc,3]
:= dstJobs.FieldByName('Работник').AsString;.Cells[i+PosInc,4]
:= dstJobs.FieldByName('Стоимость').AsCurrency;.Cells[i+PosInc,5]
:= FormatFloat('0,00', dstJobs.FieldByName('Количество').AsFloat);.Cells[i+PosInc,6]
:= dstJobs.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstJobs.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof.Cells[i+PosInc,6] := Sum;(i, 4);:= SumItogo + Sum;
//Цикл
по
МТР:.First;:=
0; //Сумма
МТРnot
dstOrderParts.Eof do
begin
//Добавление новой строки для МТР:
if j <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc+i-1].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := j+1;.Cells[i+PosInc,2] :=
dstOrderParts.FieldByName('Материал').AsString;.Cells[i+PosInc,3]
:= tbParts.FieldByName('ЕдИзм').AsString;.Cells[i+PosInc,4]
:= dstOrderParts.FieldByName('Цена').AsCurrency;.Cells[i+PosInc,5]
:= FormatFloat('0,00', dstOrderParts.FieldByName('Количество').AsFloat);.Cells[i+PosInc,6]
:= dstOrderParts.FieldByName('Сумма').AsCurrency;(j);(i);:=
Sum + dstOrderParts.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof.Cells[i+PosInc,6] := Sum;:= SumItogo +
Sum;.Cells[i+PosInc+2,6] := SumItogo;.Cells[i+PosInc+4,2] :=
SumToTxt(Format('%.2f', [SumItogo]));.Cells[i+PosInc+5,4] :=
dstOrders.FieldByName('Работник').AsString;;
//with.Visible := True;.Quit;;.Cursor := crDefault;
end;;
//Формирование акта сдачи-приемки:
procedure Rep_Act;: string;:
Variant;, PosInc: Integer;: Currency;
//Шаблон
хранится
в
папке
Шаблоны::=
GetCurrentDir + '\Templates\' + 'Акт.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;
PosInc := 14;
//Вывод реквизитов в
шапку:.tbInfo.Open;.Cells[1,1] :=
DM.tbInfo.FieldByName('Наименование').AsString;
Excel.Cells[2,1] :=
DM.tbInfo.FieldByName('Адрес').AsString;.Cells[3,1]
:= 'ИНН
' + DM.tbInfo.FieldByName('ИНН').AsString
+
', КПП
' + DM.tbInfo.FieldByName('КПП').AsString;.Cells[7,2]
:= DM.tbInfo.FieldByName('Наименование').AsString;.tbInfo.Close;.Cells[8,2]
:= dstOrders.FieldByName('Клиент').AsString;.Cells[9,2]
:= dstOrders.FieldByName('Клиент').AsString;.Cells[5,3]
:= FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger)
+
' от
' + GetRightDate(DM.dstOrders.FieldByName('ДатаСдачи').AsDateTime);
//Цикл по работам:.First;
Sum := 0; //Сумма
работnot
dstJobs.Eof do
begin
//Добавление новой строки для продукции:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;.Cells[i+PosInc,3]
:= dstJobs.FieldByName('Стоимость').AsCurrency;.Cells[i+PosInc,4]
:= FormatFloat('0,00', dstJobs.FieldByName('Количество').AsFloat);.Cells[i+PosInc,5]
:= dstJobs.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstJobs.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof.Cells[i+PosInc,5] := Sum;.Cells[i+PosInc+1,5] :=
Sum/118*18;; //with.Visible := True;.Quit;;.Cursor := crDefault;;;
//Формирование
счета:Rep_Bill;:
string;: Variant;, PosInc: Integer;: Currency;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir +
'\Templates\' + 'Счет.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;:= 9;.Cells[4,2] :=
FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger)
+
' от
' + dstOrders.FieldByName('ДатаПриема').AsString;.Cells[6,2]
:= dstOrders.FieldByName('Клиент').AsString
+ ', ИНН
' +.tbOrgs.FieldByName('ИНН').AsString
+ ', КПП
' +.tbOrgs.FieldByName('КПП').AsString;
//Цикл по работам:.First;
Sum := 0;not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;.Cells[i+PosInc,3]
:= 'шт';.Cells[i+PosInc,4]
:= dstJobs.FieldByName('Количество').AsFloat;.Cells[i+PosInc,5]
:= dstJobs.FieldByName('Стоимость').AsCurrency;.Cells[i+PosInc,6]
:= dstJobs.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstJobs.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof
//Цикл
по
МТР:.First;not
dstOrderParts.Eof do
//Добавление новой строки для МТР:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] :=
dstOrderParts.FieldByName('Материал').AsString;.Cells[i+PosInc,3]
:= tbParts.FieldByName('ЕдИзм').AsString;.Cells[i+PosInc,4]
:= dstOrderParts.FieldByName('Количество').AsFloat;.Cells[i+PosInc,5]
:= dstOrderParts.FieldByName('Цена').AsCurrency;.Cells[i+PosInc,6]
:= dstOrderParts.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstOrderParts.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof.Cells[i+PosInc,6] := Sum;.Cells[i+PosInc+1,6] :=
Sum/118*18;.Cells[i+PosInc+3,2] := SumToTxt(Format('%.2f', [Sum]));
//Вывод реквизитов в
шапку:.tbInfo.Open;.Cells[1,1] :=
DM.tbInfo.FieldByName('Наименование').AsString + ', ' +
DM.tbInfo.FieldByName('Адрес').AsString
+ ', ИНН
' +.tbInfo.FieldByName('ИНН').AsString
+ ', КПП
' +.tbInfo.FieldByName('КПП').AsString;.Cells[2,1]
:= DM.tbInfo.FieldByName('Реквизиты').AsString;.Cells[i+PosInc+5,3]
:= DM.tbInfo.FieldByName('ГенДиректор').AsString;.tbInfo.Close;;
//with.Visible := True;.Quit;;.Cursor := crDefault;
end;;
//Формирование счета-фактуры:
procedure Rep_Fact;: string;:
Variant;, PosInc: Integer;: Currency;
//Шаблон
хранится
в
папке
Шаблоны::=
GetCurrentDir + '\Templates\' + 'Счет-фактура.xlt';:=
CreateOleObject('Excel.Application');.Cursor :=
crHourGlass;.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do:= 0;:= 19;.Cells[4,2] :=
FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger);.Cells[4,4]
:= GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime);.Cells[10,2]
:= dstOrders.FieldByName('Клиент').AsString
+ ', ' +.tbOrgs.FieldByName('Адрес').AsString;.Cells[11,2]
:= 'С'
+ FormatFloat('0000', dstOrders.FieldByName('NЗаказа').AsInteger)
+
' от
' + dstOrders.FieldByName('ДатаПриема').AsString;.Cells[12,2]
:= dstOrders.FieldByName('Клиент').AsString;.Cells[13,2]
:= DM.tbOrgs.FieldByName('Адрес').AsString;.Cells[14,2]
:= DM.tbOrgs.FieldByName('ИНН').AsString
+ ' / ' +.tbOrgs.FieldByName('КПП').AsString;
//Цикл по работам:.First;
Sum := 0;not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := dstJobs.FieldByName('Работа').AsString;.Cells[i+PosInc,2]
:= 'шт';.Cells[i+PosInc,3]
:= dstJobs.FieldByName('Количество').AsFloat;.Cells[i+PosInc,4]
:= dstJobs.FieldByName('Стоимость').AsCurrency;.Cells[i+PosInc,5]
:= dstJobs.FieldByName('Сумма').AsCurrency
/ 118 * 100;.Cells[i+PosInc,8] := dstJobs.FieldByName('Сумма').AsCurrency
/ 118 * 18;.Cells[i+PosInc,9] := dstJobs.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstJobs.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof
//Цикл
по
МТР:.First;not
dstOrderParts.Eof do
//Добавление новой строки для продукции:
if i <> 0
then.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode
:= False;;.Cells[i+PosInc,1] := dstOrderParts.FieldByName('Материал').AsString;.Cells[i+PosInc,4]
:= tbParts.FieldByName('ЕдИзм').AsString;.Cells[i+PosInc,3]
:= dstOrderParts.FieldByName('Количество').AsFloat;.Cells[i+PosInc,4]
:= dstOrderParts.FieldByName('Цена').AsCurrency
/ 118 * 100;.Cells[i+PosInc,5] := dstOrderParts.FieldByName('Сумма').AsCurrency
/ 118 * 100;.Cells[i+PosInc,8] := dstOrderParts.FieldByName('Сумма').AsCurrency
/ 118 * 18;.Cells[i+PosInc,9] := dstOrderParts.FieldByName('Сумма').AsCurrency;(i);:=
Sum + dstOrderParts.FieldByName('Сумма').AsCurrency;.Next;;
//while not dstJobs.Eof.Cells[i+PosInc,9] := Sum / 118 * 18;.Cells[i+PosInc,9]
:= Sum;
//Вывод
реквизитов:.tbInfo.Open;.Cells[6,2]
:= DM.tbInfo.FieldByName('Наименование').AsString;.Cells[7,2]
:= DM.tbInfo.FieldByName('Адрес').AsString;.Cells[8,2]
:= DM.tbInfo.FieldByName('ИНН').AsString
+ ' / ' +.tbInfo.FieldByName('КПП').AsString;.Cells[9,3]
:= DM.tbInfo.FieldByName('Наименование').AsString
+
', ' + DM.tbInfo.FieldByName('Адрес').AsString;.Cells[i+PosInc+3,4]
:= DM.tbInfo.FieldByName('ГенДиректор').AsString;.Cells[i+PosInc+3,10]
:= DM.tbInfo.FieldByName('ГлавБух').AsString;.tbInfo.Close;;
//with.Visible := True;.Quit;;.Cursor := crDefault;
end;;
//Функция возвращает дату формата "xx
месяца xxxx г."
function GetRightDate(ADate:
TDateTime): string;: string;MonthOf(ADate) of
: Month := 'января';
: Month := 'февраля';
: Month := 'марта';
: Month := 'апреля';
: Month := 'мая';
: Month := 'июня';
: Month := 'июля';
: Month := 'августа';
: Month := 'сентября';
: Month := 'октября';
: Month := 'ноября';
: Month := 'декабря';;:=
FormatDateTime('dd ' + Month + ' yyyy г.',
ADate);
end;
//Открытие пустого бланка дефектной ведомости:
procedure Rep_Defect;: Variant;:=
CreateOleObject('Word.Application');.Cursor :=
crHourGlass;.Documents.Open(GetCurrentDir + '\Templates\Дефектная
ведомость.dot');.Visible
:= True;.Quit;;.Cursor := crDefault;;;.uStatistics;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, Buttons,
DBCtrls, ExtCtrls, TeEngine,, TeeProcs, Chart, DbChart, TeePrevi;=
class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TDBChart;: TTabSheet;:
TDBChart;: TBarSeries;: TBarSeries;: TTabSheet;: TDBChart;: TPieSeries;:
TPanel;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TLabel;:
TDateTimePicker;: TLabel;: TDateTimePicker;: TBitBtn;: TBitBtn;: TDBChart;:
TPieSeries;dtpDate1Change(Sender: TObject);FormCreate(Sender:
TObject);BitBtn2Click(Sender: TObject);bbtExitClick(Sender:
TObject);SpeedButton1Click(Sender: TObject);SpeedButton4Click(Sender:
TObject);SpeedButton3Click(Sender: TObject);SpeedButton2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TfmStatistics;uDM, uRep;
{$R *.dfm}TfmStatistics.dtpDate1Change(Sender:
TObject);
begin
//В зависимости от активной закладки запускается
обработчик соответствующей кнопки:
case PageControl1.ActivePageIndex of
: SpeedButton1Click(Self);
: SpeedButton2Click(Self);
: SpeedButton3Click(Self);
:
SpeedButton4Click(Self);;;TfmStatistics.FormCreate(Sender: TObject);.Date :=
Date;.Date := Date;
SpeedButton1.Caption := 'Потребность в МТР' +
Chr(13) + 'за период';.Caption := 'Статистика расхода МТР за период';.Caption
:= 'Суммы работ по' + Chr(13) + 'клиентам за период';
SpeedButton1.Down :=
True;Click(Self);;TfmStatistics.BitBtn2Click(Sender: TObject);
begin
//В зависимости от активной закладки выводится в
режим просмотра перед печатью
//выбранная
диаграмма:PageControl1.ActivePageIndex
= 0 then(Self, DBChart1)if PageControl1.ActivePageIndex = 1 then(Self,
DBChart2)if PageControl1.ActivePageIndex = 2 then(Self, DBChart3)if
PageControl1.ActivePageIndex = 3 then(Self,
DBChart4);;TfmStatistics.bbtExitClick(Sender: TObject);
begin;;
//Формирование диаграммы "Потребность МТР
за период":
procedure
TfmStatistics.SpeedButton1Click(Sender: TObject);.ActivePageIndex :=
0;.dstStatPartsCateg.Close;.dstStatPartsCateg.Parameters.ParamByName('pDate1').Value
:= dtpDate1.Date;.dstStatPartsCateg.Parameters.ParamByName('pDate2').Value :=
dtpDate2.Date;.dstStatPartsCateg.Parameters.ParamByName('pDate11').Value :=
dtpDate1.Date;.dstStatPartsCateg.Parameters.ParamByName('pDate22').Value :=
dtpDate2.Date;.dstStatPartsCateg.Open;.Title.Text.Strings[0] := 'Потребность
в
МТР
c ' +(dtpDate1.Date) + ' по
' + DateToStr(dtpDate2.Date);
end;
//Формирование диаграммы "Статистика
расхода МТР за период":
procedure
TfmStatistics.SpeedButton2Click(Sender: TObject);.ActivePageIndex :=
1;.dstStatPartsSum.Close;.dstStatPartsSum.Parameters.ParamByName('pDate1').Value
:= dtpDate1.Date;.dstStatPartsSum.Parameters.ParamByName('pDate2').Value :=
dtpDate2.Date;.dstStatPartsSum.Open;.Title.Text.Strings[0] := 'Статистика
расхода
МТР
c ' +(dtpDate1.Date) + ' по
' + DateToStr(dtpDate2.Date);
end;
//Формирование диаграммы "Суммы работ за
период":
procedure
TfmStatistics.SpeedButton3Click(Sender: TObject);.ActivePageIndex :=
2;.dstStatOrderSum.Close;.dstStatOrderSum.Parameters.ParamByName('pDate1').Value
:= dtpDate1.Date;.dstStatOrderSum.Parameters.ParamByName('pDate2').Value :=
dtpDate2.Date;.dstStatOrderSum.Parameters.ParamByName('pDate11').Value :=
dtpDate1.Date;.dstStatOrderSum.Parameters.ParamByName('pDate22').Value :=
dtpDate2.Date;.dstStatOrderSum.Open;.Title.Text.Strings[0] := 'Суммы
работ
c ' +(dtpDate1.Date) + ' по
' + DateToStr(dtpDate2.Date);
end;
//Формирование диаграммы "Суммы работ по
клиентам за период":
procedure
TfmStatistics.SpeedButton4Click(Sender: TObject);.ActivePageIndex :=
3;.dstStatClientSum.Close;.dstStatClientSum.Parameters.ParamByName('pDate1').Value
:= dtpDate1.Date;.dstStatClientSum.Parameters.ParamByName('pDate2').Value :=
dtpDate2.Date;.dstStatClientSum.Parameters.ParamByName('pDate11').Value :=
dtpDate1.Date;.dstStatClientSum.Parameters.ParamByName('pDate22').Value :=
dtpDate2.Date;.dstStatClientSum.Open;.Title.Text.Strings[0] := 'Суммы
работ
по
клиентам
c ' +(dtpDate1.Date) + ' по
' + DateToStr(dtpDate2.Date);
end;.uStr;
//Модуль для перевода числового представления
суммы в строковое, StrUtils;SumToTxt(Value: String) : string; //Функция для
перевода (аргумент - строка, содержащая сумму)
implementationa:array[0..8,0..9] of
string=(
('','один ','два ','три ','четыре ','пять
','шесть ','семь ','восемь ','девять '),
('','','двадцать ','тридцать ','сорок
','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),
('','сто ','двести ','триста ','четыреста
','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '),
('тысяч ','тысяча ','две тысячи ','три тысячи
','четыре тысячи ','пять тысяч ','шесть тысяч ','семь тысяч ',
'восемь тысяч ','девять тысяч '),
('','','двадцать ','тридцать ','сорок
','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),
('','сто ','двести ','триста ','четыреста
','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '),
('миллионов ','один миллион ','два миллиона
','три миллиона ','четыре миллиона ','пять миллионов ',
'шесть миллионов ','семь миллионов ','восемь
миллионов ','девять миллионов '),
('','','двадцать ','тридцать ','сорок ','пятьдесят
','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),
('','сто ','двести ','триста ','четыреста
','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '));:array[0..9] of
string=
('десять ','одинадцать ','двенадцать
','тринадцать ','четырнадцать ','пятьнадцать ','шестьнадцать ',
'семьнадцать ','восемьнадцать ','девятьнадцать
');
function SumToStrin(Value : String)
: string;s,t:string;,pp,i,k:integer;:=value;s='0' then:='Ноль
'begin:=length(s);:=p;p>1 then(s[p-1]='1') and (s[p]>'0') then begin:=b[strtoint(s[p])];:=pp-2;;:=pp;i>0
do begin(i=p-3) and (p>4) thens[p-4]='1' then begin:=b[strtoint(s[p-3])]+'тысяч
'+t;:=i-2;;(i=p-6) and (p>7) thens[p-7]='1' then
begin:=b[strtoint(s[p-6])]+'миллионов
'+t;:=i-2;;i>0 then begin:=strtoint(s[i]);:=a[p-i,k]+t;:=i-1;;;;
Result := t;;
//Разделяет сумму на рубли и копейки:
procedure get2str(value:string;var
hi,lo:string);p:integer;:=pos(',',value);:='';hi:='';p=0
then:=pos('.',value);p<>0 then(value,p,1);p=0 then
begin:=value;:='00';;p>length(value) then begin:=value;:='00';;p=1 then
begin:='0';:=value;;(p>1) and (p<length(value)) then
begin:=copy(value,1,p-1);:=copy(value,p,length(value));;;SumToTxt(value:
string):string;hi,lo:string;,er:integer;str(value,hi,lo);(hi='') or (lo='')
then begin:='';exit;;(hi,pr,er);if er<>0 then
begin:='';;;:=sumtostrin(inttostr(pr))+'руб.
';lo<>'00' then begin(lo,pr,er);er<>0 then
begin:='';;;:=inttostr(pr);;:=lo+' коп.
';[1]:=AnsiUpperCase(hi[1])[1];:=hi+lo;
end;.