Разработка автоматизированной информационной системы на примере "МегионСофтОйл"

 

Содержание


1. Введение

. Аналитическая часть

2.1 Характеристика (описание) объекта автоматизации

2.1.1 Технико-экономическая характеристика предприятия

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

.1.3 Информационные потоки предприятия

2.2 Анализ существующих бизнес-процессов предприятия

.3 Обоснование необходимости автоматизации и постановка задачи

.4 Обзор существующих решений автоматизации задачи

2.4.1 АИС «IT Invent»

.4.2 АИС «Учет компьютеров на предприятии» версия Prof

.4.3 АИС «БП: Авторизованный сервисный центр»

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

3. Проектная часть

3.1 Проектирование базы данных

3.1.1 Инфологическая модель предметной области

3.1.2 Даталогическая модель предметной области

.1.3 Физическая модель базы данных

3.2 Программное обеспечение задачи

3.2.1 Дерево функций и сценарий диалога

.2.2 Разработка алгоритмов приложений программной системы

.2.3 Описание программных модулей и структурная схема пакета

3.3 Разработка руководства пользователя

3.1.1 Назначение программного средства

.1.2 Условия выполнения программы

.1.3 Установка программного средства

.1.4 Выполнение программного средства

.1.5 Резервное копирование и восстановление БД

4. Заключение

Список использованных источников

ПРИЛОЖЕНИЕ А. Листинг программных модулей проекта



1. Введение


Цель данного дипломного проекта является разработка автоматизированной информационной системы (АИС) для учета и контроля выполнения ремонтных работ оргтехники (ОТ), и предоставления услуг по разработке программного обеспечения компании «МегионСофтОйл» Тюменской области, Ханты-Мансийского автономного округа - Югра, Нижневартовского района, города Мегион.

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

Основными преимуществами автоматизации деятельности компании «МегионСофтОйл» являются:

?Повышение конкурентоспособности (Заказы клиентов обрабатываются быстрее, а также повышается качество и уровень работы с клиентами.)

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

?Повышение финансовой управляемости (Система позволяет накапливать и анализировать информацию для задач управленческого учёта.)

?Повышение оперативной управляемости (Система позволяет вести детализированный учёт и анализ информации о текущей деятельности предприятия.)

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

Разработка системы должна осуществляться с использованием стандартных методологий функционального моделирования IDEF0 и информационного моделирования IDEF1Х. Моделирование должно выполняться в рамках стандартов, поддерживаемых программными средствами моделирования ERWin 4.0 и BPWin 4.0. Для работы с БД должен использоваться язык запросов SQL в рамках стандарта ANSI SQL-92. Для разработки пользовательского интерфейса Windows-приложения должна использоваться визуальная среда программирования Borland Delphi 2010 и объектно-ориентированный язык программирования Object Pascal. Для доступа к данным, хранящимся в таблицах MS Access, требуется использование наиболее передовой технологии доступа к данным - технологии Microsoft ADO.



2. АНАЛИТИЧЕСКАЯ ЧАСТЬ


2.1Характеристика (описание) объекта автоматизации


2.1.1Технико-экономическая характеристика предприятия

Компания ООО «МегионСофтОйл» зарегистрирована 8 апреля 2010 года. Генеральный директор организации - Григорьев Александр Сергеевич. Компания ООО «МегионСофтОйл» находится по адресу 628680, Тюменская область, Ханты-Мансийский автономный округ - Югра, г. Мегион, ул. Кузьмина, д. 34, стр. 11Б, основным видом деятельности является разработка программного обеспечения (ПО) и консультирование в этой области [1] .

Организационно-правовая форма: Общество с ограниченной ответственностью.

Вид собственности: Частная собственность.

Тип компании: Организации, учрежденные юридическими лицами или юридическими лицами и гражданами.

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

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

?Ремонт копировально-множительной и вычислительной техники (замена узлов устройства).

?Профилактические работы (чистка узлов без разборки устройства).

?Диагностика деталей.

?Консультации и советы по дальнейшей эксплуатации техники.

Компания «МегионСофтОйл» проводит работы по техническому обслуживанию копировально-множительной и вычислительной техники ведущих мировых производителей, таких как: Samsung, Dell, Epson, Canon, IBM, Toshiba, Xerox и др. В распоряжении компании имеется фирменная техническая документация, для выполнения ремонта используются оригинальные запасные части.

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

Главной долгосрочной стратегической целью компании «МегионСофтОйл» является достижение желаемого уровня стоимости предприятия. Среднесрочные цели направлены на обеспечение устойчивости и динамичного развития компании в соответствии с принятой долгосрочной стратегией и предполагают:

?Увеличение доли рынка за счет рекламных мероприятий.

?Повышение уровня сервиса обслуживания клиентов.

?Повышение квалификации технического персонала компании.

?Увеличение ассортимента предоставляемых услуг

?Расширение модельного ряда обслуживаемой оргтехники.

К настоящему моменту компания «МегионСофтОйл» имеет все необходимые ресурсы и условия для интенсивного роста и развития.


2.1.2Организационная структура и кадровый состав предприятия

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

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

?Технический отдел.

?Диспетчерская служба.

?Бухгалтерия.

Организационная структура управления компании ООО «МегионСофтОйл» представлена схемой (См. рис. 2.1).


Рисунок 2.1 - Схема общей организационной структуры управления


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

?Разработка политики модернизации и автоматизации производственно-торговых процессов клиентов компании.

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

?Проектирование и разработка программного обеспечения.

?Проведение предварительного тестирования программного обеспечения.

?Разработка пакета технической документации по установке ПО и руководства администратора.

?Внедрение и сопровождение программного обеспечения.

?Разработка и внедрение корпоративной политики безопасности.

?Поддержка пользователей и офисных приложений.

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

?Техническое обслуживание оргтехники и проведение ремонтных работ по устранению неполадок.

?Проведение периодических профилактических мероприятий по поддержанию техники в рабочем состоянии.

?Планирование и развитие компьютерной сети компании, каналов связи.

?Внедрение и администрирование ЛВС на основе Windows 2000 Server Pro.

?Консультирование клиентов (в том числе телефонное) по техническим вопросам.

?Поддержание парка технического оборудования компании в рабочем состоянии.

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

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

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

?Контроль соблюдения графика работ по разработке программного обеспечения.

?Формирование и предоставление руководству установленной отчетности о работе подразделений.

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

Бухгалтерия компании «МегионСофтОйл» осуществляет бухгалтерский и налоговый учет предприятия, а также выполняют следующие функции:

?проведение кассовых операций;

?контроль ценовой политики и системы скидок предприятия;

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

Кадровый состав компании «МегионСофтОйл» - это квалифицированные специалисты (инженеры и программисты), проходящие систематическое обучение и обладающие достаточным опытом работы.


2.1.3Информационные потоки предприятия

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

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

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

Информационные потоки компании «МегионСофтОйл» представлены схемой (См. рис. 2.2), которая отображает информационные потоки между компанией и внешней средой, а также между подразделениями компании.


Рисунок 2.2 - Схема информационных потоков компании


Информационный обмен между компанией и внешней средой, а также между подразделениями компании «МегионСофтОйл» осуществляется двумя способами передачи информации:

?Документы:

?Устная информация:

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

?Серийный номер техники.

?Наименование и марка техники.

?Дату приема-передачи техники.

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

?Серийный номер техники.

?Наименование и марка техники.

?Дату приема-передачи техники.

?Список технических работ, которые необходимо выполнить.

После проведения диагностических работ по выявлению неисправностей оргтехники, на основании выявленных дефектов, оператором технического отдела компании «МегионСофтОйл» формируется дефектная ведомость, которая содержит следующую информацию:

?Серийный номер техники.

?Наименование и марка техники.

?Дату приема-передачи техники.

?Ф.И.О. инженера по ремонту оргтехники, который провел диагностику.

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

?Список выявленных дефектов.

?Список узлов оргтехники, подлежащих замене.

?Список технических работ, которые необходимо выполнить для устранения выявленных неполадок.

?Стоимость проведения ремонта.

?Стоимость необходимых для ремонта узлов.

?Общая стоимость технического обслуживания.

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

?Серийный номер техники.

?Наименование и марка техники.

?Дату начала ремонта.

?Ф.И.О. инженера по ремонту оргтехники, который выполнил ремонт.

?Список устраненных дефектов.

?Список замененных узлов оргтехники.

?Список выполненных технических работ.

?Дату окончания ремонта и выдачи техники клиенту.

?Стоимость проведения ремонта.

?Стоимость замененных узлов.

?Общая стоимость технического обслуживания.

Заявленная данным документом сумма, оплачивается клиентом в бухгалтерии компании «МегионСофтОйл». На основании оплаченного акта выполненных работ, клиенту выдается отремонтированная оргтехника.

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

?Проектирование.

?Разработка.

?Тестирование.

?Внедрение.

?Сопровождение.

В начале каждого этапа составляется график работ, который предоставляется клиенту. Все документы сопровождающие проведение технического обслуживания оргтехники (акт приема-передачи техники, дефектная ведомость, акт выполненных работ) и разработки программного обеспечения оформляются на фирменных бланках, в форме установленной руководством компании «МегионСофтОйл». Ежедневный обмен информацией между подразделениями компании осуществляется в виде нарядов на проведение работ, а также отчетов о результатах работы. Директору компании «МегионСофтОйл» предоставляется ежемесячная отчетность в виде отчетов о результатах работы подразделений компании. Бухгалтерия формирует налоговую и бухгалтерскую отчетность согласно действующему законодательству РФ.


2.2Анализ существующих бизнес-процессов предприятия


Для проведения анализа и реорганизации бизнес-процессов компании «МегионСофтОйл», целесообразно использование такого CASE-средства, как BPwin, поддерживающее методологию IDEF0 (функциональная модель). Функциональная модель предназначена для описания существующих бизнес-процессов на предприятии или идеального положения вещей - того, к чему нужно стремиться. Методология IDEF0 предписывает построение иерархической системы диаграмм - единичных описаний фрагментов системы. В IDEF0 система представляется как совокупность взаимодействующих работ или функций. Такая чисто функциональная ориентация является принципиальной - функции системы анализируются независимо от объектов, которыми они оперируют. Это позволяет более четко смоделировать логику и взаимодействие процессов организации.

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

Таким образом, для выявления последовательности действий при выполнении основных бизнес-процессов компании, средствами BPwin была построена модель A - 0 деятельности компании «МегионСофтОйл» по разработке программного обеспечения и проведения технического обслуживания оргтехники (См. рис. 2.3). Данная контекстная диаграмма содержит только одну работу (бизнес-процесс), которая представляет всю деятельность компании «МегионСофтОйл».


Рисунок 2.3 - Контекстная диаграмма


Декомпозиция - это разделение сложного объекта, системы, задачи на составные части, элементы. Построенная диаграмма декомпозиции первого уровня A0 (См. рис.2.4) показывает, из каких более мелких работ состоит работа «Деятельность компании «МегионСофтОйл» по разработке программного обеспечения и проведению технического обслуживания оргтехники».


Рисунок 2.4 - Диаграмма декомпозиции A0


Анализируя составленные схемы, можно выделить следующие потоки входящей информации (стрелки слева):

?Заявка на разработку ПО: заявки клиентов компании «МегионСофтОйл» на разработку программного обеспечения.

?Заявка на проведение ТО оргтехники: заявки клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники.

?Неисправная оргтехника: оргтехника, требующая проведения технического обслуживания для устранения неполадок.

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

Выделенные потоки результатной информации, которые представлены стрелками справа на диаграмме A0:

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

?Акт приема-передачи ОТ: документы, подтверждающие прием (передачу) оргтехники для проведения технического обслуживания.

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

?Оргтехника: отремонтированная копировально-множительная и вычислительная техника.

?Отчет о результатах работы: документы, отражающие результаты и анализ работы подразделений компании «МегионСофтОйл».

?Программный продукт: разработанный, согласно заявке клиента, программный продукт, для автоматизации деятельности клиента.

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

Механизмы управления бизнес-процессами (представлены стрелками сверху на диаграмме A0):

?Корпоративные правила работы с клиентами: установленные правила и инструкции работы с клиентами компании «МегионСофтОйл».

?Стандарт жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99: установленные правила, которые регламентируют стадии и этапы разработки программного обеспечения.

?Техническая документация по ремонту ОТ: руководства по ремонту и эксплуатации оргтехники.

?Установленная форма документов и отчетов: утвержденные руководством компании «МегионСофтОйл» формы сопроводительных документов и выходных отчетов.

Механизмы выполнения бизнес-процессов (представлены стрелками снизу на диаграмме A0):

?Журнал учета: журнал для учета и контроля выполнения заявок клиентов компании «МегионСофтОйл» на разработку программного обеспечения и проведение технического обслуживания оргтехники.

?Инженеры по ремонту ОТ: специалисты компании «МегионСофтОйл», выполняющие техническое обслуживание оргтехники.

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

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

Внутренние информационные потоки (представлены стрелками внутри диаграммы):

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

?Наряд на проведение работ: документы, регламентирующие мероприятия необходимые для выполнения сотрудниками компании «МегионСофтОйл».

?Отчет о проведении диагностических или ремонтных работ: документы, подтверждающие факт выполнения диагностических или ремонтных работ.

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


2.3Обоснование необходимости автоматизации и постановка задачи


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

Большие объемы ручной обработки информации сотрудниками компании «МегионСофтОйл» при выполнении основных бизнес-процессов приводят к следующим проблемам:

?Некорректный учет и контроль исполнения заявок клиентов на разработку ПО или проведение ТО оргтехники.

?Замедление формирования сопроводительной документации.

?Некорректный расчет стоимости проведенных работ.

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

?Некорректное формирование отчетов о результатах деятельности подразделений компании.

?Затруднение поиска информации и скорости оперативности при оказании информационно-справочных услуг клиентам о состоянии заявок.

?Некорректный анализ деятельности компании.

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

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

?Регистрация и учет заявок клиентов на разработку ПО или проведение ТО оргтехники.

?Формирование документа «Акт приема-передачи ОТ».

?Формирование документа «Дефектная ведомость».

?Контроль выполнения ремонтных работ.

?Расчет стоимости выполненных ремонтных работ.

?Формирование документа «Акт выполненных работ».

?Формирование графика работ по разработке программного обеспечения.

?Контроль соблюдения графика работ.

?Оперативный поиск и предоставление информации о состоянии заявки клиента.

?Формирование отчетов о результатах деятельности подразделений компании.

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


2.4Обзор существующих решений автоматизации задачи


2.4.1АИС «IT Invent»

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

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

?Разделение учетных конфигурационных единиц на 5 базовых классов:

)Оборудование (компьютеры, принтеры, оргтехника, сетевое оборудование и т.д.).

)Программы (коробочный софт и номера лицензий).

)Комплектующие (память, DVD, картриджи, сим-карты и т.д.).

)Расходные материалы (бумага, канцелярия, флешки, кабель, тонер и т.д.).

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

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

?Уникальная система создания и печати инвентарных этикеток. Поддерживается печать на два типа принтеров: на обычные лазерные принтеры (формат А4), на принтеры штрих-кодов (например Zebra, Godex и т.п.). Встроенный в программу редактор этикеток, позволяет настроить внешний вид этикетки со штрих-кодом по любым параметрам.

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

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

?Учет ремонтов и профилактических обслуживаний объектов учета. Удобная фильтрация по полю «Гарантия До» позволяет легко контролировать гарантийные сроки на приобретенное оборудование.

?Учет любых видов работ в организации (например: внутренний ремонт, выдача оборудования, инвентаризация и т.п.). Работы могут иметь связь со всеми видами объектов учета. Для работ настраиваются их Виды и Дополнительные Свойства.

? Логическое связывание программ и комплектующих с оборудованием. Например, программа «MS Office», а также комплектующие «память» и «жесткий диск» могут быть привязаны к оборудованию «Компьютер». Логика связывания не ограничена - любой объект может быть связан с любым объектом любого типа.

?Учет заказов поставщикам. Можно формировать заказы на любые объекты учета и затем оприходовать их с автоматическим добавлением объектов заказа в базу данных.

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

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

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

?Большое количество встроенных отчетов с возможностью редактирования.

?Экспорт данных из таблиц в форматы Excel, Word, PDF, HTML, Text. Экспорт позволяет обрабатывать данные программы по вашему усмотрению: создавать собственные отчеты, распечатки или выгрузки информации в интернет.

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

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

?Удобный интерфейс первичного ввода данных - информация от предыдущей введенной записи сохраняется в форме. Так же предусмотрен удобный импорт данных из Excel.

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

?Взаимодействие со службой Active Directory для импорта контактных данных по сотрудникам компании. Так же возможен удобный просмотр полного списка сотрудников онлайн из Active Directory.

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


2.4.2АИС «Учет компьютеров на предприятии» версия Prof

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

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

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

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

Основные возможности конфигурации

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

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

?Учет оборудования в ремонте. В конфигурации можно вести учет оборудования находящегося во внешнем ремонте. Для этого можно ввести документы: Начало ремонта (комплектующие детали уходят во внешний ремонт, который осуществляет выбранный подрядчик), Окончание ремонта.

?Учет заявок поставщикам (блок заказов поставщикам). Для реализации потребности ИТ отдела в отслеживании заявок на приобретение оборудования, в конфигурацию включен контур по заявкам поставщикам. Заявки могут быть зарегистрированы на комплектующие, расходные материалы или услуги. Для отслеживания выполнения заявок поставщиками используется специальный отчет.

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

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

?Работа с прайс-листами поставщиков. Есть возможность загружать прайс-листы поставщиков. Данная возможность пока находится в стадии развития и пока не реализована полностью.

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

Конфигурация предназначена для ведения базы данных по компьютерам и оргтехнике на предприятии. Система предназначена для использования в небольших и средних предприятиях. Недостатком является избыточность системы, кроме того для работы конфигурации требуется 1С: Предприятие 7.7 с компонентой «Оперативный учет» [4].


2.4.3АИС «БП: Авторизованный сервисный центр»

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

Конфигурация предназначена для автоматизированного учета следующих операций:

?учет клиентов;

?учет оборудования по серийным и заводским номерам;

?учет оборудования, установленного у каждого клиента;

?история ремонта по каждой модели оборудования;

?учет работ по стационарному ремонту;

?учет работ по выездному ремонту;

?учет и планирование заявок;

?учет и планирование работ по сервисным договорам;

?учет показателей заработной платы;

?учет движения ТМЦ (комплектующих и запасных частей);

?формирование отчетов для производителей оборудования;

?формирование управленческих отчетов.

?Функционально конфигурация разделена на следующие блоки:

?учет рекламаций;

?стационарный ремонт;

?выездной ремонт;

?учет договоров сервисного обслуживания;

?учет проектов.

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

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

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

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

Недостатком является то, что программный продукт не является самостоятельной программой и устанавливается как дополнение к типовой конфигурации «Управление торговлей». Для работы конфигурации требуется установка программы «1С: Предприятие 8.0» [5].


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


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

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

Именно реляционная модель является результатом более развитых представлений о формировании и ведении баз данных. Реляционные модели наиболее логично и наглядно отражают структуру хранимой информации и внутренних связей, что позволяет более полно анализировать структуру базы данных при разработке. Это привело к тому, что именно реляционные модели баз данных наиболее распространены в настоящее время и являются стандартом, на который переводятся все существовавшие ранее базы данных с иерархической и сетевой моделью. Веским доводом в пользу выбора реляционной модели данных является то, что подавляющее большинство СУБД ориентированы исключительно на реляционную модель. Кроме того, реляционные базы данных впоследствии легче расширять и интегрировать, что является неотъемлемой частью дальнейшего развития баз данных, с увеличением возлагаемых на них задач [6].

Для разработки инфологической и даталогической модели базы данных целесообразно использовать программу AllFusion ERwin Data Modeller, которая позволяет проектировать, документировать и сопровождать базы данных, хранилища данных и витрины данных (data marts). Создав наглядную модель базы данных, можно оптимизировать структуру БД и добиться её полного соответствия требованиям и задачам организации. Визуальное моделирование повышает качество создаваемой базы данных, продуктивность и скорость её разработки. После разработки даталогической модели базы данных, средствами ERwin можно сгенерировать схему данных в практически любую СУБД.

На сегодняшний день существует много разнообразных систем управления базами данных. Это такие СУБД как Paradox, FoxPro, Clipper, Access и др. Для работы с большинством из них требуются достаточно глубокие знания данной СУБД и опыт программирования.Access в настоящее время является одной из самых популярных среди настольных программных систем управления базами данных. Среди причин такой популярности следует отметить:

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

?глубоко развитые возможности интеграции с другими программными продуктами, входящими в состав Microsoft Office, а также с любыми программными продуктами, поддерживающими технологию OLE;

?богатый набор визуальных средств разработки.

Успех Microsoft Access заключается в прекрасной реализации продукта, рассчитанного как на начинающего, так и квалифицированного пользователя. Вся работа с базой данных осуществляется через окно контейнера базы данных. Отсюда осуществляется доступ ко всем объектам: таблицам, запросам, формам, отчетам, макросам, модулям. Встроенный язык запросов SQL позволяет максимально гибко работать с данными и значительно ускоряет доступ к внешним данным. Access воспринимает большое количество форматов данных, включая файловые структуры других СУБД. Поэтому приложение в Access может импортировать из текстовых файлов или электронных таблиц и экспорт в них: предоставлять прямой доступ и обновлять файлы Paradox, FoxPro и других БД. Можно также импортировать данные из этих файлов в таблицы Access [7].

Для разработки программного средства, осуществляющего доступ к данным базы, была выбрана визуальная среда программирования Delphi 10. Данная среда программирования позволяет создавать приложения с минимальными затратами времени, так как в его основе лежит концепция быстрого создания приложений (RAD). Delphi 10 базируется на языке программирования Pascal. Визуальная технология разработки программ позволяет быстро создавать приложения путём размещения на форме приложения стандартных компонентов. При этом соответствующий код программы автоматически генерируется средой разработки. Библиотека компонентов содержит множество стандартных компонентов, таких как элементы управления в стиле Windows, а также шаблоны для форм. Основные преимущества Delphi 10 при разработке приложений Windows:

?Быстрая визуальная разработка

?Свыше 500 встроенных элементов управления VCL

?Встроенная поддержка касаний и жестов

?dbExpress с поддержкой 9 основных баз данных

?DataSnap с поддержкой JSON, REST, HTTP, COM и XML

?UML/аудит кода и учет показателей

?Создание 32-разрядных приложений, поддерживаемых 32- и 64-разрядными версиями Windows

?Единый исходный код для генерации приложений для Windows 2000, Windows XP, Windows Vista и Windows 7

Для доступа к данным хранящимся в файле Access предусмотрено использование технологии ADO. ActiveX Data Objects (ADO) - наиболее передовой технологией доступа к данным, которая не требует драйверов ODBC или BDE. Основные преимущества ADO - простота использования, высокая скорость, требуемый малый объем верхней памяти и дискового пространства. Благодаря чему, данная технология была выбрана для доступа к данным, хранящимся в таблицах MS Access 2003. Для управления базой данных предполагается разработка запросов на языке SQL.



3. Проектная часть


3.1Проектирование базы данных


3.1.1Инфологическая модель предметной области

Концептуальное (инфологическое) проектирование - построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции. Такая модель создаётся без ориентации на какую-либо конкретную СУБД и модель данных. X (Information Modeling) - одна из методологий семейства IDEF. Применяется для построения информационной модели, которая представляет структуру информации, необходимой для поддержки функций производственной системы или среды. Сущность в IDEF1X описывает конкретный набор экземпляров реального мира. Связи в IDEF1X представляют собой ссылки, соединения и ассоциации между сущностями [2].

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


Таблица 3.1 - Описание сущностей предметной области

СущностьОпределениеКЛИЕНТЫЧастные предприятия и организации, подавшие хотя бы один заказ на разработку ПО или проведение технического обслуживания оргтехники в компанию «МегионСофтОйл»ОРГТЕХНИКАКопировально-множительная и вычислительная техника, обслуживаемая специалистами компании «МегионСофтОйл»МАРКИМарки оргтехники, обслуживаемые специалистами компании «МегионСофтОйл»ЗАКАЗЫФакт регистрации заказа на разработку ПО или проведение технического обслуживания оргтехники в компанию «МегионСофтОйл» от клиентаПОФакт выполнения заказа клиента на разработку программного обеспеченияГРАФИКГрафик выполнения этапов работ по разработке программного обеспечения, согласно стандарту жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99РЕМОНТФакт выполнения заказа клиента на проведение технического обслуживания оргтехникиРАБОТЫФакт выполнения определенного вида работ по устранению неисправностей, согласно заказу клиента на проведение технического обслуживания оргтехникиУСЛУГИВиды работ, выполняемые специалистами компании «МегионСофтОйл» по техническому обслуживанию оргтехникиРАСХОДФакт выполнения замены узла устройства для устранения неисправностейУЗЛЫКомплектующие детали оргтехники

Таким образом, после определения сущностей предметной области и отношений между ними, средствами ERwin была спроектирована ER-диаграмма предметной области (См. рис. 3.1).


Рисунок 3.1 - ER-диаграмма предметной области


После определения атрибутов сущностей, выделения первичных и внешних ключей, и связей между сущностями, с помощью CASE-средства ERwin была составлена IDEF1X-диаграмма КВ-уровня (См. рис. 3.2).


Рисунок 3.2 - KB-диаграмма предметной области


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


3.1.2Даталогическая модель предметной области

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

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

Таким образом, средствами ERwin была построена даталогическая модель предметной области (См. рис. 3.3).


Рисунок 3.3 - Даталогическая модель предметной области


Техническое описание атрибутов сущностей, с указанием владельцев, типов данных атрибутов на языке определения данных (ЯОД) выбранной СУБД Access, а также первичных и внешних ключей, представлено в таблице 3.2.



Таблица 3.2 - Описание атрибутов

СущностьАтрибутТипОписаниеКлючКЛИЕНТЫКод КлиентаСчетчикУникальный код клиента компании «МегионСофтОйл»PKИмя КлиентаТекст (50)Наименование организации клиента компании «МегионСофтОйл»АдресТекст (100)Физический адрес клиентаТелефонТекст (100)Контактный телефон клиентаПочтаТекст (100)Адрес электронной почты клиентаСкидкаЧисло (целое)Процент скидки на услуги для клиентаЗАКАЗЫНомер ЗаказаСчетчикУникальный номер заказа клиентаPKКод КлиентаЧисло (целое)Код клиента, сделавшего заказFKДата ЗаказаДатаДата регистрации заказ клиентаВид ЗаказаТекст (20)Вид заказа (Проведение ТО, Разработка ПО)ОРГТЕХ-НИКАКод ТехникиСчетчикУникальный код оргтехникиPKИмя ТехникиТекст (50)Наименование оргтехникиОписаниеМЕМОИнформация о техникеМАРКИКод МаркиСчетчикУникальный код марки оргтехникиPKИмя МаркиТекст (50)Наименование марки оргтехникиОписаниеМЕМОИнформация о производителеРЕМОНТНомер ЗаказаЧисло (целое)Номер заказа на проведение технического обслуживанияPKКод ТехникиЧисло (целое)Код оргтехники, требующей технического обслуживанияFKКод МаркиЧисло (целое)Код марки оргтехники, требующей технического обслуживанияFKДата РемонтаДатаДата начала проведения технического обслуживанияДата ЗавершенияДатаДата завершения проведения технического обслуживанияОписаниеМЕМООписание неисправности техникиСтатусТекст (20)Стадия завершения ремонтаСерийный НомерТекст (15)Серийный номер оргтехники, требующей технического обслуживанияУСЛУГИКод УслугиСчетчикУникальный код услуги, предоставляемой компанией «МегионСофтОйл»PKИмя УслугиТекст (50)Наименование услуги, предоставляемой компанией «МегионСофтОйл»СтоимостьДенежныйЦена услуги, предоставляемой компанией «МегионСофтОйл»РАБОТЫНомер ЗаказаЧисло (целое)Номер заказа, на основании которого выполнена услугаPKКод УслугиЧисло (целое)Код услуги, которая выполнена на основании заказаPKКоличествоЧисло (целое)Количество выполненных работУЗЛЫКод УзлаСчетчикУникальный код узла оргтехникиPKИмя УзлаТекст (50)Наименование узла оргтехникиЦенаДенежныйСтоимость узла оргтехникиОписаниеМЕМООписание узла оргтехникиРАСХОДНомер ЗаказаЧисло (целое)Номер заказа, на основании которого выполнена замена узла оргтехникиPKКод УзлаЧисло (целое)Код замененного узла оргтехникиPKКоличествоЧисло (целое)Количество замененных узлов оргтехникиПОНомер ЗаказаЧисло (целое)Номер заказа на разработку программного обеспеченияPKИмя ПОТекст (100)Название, разрабатываемого программного обеспеченияЦенаДенежныйСтоимость, разрабатываемого программного обеспеченияОписаниеМЕМООписание, разрабатываемого программного обеспеченияСтатусТекст (20)Статус завершения разработки программного обеспеченияГРАФИКЭтапЧисло (целое)Номер этапа разработки программного обеспеченияPKНомер ЗаказаЧисло (целое)Номер заказа, на основании которого выполняется этап разработки программного обеспеченияPKНаименова-ниеТекст (100)Наименование этапа разработки программного обеспеченияДата ЭтапаДатаДата начала этапа разработки программного обеспеченияДата Завершения ЭтапаДатаДата завершения этапа разработки программного обеспеченияСтатус ЭтапаТекст (20)Статус завершения этапа разработки программного обеспечения


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


3.1.3Физическая модель базы данных


После выбора СУБД и построения даталогической модели, средствами ERwin была сгенерирована схема данных в MS Access (См. рис. 3.4).


Рисунок 3.4 - Схема данных в MS Access


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

Таблица КЛИЕНТЫ, разработанной базы данных служит для хранения данных о клиентах компании «МегионСофтОйл» и их скидках. Описание структуры таблицы КЛИЕНТЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.5).



Рисунок 3.5 - Таблица КЛИЕНТЫ в режиме конструктора


Таблица ЗАКАЗЫ, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники и разработку программного обеспечения. рекламного агентства на размещение наружной рекламы. . Описание структуры таблицы ЗАКАЗЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.6).


Рисунок 3.6 - Таблица ЗАКАЗЫ в режиме конструктора


Таблица ОРГТЕХНИКА, разработанной базы данных служит для хранения данных о копировально-множительной и вычислительной технике, обслуживаемой специалистами компании «МегионСофтОйл». Описание структуры таблицы ОРГТЕХНИКА представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.7).


Рисунок 3.7 - Таблица ОРГТЕХНИКА в режиме конструктора


Таблица МАРКИ, разработанной базы данных служит для хранения данных о марках оргтехники, обслуживаемых специалистами компании. Описание структуры таблицы МАРКИ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.8).


Рисунок 3.8 - Таблица МАРКИ в режиме конструктора


Таблица РЕМОНТ, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники. Описание структуры таблицы РЕМОНТ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.9).



Рисунок 3.9 - Таблица РЕМОНТ в режиме конструктора


Таблица УЗЛЫ, разработанной базы данных служит для хранения данных о комплектующих деталях оргтехники, обслуживаемой специалистами компании «МегионСофтОйл». Описание структуры таблицы УЗЛЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.10).


Рисунок 3.10 - Таблица УЗЛЫ в режиме конструктора


Таблица РАСХОД, разработанной базы данных служит для хранения данных о фактах выполнения замены узлов устройств для устранения неисправностей оргтехники. Описание структуры таблицы РАСХОД представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.11).



Рисунок 3.11 - Таблица РАСХОД в режиме конструктора


Таблица УСЛУГИ, разработанной базы данных служит для хранения данных о видах услуг, предоставляемых компанией «МегионСофтОйл». Описание структуры таблицы УСЛУГИ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.12).


Рисунок 3.12 - Таблица УСЛУГИ в режиме конструктора


Таблица РАБОТЫ, разработанной базы данных служит для хранения данных о фактах выполнения работ по устранению неисправностей, согласно заказу клиента на проведение технического обслуживания оргтехники. Описание структуры таблицы РАБОТЫ представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.13).



Рисунок 3.13 - Таблица РАБОТЫ в режиме конструктора


Таблица ПО, разработанной базы данных служит для хранения данных о заказах клиентов компании «МегионСофтОйл» на разработку программного обеспечения. Описание структуры таблицы ПО представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.14).


Рисунок 3.14 - Таблица ПО в режиме конструктора


Таблица ГРАФИК, разработанной базы данных служит для хранения данных о этапах работ по разработке программного обеспечения, согласно стандарту жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99. Описание структуры таблицы ГРАФИК представлено в режиме конструктора с указанием наименований полей таблицы, ключевых полей и типов полей (См. рис. 3.15).



Рисунок 3.15 - Таблица ГРАФИК в режиме конструктора


3.2Программное обеспечение задачи


3.2.1Дерево функций и сценарий диалога

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

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


Рисунок 3.16 - Схема иерархии функций


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

Рисунок 3.17 - Структурная схема проекта


3.2.2Разработка алгоритмов приложений программной системы

Логическая структура разрабатываемой информационной системы представлена в виде блок-схемы (См. рис. 3.18).




Рисунок 3.18 - Логическая структура разработанной системы


3.2.3Описание программных модулей и структурная схема пакета

В рамках данного дипломного проекта с помощью среды визуального программирования Delphi 10, были разработаны программные модули проекта, описание которых представлено в таблице 3.3.



Таблица 3.3 - Описание программных модулей проекта

Программный модульОписание программного модуляМодуль данных (UDataM)Модуль данных разработан для связи с базой данных, хранящейся в таблицах Access. Связь реализована с помощью технологии ADO. Связь с базой данных осуществлена с помощью компонента ADOConnection вкладки ADO. Запросы реализованы с помощью компонентов ADOQuery вкладки ADO. Визуализация данных осуществлена с помощью связующего компонента DataSource вкладки Data Access. Для генерации отчетов и сопроводительной документации используются шаблоны документов Word, связь с которыми реализуется с помощью компонентов WordApplication и WordDocument вкладки Servers.Модуль главной формы (UMain)Модуль главной формы разработан для работы со справочниками автоматизированной информационной системы, данные которых, хранятся в таблицах базы данных Access. Визуализация данных из таблиц Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Навигация по таблицам осуществляется с помощью компонентов DBNavigator вкладки Data Controls. Главное меню программы реализовано с помощью компонента MainMenu вкладки Standard.Модуль формы справочника «Клиенты компании» (Uklient)Модуль формы разработан для работы со справочником «Клиенты компании» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице КЛИЕНТЫ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Главное меню формы справочника «Клиенты компании» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.Модуль формы справочника «Услуги компании» (Uuslugi)Модуль формы разработан для работы со справочником «Услуги компании» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице УСЛУГИ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBGrid вкладки Data Controls. Главное меню формы справочника «Клиенты компании» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.Модуль формы справочника «Оргтехника» (Utex)Модуль формы разработан для работы со справочником «Оргтехника» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице ОРГТЕХНИКА базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBCtrlGrid вкладки Data Controls. Главное меню формы справочника «Оргтехника» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.Модуль формы справочника «Марки оргтехники» (Umarka)Модуль формы разработан для работы со справочником «Марки оргтехники» (добавление, сохранение, редактирование и удаление данных) автоматизированной информационной системы, данные которого, хранятся в таблице МАРКИ базы данных Access. Визуализация данных из таблицы Access осуществлена с помощью компонента DBCtrlGrid вкладки Data Controls. Главное меню формы справочника «Марки оргтехники» реализовано с помощью компонента MainMenu вкладки Standard. Поиск данных по справочнику организован с помощью компонента DBLookupComboBox вкладки Data Controls.Модуль формы (UReport)Модуль формы разработан для выбора периода отчетности и формирования выбранного отчета. Выбор периода для формирования отчетности организован с помощью компонента DateTimePicker вкладки Win32.Модуль формы (Uspr)Модуль формы разработан для вывода на экран справочной информации о программе.

В Приложении A представлен листинг программного кода описанных выше программных модулей проекта.

Модуль данных (UDataM) с указанием компонентов вкладки dbGo, используемых для работы с базой данных Access, представлен формой в среде Delphi 10 (См. рис. 3.19).


Рисунок 3.19 -Модуль данных (UDataM)


При разработке модуля данных использовались следующие компоненты вкладки dbGo, Data Access и Servers в Delphi 10:

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

?ADOTable - компонент вкладки dbGo, который служит для подключения и работы с таблицами БД (наборами данных);

?ADOQuery - компонент вкладки dbGo, который служит для организации SQL запросов к таблицам БД;

?DataSource - компонент вкладки Data Access, который служит для связи наборов данных и компонентов, предназначенных для визуализации данных;

?WordApplication - это сервер, с помощью которого осуществляется доступ к объекту Appication и запускается приложение Word;

?WordDocument - это специальный сервер документа, т.е. объекта, содержащегося в объекте TWordApplication.


3.3Разработка руководства пользователя


3.1.1Назначение программного средства

Разработанная автоматизированная информационная система необходима для учета и контроля выполнения ремонтных работ оргтехники, и предоставления услуг по разработке программного обеспечения компании «МегионСофтОйл» Тюменской области, Ханты-Мансийского автономного округа - Югра, Нижневартовского района, города Мегион.


3.1.2Условия выполнения программы

Автоматизированная информационная система для автоматизации учета и контроля выполнения ремонтных работ оргтехники должна работать под управлением операционной системы MS Windows XP, Vista, 7 на IBM/PC совместимых персональных компьютерах с минимальной конфигурацией:

?Процессор: Intel Pentium 4 с частотой процессора 2.0 ГГц

?Объем оперативной памяти: 1Гбайт

?Объем накопителя на жестком диске: 60Гбайт

?Монитор: LCD-монитор диагональю 17

?Принтер: лазерный принтер Lexmark формата A4.


3.1.3Установка программного средства

Устанавливаем папку с файлами программы («Ремонт оргтехники (МегионСофтОйл) 1.0») на диск персонального компьютера, на котором предполагается использование разработанного программного средства.


3.1.4Выполнение программного средства

После установки программного средства на персональный компьютер пользователя запускаем файл MEGION.exe, при этом открывается главное меню разработанной автоматизированной информационной системы (См. рис. 3.20).


Рисунок 3.20 - Главное меню программы (Проведение ТО)


Главное меню разработанной автоматизированной информационной системы служит для работы с заказами клиентов компании «МегионСофтОйл» на проведение технического обслуживания оргтехники и разработку программного обеспечения. Для добавления нового заказа на проведение технического обслуживания необходимо нажать на кнопку панели управления главной формы программы и заполнить следующие поля:

?Выбрать клиента (из выпадающего списка);

?Выбрать тип оргтехники (из выпадающего списка);

?Выбрать марку оргтехники (из выпадающего списка);

?Ввести серийный номер техники;

?Выбрать дату начала проведения технического обслуживания (из выпадающего календаря);

?Выбрать плановую дату окончания проведения технического обслуживания (из выпадающего календаря);

?Ввести описание неисправностей оргтехники.

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


Рисунок 3.21 - Контроль заполнения полей заказа на проведение ТО


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



Рисунок 3.22 - Добавление нового заказа на проведение ТО


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


Рисунок 3.23 - Сообщение для подтверждения удаления записи


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

После добавления нового заказа на проведение технического обслуживания пользователь системы имеет возможность распечатать документ «Акт приема-передачи» (См. рис. 3.24), нажав на кнопку «Документ» ? «Акт приема-передачи» главного меню программы.


Рисунок 3.24 - Документ «Акт приема-передачи»


После приема оргтехники на техническое обслуживание пользователь имеет возможность распечатать документ «Наряд на ТО» (См. рис. 3.25), нажав на кнопку «Документ» ? «Наряд на ТО» главного меню программы.

Рисунок 3.25 - Документ «Наряд на ТО»


После проведения диагностики неполадок, в случае необходимости замены узлов техники для устранения выявленных неполадок, необходимо добавить информацию об израсходованных материалах. Для добавления, редактирования, сохранения и удаления израсходованных материалов, необходимо нажать на соответствующую кнопку навигатора израсходованных узлов. После чего пользователь имеет возможность распечатать документ «Дефектная ведомость» (См. рис. 3.26), нажав на кнопку «Документ» ? «Дефектная ведомость» главного меню программы.


Рисунок 3.26 - Документ «Дефектная ведомость»


После проведения технического обслуживания оргтехники, статус заказа изменяется на «выполнен». После чего, нажатием на кнопку главного меню программы «Документ» ? «Акт выполненных работ», распечатывается документ «Акт выполненных работ», на основании которого оплачивается техническое обслуживание и передается техника клиенту.


Рисунок 3.27 - Документ «Акт выполненных работ»



Для добавления новых заказов клиентов компании «МегионСофтОйл» на разработку программного обеспечения необходимо перейти на вкладку «Разработка ПО» (См. рис. 3.28) с помощью фильтров на панели управления главной формы программы.


Рисунок 3.28 - Главное меню программы (Разработка ПО)


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

?Выбрать клиента (из выпадающего списка);

?Ввести название разрабатываемого программного обеспечения;

?Ввести стоимость разрабатываемого программного обеспечения;

?Ввести описание неисправностей оргтехники разрабатываемого программного обеспечения.

После добавления нового заказа на разработку программного обеспечения происходит автоматическое добавление этапов разработки программного обеспечения, согласно стандарту жизненного цикла ПО ГОСТ Р ИСО/МЭК 12207-99. Для составления графика этапов, необходимо установить фокус ввода в соответствующее поле (начало/завершение) таблицы графика работ и сделать двойной щелчок по выбранной дате на календаре главной формы программы.

Для формирования результатной отчетности по заказам на проведение технического обслуживания, необходимо нажать на кнопку главного меню программы «Отчеты» ? «Отчет ТО». При этом открывается форма для выбора периода отчетности (См. рис. 3.29).


Рисунок 3.29 - Форма для выбора периода отчетности


После выбора необходимого периода отчетности, нажатием на кнопку , пользователь имеет возможность сформировать отчет о результатах деятельности подразделения «Технический отдел» (См. рис. 3.30).


Рисунок 3.30 - Отчет о результатах деятельности подразделения «Технический отдел»


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

Отчет о результатах деятельности подразделения «Отдел разработки и сопровождения ПО» (См. рис. 3.31), формируется аналогичным образом.


Рисунок 3.31 - Отчет о результатах деятельности подразделения «Отдел разработки и сопровождения ПО»


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

?Оргтехника;

?Марки оргтехники;

?Узлы оргтехники;

?Услуги компании;

?Клиенты компании.

Для работы со справочником «Оргтехника» (добавление, удаление, редактирование и сохранение данных), необходимо нажать на кнопку «Справочники» ? «Оргтехника» главного меню программы (См. рис. 3.32).



Рисунок 3.32 - Справочник «Оргтехника»


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

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

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

- редактирование записи в справочнике;

- сохранение записи в справочник;

- удаление записи из справочника.

Аналогичным образом, нажатием на кнопку «Справочники» ? «Марки оргтехники», происходит работа со справочником «Марки оргтехники» (См. рис. 3.33).



Рисунок 3.33 - Справочник «Марки оргтехники»


Аналогичным образом, нажатием на кнопку «Справочники» ? «Узлы оргтехники», происходит работа со справочником «Узлы оргтехники» (См. рис. 3.34).


Рисунок 3.34 - Справочник «Узлы оргтехники»


Аналогичным образом, нажатием на кнопку «Справочники» ? «Услуги компании», происходит работа со справочником «Услуги компании» (См. рис. 3.35).

Рисунок 3.35 - Справочник «Услуги компании»


Аналогичным образом, нажатием на кнопку «Справочники» ? «Клиенты компании», происходит работа со справочником «Клиенты компании» (См. рис. 3.36).


Рисунок 3.36 - Справочник «Клиенты компании»


3.1.5Резервное копирование и восстановление БД

Резервное копирование и восстановление БД проводится администратором, который имеет доступ к файлу базы данных Оргтехника(Мегион).mdb, средствами СУБД Access (См. рис. 3.37).


Рисунок 3.37 - Резервное копирование и восстановление базы данных средствами Access


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



4. Заключение

автоматизация информационный система

В рамках данного дипломного проекта была спроектирована и разработана автоматизированная информационная система для учета и контроля выполнения ремонтных работ оргтехники (ОТ), и предоставления услуг по разработке программного обеспечения компании «МегионСофтОйл» Тюменской области, Ханты-Мансийского автономного округа - Югра, Нижневартовского района, города Мегион.

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

?Регистрация и учет заявок клиентов на разработку ПО или проведение ТО оргтехники.

?Формирование документа «Акт приема-передачи».

?Формирование документа «Наряд на проведение ТО».

?Формирование документа «Дефектная ведомость».

?Контроль выполнения ремонтных работ.

?Расчет стоимости выполненных ремонтных работ с учетом скидки клиента.

?Формирование документа «Акт выполненных работ».

?Составление графика работ по разработке программного обеспечения.

?Контроль соблюдения графика работ.

?Оперативный поиск и предоставление информации о состоянии заявки клиента.

?Формирование отчетов о результатах деятельности подразделений компании.

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

При проектировании базы данных использовалось такое мощное CASE-средство как ERwin 4.0, поскольку от того, насколько хорошо спроектирована база данных, зависит удобство ее дальнейшего использования и администрирования. Также использовалась система управления реляционными базами данных Microsoft Access, которая предоставляет пользователям функциональные возможности, позволяющие осуществлять доступ к важным данным, и производить их глубокий анализ, а также является серьезной средой разработки приложений. Для реализации пользовательского интерфейса была проведена разработка Windows-приложения с учетом принципов создания дружественных интерфейсов и программная реализация проекта с помощью визуальной среды проектирования Borland Delphi 2010, на объектно-ориентированном языке программирования Object Pascal. Для доступа к данным хранящимся в таблицах MS Access используется наиболее передовая технология доступа к данным - технология Microsoft ADO.

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



Список использованных источников


1.Информация о компании ООО «МегионСофтОйл»: #"center">Приложение А. Листинг программных модулей проекта


Модуль данных (UDataM)UDataM;

SysUtils, Classes, DB, ADODB, WordXP, OleServer;

DataM: TDataM;UMain, Uklient, Uuslugi, Uuzel, Utex, Umarka;

{$R *.dfm}

//===После отмены в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterCancel(DataSet: TDataSet);

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterDelete(DataSet: TDataSet);

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Клиенты компании"===

procedure TDataM.ADOTklientAfterEdit(DataSet: TDataSet);

Uklient.Fklient.N1.Enabled:=False;

Uklient.Fklient.N3.Enabled:=False;

Uklient.Fklient.N4.Enabled:=True;

Uklient.Fklient.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Клиенты компании"===

procedure TDataM.ADOTklientAfterInsert(DataSet: TDataSet);

Uklient.Fklient.N1.Enabled:=False;

Uklient.Fklient.N3.Enabled:=False;

Uklient.Fklient.N4.Enabled:=True;

Uklient.Fklient.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Клиенты компании"===

procedure TDataM.ADOTklientAfterPost(DataSet: TDataSet);

Uklient.Fklient.N1.Enabled:=True;

Uklient.Fklient.N3.Enabled:=True;

Uklient.Fklient.N4.Enabled:=False;

Uklient.Fklient.N5.Enabled:=True;

ADOTklient.Refresh;;

//===После отмены в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterCancel(DataSet: TDataSet);

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterDelete(DataSet: TDataSet);

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterEdit(DataSet: TDataSet);

Umarka.Fmarka.N1.Enabled:=False;

Umarka.Fmarka.N3.Enabled:=False;

Umarka.Fmarka.N4.Enabled:=True;

Umarka.Fmarka.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterInsert(DataSet: TDataSet);

Umarka.Fmarka.N1.Enabled:=False;

Umarka.Fmarka.N3.Enabled:=False;

Umarka.Fmarka.N4.Enabled:=True;

Umarka.Fmarka.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Марки оргтехники"===

procedure TDataM.ADOTmarkiAfterPost(DataSet: TDataSet);

Umarka.Fmarka.N1.Enabled:=True;

Umarka.Fmarka.N3.Enabled:=True;

Umarka.Fmarka.N4.Enabled:=False;

Umarka.Fmarka.N5.Enabled:=True;

ADOTklient.Refresh;;

//===Обновить цену ПО===TDataM.ADOTprogCalcFields(DataSet: TDataSet);

S:currency;

S:=ADOTprogЦена.Value;

ADOTprogСумма.Value:=S;;

//===Обновить сумму заказа===

procedure TDataM.ADOTrabAfterPost(DataSet: TDataSet);

ADOQSumRab.Close;.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRab.Open;;

//===Расчет суммы работ===TDataM.ADOTrabCalcFields(DataSet: TDataSet);

S:currency;

S:=ADOTrabЦена.Value*ADOTrabКоличество.Value;

ADOTrabСумма.Value:=S;;

//===Обновить сумму заказа===

procedure TDataM.ADOTrasAfterPost(DataSet: TDataSet);

ADOQSumRas.Close;.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRas.Open;;

//===Расчет суммы расхода===

procedure TDataM.ADOTrasCalcFields(DataSet: TDataSet);

S:currency;

S:=ADOTrasЦена.Value*ADOTrasКоличество.Value;

ADOTrasСумма.Value:=S;;

//===После отмены в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterCancel(DataSet: TDataSet);

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterDelete(DataSet: TDataSet);

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Оргтехника"===

procedure TDataM.ADOTtexAfterEdit(DataSet: TDataSet);

Utex.Ftex.N1.Enabled:=False;

Utex.Ftex.N3.Enabled:=False;

Utex.Ftex.N4.Enabled:=True;

Utex.Ftex.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Оргтехника"===

procedure TDataM.ADOTtexAfterInsert(DataSet: TDataSet);

Utex.Ftex.N1.Enabled:=False;

Utex.Ftex.N3.Enabled:=False;

Utex.Ftex.N4.Enabled:=True;

Utex.Ftex.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Оргтехника"===

procedure TDataM.ADOTtexAfterPost(DataSet: TDataSet);

Utex.Ftex.N1.Enabled:=True;

Utex.Ftex.N3.Enabled:=True;

Utex.Ftex.N4.Enabled:=False;

Utex.Ftex.N5.Enabled:=True;

ADOTklient.Refresh;;

//===После отмены в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterCancel(DataSet: TDataSet);

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterDelete(DataSet: TDataSet);

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Услуги компании"===

procedure TDataM.ADOTuslugiAfterEdit(DataSet: TDataSet);

Uuslugi.Fuslugi.N1.Enabled:=False;

Uuslugi.Fuslugi.N3.Enabled:=False;

Uuslugi.Fuslugi.N4.Enabled:=True;

Uuslugi.Fuslugi.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Услуги компании"===

procedure TDataM.ADOTuslugiAfterInsert(DataSet: TDataSet);

Uuslugi.Fuslugi.N1.Enabled:=False;

Uuslugi.Fuslugi.N3.Enabled:=False;

Uuslugi.Fuslugi.N4.Enabled:=True;

Uuslugi.Fuslugi.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Услуги компании"===

procedure TDataM.ADOTuslugiAfterPost(DataSet: TDataSet);

Uuslugi.Fuslugi.N1.Enabled:=True;

Uuslugi.Fuslugi.N3.Enabled:=True;

Uuslugi.Fuslugi.N4.Enabled:=False;

Uuslugi.Fuslugi.N5.Enabled:=True;

ADOTklient.Refresh;;

//===После отмены в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterCancel(DataSet: TDataSet);

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

end;

//===После удаления записи в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterDelete(DataSet: TDataSet);

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

end;

//===После изменения записи в справочнике "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterEdit(DataSet: TDataSet);

Uuzel.Fuzel.N1.Enabled:=False;

Uuzel.Fuzel.N3.Enabled:=False;

Uuzel.Fuzel.N4.Enabled:=True;

Uuzel.Fuzel.N5.Enabled:=False;

end;

//===После добавление записи в справочник "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterInsert(DataSet: TDataSet);

Uuzel.Fuzel.N1.Enabled:=False;

Uuzel.Fuzel.N3.Enabled:=False;

Uuzel.Fuzel.N4.Enabled:=True;

Uuzel.Fuzel.N5.Enabled:=False;

end;

//===После сохранения записи в справочник "Узлы оргтехники"===

procedure TDataM.ADOTuzelAfterPost(DataSet: TDataSet);

Uuzel.Fuzel.N1.Enabled:=True;

Uuzel.Fuzel.N3.Enabled:=True;

Uuzel.Fuzel.N4.Enabled:=False;

Uuzel.Fuzel.N5.Enabled:=True;

ADOTklient.Refresh;;

//===Отображение суммы заказа===

procedure TDataM.DSremontDataChange(Sender: TObject; Field: TField);

ADOQSumRab.Close;

ADOQSumRab.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRab.Open;

ADOQSumRas.Close;.Parameters.ParamValues['N']:=ADOTremontНомерЗаказа.Value;

ADOQSumRas.Open;.FMain.Edit2.Text:=Format('%m',[ADOQSumRasУзлы.Value+ADOQSumRabРаботы.Value]);

end;

//===Переход по записям таблицы заказов===

procedure TDataM.DSzakazDataChange(Sender: TObject; Field: TField);

if UDataM.DataM.ADOTzakazВидЗаказа.Value='Проведение ТО' then

begin

UMain.FMain.Panel4.Visible:=False;

UMain.FMain.Panel3.Visible:=True;

UMain.FMain.GroupBox13.Visible:=True;

UMain.FMain.GroupBox10.Visible:=False;

end;

if UDataM.DataM.ADOTzakazВидЗаказа.Value='Разработка ПО' then

begin

UMain.FMain.Panel3.Visible:=False;

UMain.FMain.Panel4.Visible:=True;

UMain.FMain.GroupBox13.Visible:=False;

UMain.FMain.GroupBox10.Visible:=True;

end;;.

Модуль главной формы (UMain)UMain;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, Mask, ComCtrls, Buttons;

FMain: TFMain;UDataM, Uklient, Uuslugi, Uuzel, Utex, Umarka, UReport, Uspr;

{$R *.dfm}

//===Поиск заказа===TFMain.BitBtn1Click(Sender: TObject);

UDataM.DataM.ADOTzakaz.Filter:='НомерЗаказа='+Edit3.Text;

UDataM.DataM.ADOTzakaz.Filtered:=True;

RadioGroup1.ItemIndex:=-1;;

//===Добавить дату этапа===TFMain.MonthCalendar1DblClick(Sender: TObject);

If DBGrid5.SelectedIndex=2 Then

begin

UDataM.DataM.ADOTgraf.Edit; UDataM.DataM.ADOTgraf.FieldValues['ДатаЭтапа']:=DateToStr(MonthCalendar1.Date);

UDataM.DataM.ADOTgraf.Post;

end;

If DBGrid5.SelectedIndex=3 Then

begin

UDataM.DataM.ADOTgraf.Edit; UDataM.DataM.ADOTgraf.FieldValues['ДатаЗавершенияЭтапа']:=DateToStr(MonthCalendar1.Date);

UDataM.DataM.ADOTgraf.Post;

end;;

//===Справочник "Узлы оргтехники"===TFMain.N8Click(Sender: TObject);

Uuzel.Fuzel.ShowModal;;

//===Справочник "Оргтехника"===TFMain.N6Click(Sender: TObject);

Utex.Ftex.ShowModal;;

//===Справочник "Услуги марки оргтехники"===TFMain.N7Click(Sender: TObject);

Umarka.Fmarka.ShowModal;;

//===Справочник "Услуги компании"===TFMain.N9Click(Sender: TObject);

Uuslugi.Fuslugi.ShowModal;;

//===Фильтр заказов===TFMain.RadioGroup1Click(Sender: TObject);

if RadioGroup1.ItemIndex=0 then

begin

UDataM.DataM.ADOTzakaz.Filtered:=False;

end;

if RadioGroup1.ItemIndex=1 then

begin

UDataM.DataM.ADOTzakaz.Filter:='ВидЗаказа='+Chr(39) +'Проведение ТО'+Chr(39);

UDataM.DataM.ADOTzakaz.Filtered:=True;

end;

if RadioGroup1.ItemIndex=2 then

begin

UDataM.DataM.ADOTzakaz.Filter:='ВидЗаказа='+Chr(39) +'Разработка ПО'+Chr(39);

UDataM.DataM.ADOTzakaz.Filtered:=True;

end;;

//===Справочник "Клиенты компании"===

procedure TFMain.N10Click(Sender: TObject);

Uklient.Fklient.ShowModal;;

//===Акт приема-передачи===TFMain.N11Click(Sender: TObject);

Name, NameS: OleVariant;

n: integer;

S: string;

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

n:=1;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Акт приема-передачи.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Акт приема-передачи №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Акт приема-передачи" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;

//===Наряд на ТО===TFMain.N12Click(Sender: TObject);

Name, NameS: OleVariant;

n: integer;

S: string;

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Наряд на проведение ТО.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Наряд на проведение ТО №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n);.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value;.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value);.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

Except

begin

ShowMessage('Шаблон документа "Наряд на проведение ТО" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;;

//===Дефектная ведомость===TFMain.N13Click(Sender: TObject);

Name, NameS: OleVariant;

n: integer;

S: string;

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Дефектная ведомость.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Дефектная ведомость №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:=DBEdit7.Text;

UDataM.DataM.WordDoc.Tables.Item(2).Cell(8,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n];

UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n);.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value; UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

n:=1;

With UDataM.DataM.ADOTras do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrasУзел.Value; UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrasКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Item(n+1).Delete;

S:=Format('%m',[UDataM.DataM.ADOQSumRabРаботы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOQSumRasУзлы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(2,2).Range.InsertBefore(S);

S:=Edit2.Text; UDataM.DataM.WordDoc.Tables.Item(5).Cell(3,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Дефектная ведомость" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;;

//===Акт выполненных работ===TFMain.N14Click(Sender: TObject);

Name, NameS: OleVariant;

Sum: single;

n: integer;

S: string;

IF UDataM.DataM.ADOTzakazНомерЗаказа.Value=Null Then

begin

Showmessage('Выберите заказ на проведение ТО!');

Exit;

end;

Name:=ExtractFilePath(Application.ExeName)+'\documents\Акт выполненных работ.doc';

S:=IntToStr(UDataM.DataM.ADOTzakazНомерЗаказа.Value);

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Акт выполненных работ №'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOTzakazДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(1).Cell(1,4).Range.InsertBefore(S);

S:=DBEdit1.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(1,2).Range.InsertBefore(S);

S:=DBEdit3.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DBEdit4.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(3,2).Range.InsertBefore(S);

S:=DBEdit5.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(4,2).Range.InsertBefore(S);

S:=DBEdit6.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(5,2).Range.InsertBefore(S);

S:=DBEdit2.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(6,2).Range.InsertBefore(S);

S:=DBEDate1.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(7,2).Range.InsertBefore(S);

S:=DBEdit7.Text; UDataM.DataM.WordDoc.Tables.Item(2).Cell(8,2).Range.InsertBefore(S);

S:='';

For n:=0 to DBMemo1.Lines.Count-1 do

S:=S+DBMemo1.Lines.Strings[n]; UDataM.DataM.WordDoc.Tables.Item(2).Cell(2,4).Range.InsertBefore(S);

n:=1;

With UDataM.DataM.ADOTrab do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrabУслуга.Value; UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrabКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrabСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(3).Rows.Item(n+1).Delete;

n:=1;

With UDataM.DataM.ADOTras do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,1).Range.InsertBefore(S);

S:=UDataM.DataM.ADOTrasУзел.Value; UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,3).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTrasКоличество.Value); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,4).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOTrasСумма.Value]); UDataM.DataM.WordDoc.Tables.Item(4).Cell(n+1,5).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Add(EmptyParam);

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(4).Rows.Item(n+1).Delete;

S:=Format('%m',[UDataM.DataM.ADOQSumRabРаботы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOQSumRasУзлы.Value]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(2,2).Range.InsertBefore(S);

S:=Edit2.Text; UDataM.DataM.WordDoc.Tables.Item(5).Cell(3,2).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOTzakazСкидка.Value); UDataM.DataM.WordDoc.Tables.Item(5).Cell(4,2).Range.InsertBefore(S); Sum:=UDataM.DataM.ADOQSumRasУзлы.Value+DataM.ADOQSumRabРаботы.Value;

Sum:=Sum-(Sum*UDataM.DataM.ADOTzakazСкидка.Value/100);

S:=Format('%m',[Sum]); UDataM.DataM.WordDoc.Tables.Item(5).Cell(5,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Акт выполненных работ" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;;

//===Отчет ТО===TFMain.N15Click(Sender: TObject);

Ureport.FReport.Caption:='Отчет ТО';

Ureport.FReport.ShowModal;;

//===Отчет ПО===TFMain.N16Click(Sender: TObject);

Ureport.FReport.Caption:='Отчет ПО';

Ureport.FReport.ShowModal;;

//===Выход===TFMain.N17Click(Sender: TObject);

FMain.Close;;

//===Справка===TFMain.N5Click(Sender: TObject);

Uspr.Fspr.ShowModal;;

//===Добавить заказ на проведение ТО===

procedure TFMain.SBAddClick(Sender: TObject);

Panel4.Visible:=False;

Panel3.Visible:=True;

UDataM.DataM.ADOTzakaz.Insert;

DBLookupComboBox3.Visible:=True;

DBLookupComboBox2.Visible:=True;

DBLookupComboBox4.Visible:=True;

DateTimePicker1.Enabled:=True;

DateTimePicker1.Date:=Date();

DateTimePicker2.Enabled:=True;

DateTimePicker2.Date:=Date();

DBMemo1.Visible:=False;

DBComboBox1.ReadOnly:=True;

Memo1.Visible:=True;

Memo1.Clear;

Edit1.Visible:=True;

Edit1.Clear;

DBEdit2.Visible:=False;

DBEDate1.Visible:=False;

DBEdit7.Visible:=False;

DBEdit1.Visible:=False;

DBEdit5.Visible:=False;

DBEdit6.Visible:=False;

SBAdd.Enabled:=False;

SBSave.Enabled:=True;

SBdelet.Enabled:=False;;

//===Добавить заказ на разработку ПО===

procedure TFMain.SBAddPOClick(Sender: TObject);

Panel3.Visible:=False;

Panel4.Visible:=True;

UDataM.DataM.ADOTzakaz.Insert;

DBLookupComboBox7.Visible:=True;

DBComboBox2.ReadOnly:=True;

DBMemo2.Visible:=False;

Memo2.Visible:=True;

Memo2.Clear;

Edit5.Visible:=True;

Edit5.Clear;

DBEdit13.Visible:=False;

DBEdit11.Visible:=False;

Edit4.Visible:=True;

Edit4.Clear;

DBEdit12.Visible:=False;

SBAddPO.Enabled:=False;

SBSavePO.Enabled:=True;

SBdeletPO.Enabled:=False;

end;

//===Отменить заказ на проведение ТО===

procedure TFMain.SBcancelClick(Sender: TObject);

UDataM.DataM.ADOTzakaz.Cancel;

UDataM.DataM.ADOTremont.Cancel;

DateTimePicker1.Enabled:=False;

DateTimePicker2.Enabled:=False;

DBComboBox1.ReadOnly:=False;

DBMemo1.Visible:=True;

Memo1.Visible:=False;

DBLookupComboBox3.Visible:=False;

DBLookupComboBox2.Visible:=False;

DBLookupComboBox4.Visible:=False;

Edit1.Visible:=False;

DBEDate1.Visible:=True;

DBEdit7.Visible:=True;

DBEdit2.Visible:=True;

DBEdit1.Visible:=True;

DBEdit5.Visible:=True;

DBEdit6.Visible:=True;

SBAdd.Enabled:=True;

SBSave.Enabled:=False;

SBdelet.Enabled:=True;;

//===Отменить заказ на разработку ПО===

procedure TFMain.SBcancelPOClick(Sender: TObject);

UDataM.DataM.ADOTzakaz.Cancel;

UDataM.DataM.ADOTprog.Cancel;

DBLookupComboBox7.Visible:=False;

DBComboBox2.ReadOnly:=False;

DBMemo2.Visible:=True;

Memo2.Visible:=False;

Edit5.Visible:=False;

DBEdit13.Visible:=True;

DBEdit11.Visible:=True;

Edit4.Visible:=False;

DBEdit12.Visible:=True;

SBAddPO.Enabled:=True;

SBSavePO.Enabled:=False;

SBdeletPO.Enabled:=True;;

//===Удалить заказ на проведение ТО===

procedure TFMain.SBdeletClick(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTzakaz.Delete;;

//===Удалить заказ на разработку ПО===

procedure TFMain.SBdeletPOClick(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTzakaz.Delete;;

//===Сохранить заказ на проведение ТО===

procedure TFMain.SBSaveClick(Sender: TObject);

M: String;

i: integer;

if DBLookupComboBox3.Text='' then

begin

Showmessage('Выберите клиента!');

Exit;

end;

if DBLookupComboBox2.Text='' then

begin

Showmessage('Выберите технику!');

Exit;

end;

if DBLookupComboBox4.Text='' then

begin

Showmessage('Выберите марку техники!');

Exit;

end;

if Edit1.Text='' then

begin

Showmessage('Введите серийный номер техники!');

Exit;

end; UDataM.DataM.ADOTzakazКодКлиента.Value:=UDataM.DataM.ADOTklientКодКлиента.Value;

UDataM.DataM.ADOTzakazДатаЗаказа.Value:=Date();

UDataM.DataM.ADOTzakazВидЗаказа.Value:='Проведение ТО';

UDataM.DataM.ADOTzakaz.Post;

UDataM.DataM.ADOTzakaz.Refresh;

UDataM.DataM.ADOTremont.Insert; UDataM.DataM.ADOTremontНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value; UDataM.DataM.ADOTremontКодТехники.Value:=UDataM.DataM.ADOTtexКодТехники.Value; UDataM.DataM.ADOTremontКодМарки.Value:=UDataM.DataM.ADOTmarkiКодМарки.Value;

UDataM.DataM.ADOTremontСтатус.Value:='на выполнении'; UDataM.DataM.ADOTremont.FieldValues['ДатаРемонта']:=DateToStr(DateTimePicker1.Date); UDataM.DataM.ADOTremont.FieldValues['ДатаЗавершения']:=DateToStr(DateTimePicker2.Date);

UDataM.DataM.ADOTremontСерийныйНомер.Value:=Edit1.Text;

For i:=0 to Memo1.Lines.Count-1 do

M:=M+Memo1.Lines.Strings[i];

UDataM.DataM.ADOTremontОписание.Value:=M;

UDataM.DataM.ADOTremont.Post;

UDataM.DataM.ADOTremont.Refresh;

DateTimePicker1.Enabled:=False;

DateTimePicker2.Enabled:=False;

DBComboBox1.ReadOnly:=False;

DBMemo1.Visible:=True;

Memo1.Visible:=False;

DBLookupComboBox3.Visible:=False;

DBLookupComboBox2.Visible:=False;

DBLookupComboBox4.Visible:=False;

Edit1.Visible:=False;

DBEDate1.Visible:=True;

DBEdit7.Visible:=True;

DBEdit2.Visible:=True;

DBEdit1.Visible:=True;

DBEdit5.Visible:=True;

DBEdit6.Visible:=True;

SBAdd.Enabled:=True;

SBSave.Enabled:=False;

SBdelet.Enabled:=True;

end;

//===Сохранить заказ на разработку ПО===

procedure TFMain.SBSavePOClick(Sender: TObject);

M: String;

i: integer;

if DBLookupComboBox7.Text='' then

begin

Showmessage('Выберите клиента!');

Exit;

end;

if Edit5.Text='' then

begin

Showmessage('Введите имя программного обеспечения!');

Exit;

end;

if Edit4.Text='' then

begin

Showmessage('Введите цену программного обеспечения!');

Exit;

end; UDataM.DataM.ADOTzakazКодКлиента.Value:=UDataM.DataM.ADOTklientКодКлиента.Value;

UDataM.DataM.ADOTzakazДатаЗаказа.Value:=Date();

UDataM.DataM.ADOTzakazВидЗаказа.Value:='Разработка ПО';

UDataM.DataM.ADOTzakaz.Post;

UDataM.DataM.ADOTzakaz.Refresh;

UDataM.DataM.ADOTprog.Insert; UDataM.DataM.ADOTprogНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value;

UDataM.DataM.ADOTprogИмяПО.Value:=Edit5.Text;

UDataM.DataM.ADOTprogЦена.Value:=StrToFloat(Edit4.Text);

UDataM.DataM.ADOTprogСтатус.Value:='на выполнении';

For i:=0 to Memo2.Lines.Count-1 do

M:=M+Memo2.Lines.Strings[i];

UDataM.DataM.ADOTprogОписание.Value:=M;

UDataM.DataM.ADOTprog.Post;

UDataM.DataM.ADOTprog.Refresh;

UDataM.DataM.ADOTgraf.Insert; UDataM.DataM.ADOTgrafНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value;

UDataM.DataM.ADOTgrafЭтап.Value:=1;

UDataM.DataM.ADOTgrafНаименование.Value:='Проектирование';

UDataM.DataM.ADOTgrafСтатусЭтапа.Value:='в разработке';

UDataM.DataM.ADOTgraf.Post;

UDataM.DataM.ADOTgraf.Refresh;

UDataM.DataM.ADOTgraf.Insert; UDataM.DataM.ADOTgrafНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value;

UDataM.DataM.ADOTgrafЭтап.Value:=2;

UDataM.DataM.ADOTgrafНаименование.Value:='Разработка';

UDataM.DataM.ADOTgrafСтатусЭтапа.Value:='в разработке';

UDataM.DataM.ADOTgraf.Post;

UDataM.DataM.ADOTgraf.Refresh;

UDataM.DataM.ADOTgraf.Insert; UDataM.DataM.ADOTgrafНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value;

UDataM.DataM.ADOTgrafЭтап.Value:=3;

UDataM.DataM.ADOTgrafНаименование.Value:='Тестирование';

UDataM.DataM.ADOTgrafСтатусЭтапа.Value:='в разработке';

UDataM.DataM.ADOTgraf.Post;

UDataM.DataM.ADOTgraf.Refresh;

UDataM.DataM.ADOTgraf.Insert; UDataM.DataM.ADOTgrafНомерЗаказа.Value:=UDataM.DataM.ADOTzakazНомерЗаказа.Value;

UDataM.DataM.ADOTgrafЭтап.Value:=4;

UDataM.DataM.ADOTgrafНаименование.Value:='Внедрение';

UDataM.DataM.ADOTgrafСтатусЭтапа.Value:='в разработке';

UDataM.DataM.ADOTgraf.Post;

UDataM.DataM.ADOTgraf.Refresh;

DBLookupComboBox7.Visible:=False;

DBComboBox2.ReadOnly:=False;

DBMemo2.Visible:=True;

Memo2.Visible:=False;

Edit5.Visible:=False;

DBEdit13.Visible:=True;

DBEdit11.Visible:=True;

Edit4.Visible:=False;

DBEdit12.Visible:=True;

SBAddPO.Enabled:=True;

SBSavePO.Enabled:=False;

SBdeletPO.Enabled:=True;

end;.

Модуль формы справочника «Клиенты компании» (Uklient)

unit Uklient;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, Grids, DBGrids, StdCtrls, Buttons, DBCtrls;

Fklient: TFklient;UMain, UDataM;

{$R *.dfm}

//===Переход по записям===

procedure TFklient.DBGrid1ColumnMoved(Sender: TObject; FromIndex,

ToIndex: Integer);

N1.Enabled:=True;

N3.Enabled:=True;

N4.Enabled:=False;

N5.Enabled:=True;;

//===Добавить===TFklient.N1Click(Sender: TObject);

UDataM.DataM.ADOTklient.Insert;;

//===Отменить===TFklient.N2Click(Sender: TObject);

UDataM.DataM.ADOTklient.Cancel;;

//===Изменить===TFklient.N3Click(Sender: TObject);

UDataM.DataM.ADOTklient.Edit;;

//===Сохранить===TFklient.N4Click(Sender: TObject);

UDataM.DataM.ADOTklient.Post;;

//===Удалить===TFklient.N5Click(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTklient.Delete;;

end.

Модуль формы справочника «Услуги компании» (Uuslugi)

unit Uuslugi;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Grids, DBGrids, Menus, DBCtrls, StdCtrls;

Fuslugi: TFuslugi;UMain, UDataM;

{$R *.dfm}

//===Переход по записям===

procedure TFuslugi.DBGrid1ColumnMoved(Sender: TObject; FromIndex,

ToIndex: Integer);

N1.Enabled:=True;

N3.Enabled:=True;

N4.Enabled:=False;

N5.Enabled:=True;;

//===Добавить===TFuslugi.N1Click(Sender: TObject);

UDataM.DataM.ADOTuslugi.Insert;;

//===Отменить===TFuslugi.N2Click(Sender: TObject);

UDataM.DataM.ADOTuslugi.Cancel;;

//===Изменить===TFuslugi.N3Click(Sender: TObject);

UDataM.DataM.ADOTuslugi.Edit;;

//===Сохранить===TFuslugi.N4Click(Sender: TObject);

UDataM.DataM.ADOTuslugi.Post;;

//===Удалить===TFuslugi.N5Click(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTuslugi.Delete;;

end.

Модуль формы справочника «Оргтехника» (Utex)

unit Utex;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Mask, DBCtrls, ExtCtrls, StdCtrls, DBCGrids, Menus;

Ftex: TFtex;UMain, UDataM;

{$R *.dfm}

//===Переход по записям===

procedure TFtex.FormClick(Sender: TObject);

N1.Enabled:=True;

N3.Enabled:=True;

N4.Enabled:=False;

N5.Enabled:=True;;

//===Добавить===TFtex.N1Click(Sender: TObject);

UDataM.DataM.ADOTtex.Insert;;

//===Отменить===TFtex.N2Click(Sender: TObject);

UDataM.DataM.ADOTtex.Cancel;;

//===Изменить===TFtex.N3Click(Sender: TObject);

UDataM.DataM.ADOTtex.Edit;;

//===Сохранить===TFtex.N4Click(Sender: TObject);

UDataM.DataM.ADOTtex.Post;;

//===Удалить===TFtex.N5Click(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTtex.Delete;;

end.

Модуль формы справочника «Марки оргтехники» (Umarka)

unit Umarka;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DBCtrls, StdCtrls, Mask, ExtCtrls, DBCGrids, Menus;

Fmarka: TFmarka;UMain, UDataM;

{$R *.dfm}

//===Переход по записям===

procedure TFmarka.DBCtrlGrid1Click(Sender: TObject);

N1.Enabled:=True;

N3.Enabled:=True;

N4.Enabled:=False;

N5.Enabled:=True;;

//===Добавить===TFmarka.N1Click(Sender: TObject);

UDataM.DataM.ADOTmarki.Insert;;

//===Отменить===TFmarka.N2Click(Sender: TObject);

UDataM.DataM.ADOTmarki.Cancel;;

//===Изменить===TFmarka.N3Click(Sender: TObject);

UDataM.DataM.ADOTmarki.Edit;;

//===Сохранить===TFmarka.N4Click(Sender: TObject);

UDataM.DataM.ADOTmarki.Post;;

//===Удалить===TFmarka.N5Click(Sender: TObject);

IF MessageBox(Handle,' УДАЛЕНИЕ ЗАПИСИ!!!'+#10+#10+

'Вы действительно хотите удалить запись?'+#10+#10+

'После нажатия на кнопку ДА, данные будут удалены.'+#10+

'Для отмены удаления нажмите на кнопку НЕТ.', 'ВНИМАНИЕ!!!',

MB_YesNo+MB_ICONWARNING+MB_TaskModal) = mrYes Then

UDataM.DataM.ADOTmarki.Delete;;.

Модуль формы (UReport)UReport;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DBCtrls, StdCtrls, Buttons, ComCtrls;

FReport: TFReport;UMain, UDataM;

{$R *.dfm}

//===Отчеты ТО и ПО

procedure TFReport.SBreportClick(Sender: TObject);

Name, NameS: OleVariant;

Sum, SumVZ, SumNVZ: single;

n: integer;

S: string;FReport.Caption='Отчет ТО' Then

begin

Name:=ExtractFilePath(Application.ExeName)+'\documents\Отчет ТО.doc';

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Отчет ТО'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS);

S:=DateToStr(DateTimePicker1.Date);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(2,2).Range.InsertBefore(S);

S:=DateToStr(DateTimePicker2.Date);

UDataM.DataM.WordDoc.Tables.Item(1).Cell(3,2).Range.InsertBefore(S);

UDataM.DataM.ADOQReportTO.Close;.DataM.ADOQReportTO.Parameters.ParamValues['D1']:=DateTimePicker1.Date; UDataM.DataM.ADOQReportTO.Parameters.ParamValues['D2']:=DateTimePicker2.Date;

UDataM.DataM.ADOQReportTO.Open;

n:=1; SumVZ:=0; SumNVZ:=0;

With UDataM.DataM.ADOQReportTO do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,1).Range.InsertBefore(S);:=IntToStr(UDataM.DataM.ADOQReportTOЗАКАЗЫНомерЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOQReportTOДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,3).Range.InsertBefore(S);

S:=UDataM.DataM.ADOQReportTOКлиент.Value; UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,4).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOQReportTOДатаРемонта.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,5).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOQReportTOДатаЗавершения.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,6).Range.InsertBefore(S);

S:=UDataM.DataM.ADOQReportTOСтатус.Value; UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,7).Range.InsertBefore(S);

UDataM.DataM.ADOQSumRabR.Close; UDataM.DataM.ADOQSumRabR.Parameters.ParamValues['N']:=UDataM.DataM.ADOQReportTOЗАКАЗЫНомерЗаказа.Value;

UDataM.DataM.ADOQSumRabR.Open;

UDataM.DataM.ADOQSumRasR.Close; UDataM.DataM.ADOQSumRasR.Parameters.ParamValues['N']:=UDataM.DataM.ADOQReportTOЗАКАЗЫНомерЗаказа.Value;

UDataM.DataM.ADOQSumRasR.Open; S:=Format('%m',[UDataM.DataM.ADOQSumRabRРаботы.Value+UDataM.DataM.ADOQSumRasRУзлы.Value]); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,8).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOQReportTOСкидка.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,9).Range.InsertBefore(S); Sum:=UDataM.DataM.ADOQSumRabRРаботы.Value+UDataM.DataM.ADOQSumRasRУзлы.Value;

Sum:=Sum-(Sum*UDataM.DataM.ADOQReportTOСкидка.Value/100);

S:=Format('%m',[Sum]); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,10).Range.InsertBefore(S) UDataM.DataM.WordDoc.Tables.Item(2).Rows.Add(EmptyParam);

if UDataM.DataM.ADOQReportTOСтатус.Value='завершен' then

SumVZ:=SumVZ+Sum;

if UDataM.DataM.ADOQReportTOСтатус.Value='на выполнении' then

SumNVZ:=SumNVZ+Sum;

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(2).Rows.Item(n+1).Delete;

S:=Format('%m',[SumVZ]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[SumNVZ]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(2,2).Range.InsertBefore(S);

S:=Format('%m',[SumVZ+SumNVZ]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(3,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Отчет ТО" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;FReport.Caption='Отчет ПО' Then

begin

Name:=ExtractFilePath(Application.ExeName)+'\documents\Отчет ПО.doc';

NameS:=ExtractFilePath(Application.ExeName)+'\temp\Отчет ПО'+S+'.doc';

UDataM.DataM.WordApp.Connect;

Try

Application.Minimize;

UDataM.DataM.WordApp.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); UDataM.DataM.WordDoc.ConnectTo(UDataM.DataM.WordApp.ActiveDocument);

UDataM.DataM.WordDoc.SaveAs(NameS);

S:=DateToStr(DateTimePicker1.Date); UDataM.DataM.WordDoc.Tables.Item(1).Cell(2,2).Range.InsertBefore(S);

S:=DateToStr(DateTimePicker2.Date); UDataM.DataM.WordDoc.Tables.Item(1).Cell(3,2).Range.InsertBefore(S);

UDataM.DataM.ADOQReportPO.Close; UDataM.DataM.ADOQReportPO.Parameters.ParamValues['D1']:=DateTimePicker1.Date; UDataM.DataM.ADOQReportPO.Parameters.ParamValues['D2']:=DateTimePicker2.Date;

UDataM.DataM.ADOQReportPO.Open;

n:=1; SumVZ:=0; SumNVZ:=0;

With UDataM.DataM.ADOQReportPO do

begin

First;

while not EOF do

begin

S:=IntToStr(n); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,1).Range.InsertBefore(S);:=IntToStr(UDataM.DataM.ADOQReportPOЗАКАЗЫНомерЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,2).Range.InsertBefore(S);

S:=DateToStr(UDataM.DataM.ADOQReportPOДатаЗаказа.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,3).Range.InsertBefore(S);

S:=UDataM.DataM.ADOQReportPOКлиент.Value; UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,4).Range.InsertBefore(S);

S:=UDataM.DataM.ADOQReportPOИмяПО.Value; UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,5).Range.InsertBefore(S);

S:=UDataM.DataM.ADOQReportPOСтатус.Value; UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,6).Range.InsertBefore(S);

S:=Format('%m',[UDataM.DataM.ADOQReportPOЦена.Value]); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,7).Range.InsertBefore(S);

S:=IntToStr(UDataM.DataM.ADOQReportPOСкидка.Value); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,8).Range.InsertBefore(S);

Sum:=UDataM.DataM.ADOQReportPOЦена.Value;

Sum:=Sum-(Sum*UDataM.DataM.ADOQReportPOСкидка.Value/100);

S:=Format('%m',[Sum]); UDataM.DataM.WordDoc.Tables.Item(2).Cell(n+1,9).Range.InsertBefore(S);

UDataM.DataM.WordDoc.Tables.Item(2).Rows.Add(EmptyParam);

if UDataM.DataM.ADOQReportPOСтатус.Value='выполнено' then

SumVZ:=SumVZ+Sum;

if UDataM.DataM.ADOQReportPOСтатус.Value='в разработке' then

SumNVZ:=SumNVZ+Sum;

inc(n);

Next;

end;

end;

UDataM.DataM.WordDoc.Tables.Item(2).Rows.Item(n+1).Delete;

S:=Format('%m',[SumVZ]); UDataM.DataM.WordDoc.Tables.Item(3).Cell(1,2).Range.InsertBefore(S);

S:=Format('%m',[SumNVZ]); DataM.DataM.WordDoc.Tables.Item(3).Cell(2,2).Range.InsertBefore(S);

S:=Format('%m',[SumVZ+SumNVZ]);

DataM.DataM.WordDoc.Tables.Item(3).Cell(3,2).Range.InsertBefore(S);

Except

begin

ShowMessage('Шаблон документа "Отчет ПО" не найден!');

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

exit;

end;

end;

UDataM.DataM.WordApp.Disconnect;

Application.Restore;

end;.


Содержание 1. Введение . Аналитическая часть 2.1 Характеристика (описание) объекта автоматизации 2.1.1 Технико-экономическая характеристика пред

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ