Автоматизация ведения учета образующихся отходов на предприятии
ВВЕДЕНИЕ
Компьютеризация всех сфер общественной жизни
человека - одно из самых впечатляющих событий последней четверти XX века.
Компьютер стал неотъемлемой частью современной жизни. Современную жизнь не
легко представить без передовых технологий. Компьютеризация на сегодняшний день
заполонила все существующее делопроизводство, все научные, учебные,
промышленные и бытовые сферы деятельности. В каждой второй семье сейчас есть
компьютер, а в некоторых и не один, производители периферии устроили гонку
технологий, за которой порой трудно успеть.
При работе в различных сферах деятельности
общества компьютеры помогают автоматизировать и сделать более корректным
пользование любого программного продукты. В развитых странах автоматизировано
почти все и многие задачи, выполняемые раньше людьми, были оптимизированы и
представлены в виде программ.
Разработка программы «Сетевой программный
комплекс (СПК) Автоматизация ведения учетов отходов производства и потребления,
образующихся на предприятии» значительно облегчает работу по ведению учета
образующихся отходов на предприятии и, соответственно, сокращает затраченное
время. Программа предусматривает регистрацию подразделения, что повышает
надежность сохранности данных. Она позволяет быстро и легко составить накладную
или журнал учета за год, а также произвести их печать.
Программа легка в работе, имеет понятный
интерфейс, защиту некорректного ввода, следовательно, ей могут пользоваться
даже неопытные пользователи.
1.
ОБЩИЙ РАЗДЕЛ
.1 Характеристика ПК
Для выполнения дипломного проекта выбран
компьютер типа IBM
PC.
Компьютеры данного типа обладают следующими
достоинствами:
высокая надежность;
легкая модернизация;
невысокая стоимость;
простота ремонта;
простота использования.
Компьютеры данного типа обладают следующими недостатками:
недостаточная вычислительная мощность;
дорогое обслуживание компьютеров, то есть
требуются высококвалифицированные специалисты, дорогое программное обеспечение.
В базовую конфигурацию
компьютера входят:
- системный блок компьютера,
основная часть стационарного компьютера, в корпусе которого размещены: источник
электропитания, материнская плата с центральным процессором и оперативной
памятью, звуковая плата, видео карта, различные накопители (жесткий диск,
дисководы, приводы CD-ROM)
и дополнительные устройства. Системный блок обычно имеет несколько параллельных
и последовательных портов ввода и вывода информации, такие как клавиатура,
мышь, монитор, принтер;
- процессор - это самый главный
компонент компьютера. Он выполняет поступающие на его вход команды и управляет
машиной. У всех микропроцессоров характеристики: разрядность и тактовая
частота. Также очень важны для пользователей производительность компьютера, то
есть скорость работы, и объём памяти для хранения данных. Разрядность - это
количество битов, которое микропроцессор воспринимает как единое целое (4, 8,
16, 32, 64 - целая степень числа 2). От разрядности зависят производительность
и максимальный объём внутренней памяти, с которой может работать машина. Кроме
того, в ПК имеется специальный генератор тактовых импульсов, которые служат
метками времени для синхронизации работы устройств машины. Тактовая частота,
измеряемая в мегагерцах (МГц), в значительной степени влияет на
производительность компьютера;
оперативная память - это
совокупность специальных электронных ячеек, каждая из которых может хранить
конкретную комбинацию нулей и единиц - один байт;
кэш-память предназначена для
обеспечения быстрого доступа часто используемым данным. Кэш-память
располагается "между" микропроцессором и оперативной памятью, и при
обращении микропроцессором к памяти сначала производится поиск нужных данных в
кэш-памяти;
·
на
материнской плате располагается микропроцессор, оперативная память, а также
отдельные платы, вставляющиеся слоты. Контроллеры устройств подключаются
непосредственно к системной магистрали передачи данных - южный мост;
·
винчестеры
(накопители на жестких дисках) предназначены для постоянного хранения
информации, используемой при работе с компьютером: программ операционной
системы, часто используемых пакетов программ, трансляторов с языков
программирования и так далее. Основными характеристиками жёсткого диска
являются ёмкость диска и скорость работы диска;
·
монитор
- предназначен для отображения текстовой и графической информации. Мониторы бывают
цветными и монохромными;
·
клавиатура
- предназначена для ввода информации в компьютер;
·
мышь
- это устройство, облегчающее ввод информации в компьютер.
Характеристика выбранного ПК
приведена в таблице 1.
Таблица 1 - Технические
характеристики ПК
Наименование
|
Характеристика
|
Монитор
|
LG FLATRON 720P
|
Процессор
|
Intel LGA775 Corel2Duo-E8400
|
Материнская
плата
|
ASUS P5K SE
|
Видеокарта
|
GeForce 9600GT 512Mb DDR3
|
Модуль
памяти
|
1024Mb PC2-6400 DDR2 DIMM Kington
|
Клавиатура
|
Genius K641
|
Мышь
|
Microsoft
|
HDD
|
Maxtor 6Y080L0
|
Монитор
|
LG FLATRON 720P
|
Процессор
|
Intel LGA775 Corel2Duo-E8400
|
Материнская
плата
|
ASUS P5K SE
|
1.2 Характеристика
ОС ПК
Для реализации данного
дипломного проекта выбрана операционная система Windows
XP.
Данная операционная система является
объектно-ориентированной. Назначение операционной системы заключается в
обеспечении удобства управления компьютером.
Достоинства Windows
XP:
1)
независимость
программ от внешних устройств;
2)
средства
для построения пользовательского интерфейса;
3)
доступность
всей оперативной памяти;
4)
связь
и внедрение объектов;
5)
использование
масштабируемых шрифтов True
Type;
6)
единый
пользовательский интерфейс;
7)
многозадачность;
8)
совместимость
с DOS-приложениями;
9)
удобство
поддержки устройств и мультимедиа.
Windows
- программа может обращаться к внешним устройствам только через Windows,
что снимает с разработчиков все проблемы обеспечения совместимости с
конкретными внешними устройствами.
Средства для построения
пользовательского интерфейса Windows
содержат все необходимые функции для построения пользовательского интерфейса
программ: окон, меню, запросов и т.д.
Доступность всей оперативной
памяти облегчает создание на ее базе больших программ.
Связь и внедрение объектов -
новый способ обмена данными между приложениями, при котором вы имеется
возможность комбинировать изображение, звук и текст.
В Windows
действует принцип WYSIWYG
(What you
see is
what yon
get), который
означает, что та информация, которую вы видите на экране, соответствует тому,
что выдается принтером при распечатке.
Windows
упрощает работу с внешними устройствами. Принципиальная новизна Windows
XP состоит именно в
том, что концепция объектно-ориентированного подхода реализована в ней наиболее
полно. Объектно-ориентированный подход реализуется через модель рабочего стола.
Пользователь работает с задачами и приложениями так же, как с документами на
своем письменном столе.
Одно из главных отличий Windows
ХР от других операционных систем состоит в том, что основной упор в ней
делается на документ, а программа, задача, приложение или программный код
вообще рассматриваются только как инструмент для работы с документом. Другая
особенность Windows
ХР заключается в том, что при включении машины сразу выполняется загрузка Windows
ХР. Для пользователя это оборачивается некоторыми неудобствами. Он должен
привыкнуть к тому, что прежде чем выключить машину, нужно корректно завершить
работу с Windows,
поскольку новая операционная система создаёт буфера в оперативной памяти, и их
содержимое должно быть сброшено на диск.
Подход к аппаратному
обеспечению также изменился. Теперь система использует стандарт Plug&Play,
что облегчает и максимально автоматизирует процесс добавления новых
периферийных устройств. Стандарт Plug&Play - это совместная разработка фирм
Intel и Microsoft.
Основная его идея заключается в том, что каждое устройство, соответствующее
этому стандарту, сообщает о себе определённую информацию, благодаря которой
операционная система выполняет автоматическую конфигурацию периферийных
устройств и разрешает аппаратные конфликты.
Windows
ХР является 32-разрядной операционной системой, которая работает только в
защищенном режиме процессора. Ядро, включающее управление памятью и
диспетчеризацию процессов, содержит только 32-разрядный код. Это уменьшает издержки
и ускоряет работу. Windows
ХР поддерживает приоритетную многозадачность (preemptive
multitasidng).
Windows
ХР автоматически освобождает всю память, отведённую приложению, после того, как
оно заканчивает работу. BIOS
- базовая система ввода-вывода. BIOS
хранится в программно-запоминающем устройстве на системной плате компьютера. BIOS
реализует следующие функции.
Производит автоматическую
проверку аппаратных компонентов компьютера, при его включении. В случае
обнаружения неисправностей выдаётся сообщение на экран монитора или выдаются
звуковые сигналы, по количеству которых можно определить характер
неисправности.
Производит поиск на загрузочном
диске модуля Boot
Record и загружает его в
оперативную память.
Выполняет обслуживание
системных прерываний. Системное прерывание вырабатывается внешними устройствами
с целью выполнения различных операций. Суть прерываний заключается в том, что,
получив, такой сигнал от внешнего устройства, микропроцессор на короткое время
прерывает выполнение основной программы и начинает выполнять подпрограмму
обслуживания внешнего устройства, посылающего сигнал прерывания. Каждое внешнее
устройство имеет определённый код к сигналу прерывания. Эти коды сигналов
прерываний хранятся в программно-запоминающемся устройстве BIOS.
1.3 Характеристика системы
программирования
.3.1 Описание системы
программирования
Для разработки программного обеспечения на
предприятии используется система программирования Delphi
5 Development Environment, в основе которой лежит язык программирования Object
Pascal.
Delphi 5 имеет
самый быстрый среди продуктов данного рода оптимизирующий компилятор,
позволяющий создавать быстрые и относительно компактные программы.
Любая программа в Delphi состоит из файла
проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с
расширениями pas). Каждый из таких файлов описывает программную единицу Object
Pascal.
Файл проекта представляет собой программу,
написанную на языке Object Pascal и предназначенную для обработки компилятором.
Структура проекта
выглядит
так:
program Example;, Unit1 in
'uExample.pas' {frm_Example};
{$R
*.RES}.Initialize;.CreateForm(tfrm_Example, frm_Example);.Run;.
В окне кода жирным шрифтом выделяются так
называемые зарезервированные слова, а курсивом - комментарии. Зарезервированные
слова играют важную роль в Object Pascal, придавая программе в целом свойство
текста, написанного на почти естественном английском языке. Каждое
зарезервированное слово несёт в себе условное сообщение для компилятора,
который анализирует текст программы: слева направо и сверху вниз.
Комментарии, наоборот, ничего не значат для
компилятора, и он их игнорирует. Комментарии важны для программиста, который с
их помощью поясняет те или иные места программы. Наличие комментариев в тексте
программы делает её понятнее и позволяет легко вспомнить особенности реализации
программы, которую вы написали несколько лет назад. В Object Pascal
комментарием считается любая последовательность символов, заключенная в
фигурные скобки. В Object Pascal в качестве ограничителей комментария могут
использоваться пары символов (*, *) и //.:
{Это комментарий}
(*Это тоже комментарий*)
//Все символы до конца этой строки составляют
комментарий
Слово Program со следующим за ним именем
программы и точкой с запятой образуют
заголовок программы. За заголовком следует
раздел описаний, в котором программист описывает используемые в программе
идентификаторы. Идентификаторы обозначают элементы программы, такие как типы,
переменные, процедуры, функции. Здесь же с помощью предложения, которое начинается
зарезервированным словом uses программист сообщает компилятору о тех фрагментах
программы (модулях), которые необходимо рассматривать как неотъемлемые
составные части программы и которые располагаются в других файлах.
Собственно тело программы начинается со слова
begin и ограничивается терминатором end с точкой. Тело состоит из нескольких
операторов языка Object Pascal. В каждом операторе реализуется некоторое
действие - изменение значения переменной, анализ результата вычисления,
обращение к подпрограмме и т. п.
.3.1.1 Элементы программы
Элементы программы - это минимальные неделимые
её части, ещё несущие в себе определенную значимость для компилятора. К
элементам относятся:
зарезервированные слова;
идентификаторы;
типы;
константы;
переменные;
метки;
подпрограммы;
комментарии.
Зарезервированные слова это слова, указывающие
компилятору на необходимость выполнения определённых действий.
Зарезервированные слова не могут использоваться в программе ни для каких иных
целей кроме тех, для которых они предназначены. Например, зарезервированное
слово begin означает для компилятора начало составного оператора. Программист
не может создать в программе переменную с именем begin, константу begin, метку
begin или вообще какой бы то ни было другой элемент программы с именем begin.
Идентификаторы - это слова, которыми программист
обозначает любой другой элемент программы, кроме зарезервированного слова,
идентификатора или комментария.
Типы - это специальные конструкции языка,
которые рассматриваются компилятором как образцы для создания других элементов
программы, таких как переменные, константы и функции. Любой тип определяет две
важные для компилятора вещи: объём памяти, выделяемый для размещения элемента,
и набор допустимых действий, которые программист может совершать над элементами
данного типа.
Константы определяют области памяти, которые не
могут изменять своего значения в ходе работы программы. Как и любые другие
элементы программы, константы могут иметь свои собственные имена. Объявлению
имён констант должно предшествовать зарезервированное слово const. Например:
PI=3,14;
E=2,7.
Тип константы определяется способом её записи и
легко распознается компилятором в тексте программы, поэтому программист может
не использовать именованные константы, т. е. не объявлять их в программе.
Переменные связаны с изменяемыми областями
памяти, т. е. с такими её участками, содержимое которых будет меняться в ходе
работы программы. В отличие от констант переменные всегда объявляются в
программе. Для этого после идентификатора переменной ставится двоеточие и имя
типа, по образу которого должна строиться переменная. Разделу объявления
переменной (переменных) должно предшествовать слово var. Например:
var
i: Integer;
Метки используются очень редко и только для
того, чтобы программист смог указать компилятору, какой оператор программы
должен выполнятся следующим. Метки, как и переменные, всегда объявляются в
программе. Разделу объявлений меток предшествует зарезервированное слово label.
Например:
label 1;
Begin
Goto 1;
// Программист требует передать управление
// оператору, помеченному меткой 1.
// Эти операторы будут пропущены
:
// Оператору, идущему за этой меткой,
// будет передано управление;
Подпрограммы - это специальным образом
оформленные фрагменты программы. Замечательной особенностью подпрограмм
является их значительная независимость от остального текста программы.
Подпрограммы являются средством структурирования программ, т. е. расчленения
программ на ряд во многом независимых фрагментов. Структурирование неизбежно
для крупных программных проектов, поэтому подпрограммы используются в Delphi 5
очень часто.
В Object Pascal есть два сорта подпрограмм:
процедуры и функции. Функция отличается от процедуры только тем, что её
идентификатор можно наряду с константами и переменными использовать в
выражениях, т. к. функция имеет выходной результат определенного типа.
.3.1.2 Основные операторы
В языке Delphi
5 используются следующие основные операторы:
1) Инструкция
If:
Вариант 1:
If-Then-Else.Условие Then
{Инструкции, которые выполняются, если условие
истинно}
end
Else
begin
{Инструкции, которые выполняются, если условие
ложно}
end;
Вариант 2. If-Then.Условие
Then
{Инструкции, которые выполняются, если условие
истинно}
end;
) Инструкция Case:
Case Выражение Of
Список1_Констант:
begin
{инструкции}
end;
Список2_Констант:
begin
{инструкции}
end;
СписокN_Констант:
begin
{инструкции}
end;
end;
) Инструкция For
Вариант 1 (с увеличением счётчика):
For
Счётчик:=НачальноеЗначение To
КонечноеЗначение Do
{инструкции};
Вариант 2 (с уменьшением счётчика):
For
Счётчик:=НачальноеЗначение DownTo
КонечноеЗначение Do
{инструкции };
) Инструкция Repeat:
Repeat
{инструкции}
Until Условие;
Сначала выполняются инструкции цикла, которые
расположены между Repeat и Until.
Затем вычисляется значение выражения Условие, и если оно равно False, то
инструкции цикла выполняются ещё раз. И так до тех пор, пока значение выражения
Условие не станет равным True.
5) Инструкция
While:Условие
Do
{инструкции};
Сначала проверяется Условие, если оно истинно,
то выполняются инструкции между begin и end. Затем снова проверяется Условие.
Если оно выполняется, то инструкции цикла выполняются ещё раз. И так до тех
пор, пока Условие не станет ложным.
) Безусловный переход GoTo:Метка;
Инструкция осуществляет переход к инструкции,
перед которой стоит метка. Метка должна быть объявлена в разделе Label.
) Объявление двумерного массива
ИмяМассива: Array
[НижнийИндекс1..ВерхнийИндекс1, НижнийИндекс2..ВерхнийИндекс2] Of
ТипЭлементов
1.3.1.3 Стандартные процедуры и функции
В таблице 2 приведены описания преобразований
языка Delphi.
Таблица 2 - Преобразования типов
Функция
|
Описание
|
IntToStr
(Выражение)
|
Преобразование
числового выражения целого типа в строку
|
StrToInt
(Строка:String)
|
Преобразование
строки, изображающей целое или вещественное число, в число
|
Основные типы данных представлены в таблице 3.
Таблица 3 - Типы данных
Название
|
Тип
данных
|
Длина
|
Диапазон
значений
|
Integer
|
целый
|
4
|
-2
147 483 648...+2 147 483
647
|
Boolean
|
логический
|
1
|
False/True
|
Char
|
символьный
|
1
|
Chr(0)..Chr(255)
|
String
|
символьный
|
~231
|
Набор
символов Char
|
Константы определяют области памяти, которые не
могут изменять своего значения в ходе работы программы.
Переменные связаны с изменяемыми областями
памяти, т. е. с такими её участками, содержимое которых будет меняться в ходе
работы программы. В отличие от констант переменные всегда объявляются в
программе.
1.3.2 Характеристика SQL
Server
.3.2.1 Описание SQL
Server
На предприятии используется система управления
базами данных SQL
Server 2000.SQL Server в
качестве языка запросов использует версию SQL, получившую название Transact-SQL
(сокращённо T-SQL). T-SQL позволяет использовать дополнительный синтаксис для
хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы
данных с управляющим приложением). SQL Server поддерживает Open
Database
Connectivity (ODBC) - интерфейс
взаимодействия приложений с СУБД.
.3.2.2 Хранимые процедуры
Хранимые процедуры позволяют повысить
производительность, расширяют возможности программирования и поддерживают
функции безопасности данных.
Вместо хранения часто используемого запроса,
клиенты могут ссылаться на соответствующую хранимую процедуру. При вызове
хранимой процедуры её содержимое сразу же обрабатывается сервером.
Кроме собственно выполнения запроса, хранимые
процедуры позволяют также производить вычисления и манипуляцию данными -
изменение, удаление, выполнять DDL-операторы и вызывать другие хранимые
процедуры, выполнять сложную транзакционную логику. Один-единственный оператор
позволяет вызвать сложный сценарий, который содержится в хранимой процедуре,
что позволяет избежать пересылки через сеть сотен команд и, в особенности,
необходимости передачи больших объёмов данных с клиента на сервер.
В СУБД при первом запуске хранимой процедуры она
компилируется (выполняется синтаксический анализ и генерируется план доступа к
данным). В дальнейшем её обработка осуществляется быстрее.
.3.2.3 Операторы SQL
.3.2.3.1 Выбор
данных
Выбор данных представляет собой наиболее часто
встречающуюся операцию, выполняемую с помощью SQL. Оператор SELECT - один из
самых важных операторов этого языка, применяемый для выбора данных. Синтаксис
этого оператора имеет следующий вид:column-listtable-list
[WHERE where-clause]
[ORDER BY order-by-clause]
Операторы SELECT должны содержать слова SELECT и
FROM; другие ключевые слова, такие как WHERE или ORDER BY, являются
необязательными.
За ключевым словом SELECT следуют сведения о
том, какие именно поля необходимо включить в результирующий набор данных.
Звездочка (*) обозначает все поля таблицы, например:*
Если выбор данных осуществляется из нескольких
таблиц и при этом выбираются одноименные поля из разных таблиц, следует
ссылаться на имена таблиц для полной идентификации полей, включаемых в
результирующий набор данных.
.3.2.3.2 Предложение FROM
Для указания имен таблиц, из которых выбираются
записи, применяется ключевое слово FROM, например:* FROM имя_таблицы
Этот запрос возвратит все поля из таблицы.
.3.2.3.3 Предложение WHERE
Для фильтрации результатов, возвращаемых
оператором SELECT, можно использовать предложение WHERE, синтаксис которого
имеет вид:
WHERE expression1 [{AND | OR}
expression2 […]]
2. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ
.1 Постановка задачи
.1.1 Сущность задачи
.1.1.1 Назначение задачи
Программный продукт предназначен для учета
образования и движения отходов производства и потребления на предприятии.
Данные используются для формирования бухгалтерских документов и отчетов для
вышестоящих организаций.
.1.1.2 Цель задачи
Внедрение СПК позволит автоматизировать рабочие
места ответственных за экологическое состояние работников подразделений.
.1.1.3 Периодичность решения задачи
По мере необходимости.
.1.1.4 Описательная
модель задачи
В качестве дипломного проекта предложено
разработать сетевой программный комплекс (СПК) автоматизация ведения учетов
отходов производства и потребления, образующихся на предприятии. Программный
продукт предназначен для учета образования и движения отходов производства и
потребления на предприятии. Данные используются для формирования бухгалтерских
документов и отчетов для вышестоящих организаций.
Внедрение СПК позволит автоматизировать рабочие
места ответственных за экологическое состояние работников подразделений по
вводу данных, формированию накладных по отпуску материалов и получению
электронной версии журнала образования и движения отходов.
В
программе должны быть реализованы следующие функции:
- ведение справочника видов отходов;
ведение справочника взаимодействующих
организаций;
ввод и корректировка данных по отходам и
подразделениям;
просмотр информации по видам отходов с подсуммированием
количества;
формирование накладных по отпуску материалов;
формирование журнала учета образования и
движения отходов.
Безопасность данных гарантируется за счет
системы распределения прав доступа пользователей.
2.1.2 Описание входной информации
.1.2.1 Входные документы
Входным документом для решения данной задачи
является акт списания отходов производства и потребления предприятия.
.1.2.2 Входные данные
Входные данные представлены в таблицах 4-9.
Таблица 4 - Входные данные таблицы OTH_Move
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Номер
записи
|
Nzap
|
int
|
Счетчик
|
Номер
записи справочника
|
Nzap_Spr
|
int
|
Таблица
OTH_Spr
|
Получено
другим подразделением
|
Poluch_dr_podr
|
numeric
|
Поле
ввода
|
Использовано
предприятием
|
Ispolz_predpr
|
numeric
|
Поле
ввода
|
Передано
населению
|
Peredano_nas
|
numeric
|
Поле
ввода
|
Номер
записи организации
|
Nzap_org
|
int
|
Таблица
OTH_Spr_Org
|
Дата
составления
|
D_form
|
smalldatetime
|
Поле
ввода
|
Номер
накладной
|
N_nakl
|
varchar
|
Поле
ввода
|
Сдано
|
Sdano
|
numeric
|
Поле
ввода
|
Вывезено,
сдано на захоронение
|
Vyvez1
|
numeric
|
Поле
ввода
|
Вывезено,
сдано на захоронение
|
Vyvez2
|
numeric
|
Поле
ввода
|
Оплачено
за переработку
|
Oplach_pererab
|
numeric
|
Поле
ввода
|
Получено
за переработку
|
Poluch_pererab
|
numeric
|
Поле
ввода
|
Дата
ввода
|
D_vvoda
|
smalldatetime
|
Системная
запись
|
Пользователь
|
Username
|
varchar
|
Системная
запись
|
Таблица 5 - Входные данные таблицы OTH_Source
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Номер
записи
|
Nzap
|
int
|
Счетчик
|
Количество
|
Kol
|
numeric
|
Поле
ввода
|
Подразделение
|
Podr
|
varchar
|
Определяется
при регистрации
|
Номер
записи справочника
|
Nzap_Spr
|
int
|
Таблица
OTH_Spr
|
Номер
записи накладной
|
N_zap_move
|
int
|
Таблица
OTH_Move
|
Признак
формирования
|
Pr_form
|
bit
|
Поле
ввода
|
Дата
ввода
|
D_vvoda
|
Системная
запись
|
Пользователь
|
Username
|
varchar
|
Системная
запись
|
Таблица 6 - Входные данные таблицы OTH_Spr
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Номер
записи
|
Nzap
|
int
|
Счетчик
|
Код
отхода
|
Kod
|
varchar
|
Поле
ввода
|
Наименование
отхода
|
Naim
|
varchar
|
Поле
ввода
|
Описание
|
TP
|
varchar
|
Поле
ввода
|
Код
единицы измерения
|
Kod_ed
|
smallint
|
Таблица
Spr_Ed_Izm
|
Признак
удаления
|
Del_Pr
|
smallint
|
Поле
ввода
|
Дата
ввода
|
D_vvoda
|
smalldatetime
|
Системная
запись
|
Пользователь
|
Username
|
varchar
|
Системная
запись
|
Таблица 7 - Входные данные таблицы OTH_Spr_Org
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Номер
записи
|
Nzap
|
int
|
Счетчик
|
Код
организации
|
Kod
|
varchar
|
Поле
ввода
|
Наименование
|
Naim
|
varchar
|
Поле
ввода
|
Лицензия
|
Licence
|
varchar
|
Поле
ввода
|
Дата
выдачи лицензии
|
D_Licence
|
smalldatetime
|
Поле
ввода
|
Признак
удаления
|
Del_Pr
|
smallint
|
Поле
ввода
|
Дата
ввода
|
D_vvoda
|
smalldatetime
|
Системная
запись
|
Пользователь
|
Username
|
varchar
|
Системная
запись
|
Таблица 8 - Входные данные таблицы Password_OTH
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Пароль
|
password
|
char
|
Поле
ввода
|
Подразделение
|
dep
|
char
|
Поле
ввода
|
Таблица 9 - Входные данные таблицы Spr_Ed_Izm
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Код
|
Kod
|
int
|
Счетчик
|
Наименование
|
Naim
|
varchar
|
Поле
ввода
|
Наименование
полное
|
nlong
|
varchar
|
Поле
ввода
|
2.1.3 Описание
выходной информации
.1.3.1. Выходные документы
Выходные документы - «Накладная на отпуск
материалов на сторону» и «Журнал учета образования и движения отходов»
представлены в Приложении 1 и Приложении 2 соответственно.
.1.3.2 Описание выходных данных.
Выходные данные представлены в таблице 10.
Таблица 10 - Выходные данные
Наименование
|
Идентификатор
|
Тип
данных
|
Источник
данных
|
Получено
другим подразделением
|
Poluch_dr_podr
|
numeric
|
Таблица
БД OTH_Move
|
Использовано
предприятием
|
Ispolz_predpr
|
numeric
|
Таблица
БД OTH_Move
|
Передано
населению
|
Peredano_nas
|
numeric
|
Таблица
БД OTH_Move
|
Дата
составления
|
D_form
|
smalldatetime
|
Таблица
БД OTH_Move
|
Номер
накладной
|
N_nakl
|
varchar
|
Таблица
БД OTH_Move
|
Сдано
|
Sdano
|
numeric
|
Таблица
БД OTH_Move
|
Вывезено,
сдано на захоронение
|
Vyvez1
|
numeric
|
Таблица
БД OTH_Move
|
Вывезено,
сдано на захоронение
|
Vyvez2
|
numeric
|
Таблица
БД OTH_Move
|
Оплачено
за переработку
|
Oplach_pererab
|
numeric
|
Таблица
БД OTH_Move
|
Получено
за переработку
|
Poluch_pererab
|
numeric
|
Таблица
БД OTH_Move
|
Количество
|
Kol
|
numeric
|
Таблица
БД OTH_Source
|
Код
отхода
|
Kod
|
varchar
|
Таблица
БД OTH_Spr
|
Описание
|
TP
|
varchar
|
Таблица
БД OTH_Spr
|
Наименование
|
Naim
|
varchar
|
Таблица
БД
OTH_Spr_Org
|
Лицензия
|
Licence
|
varchar
|
Таблица
БД
OTH_Spr_Org
|
Организация
|
Edit1
|
string
|
Поле
ввода
|
Структурное
подразделение получателя
|
Edit11
|
string
|
Поле
ввода
|
Основание
|
Edit2
|
string
|
Поле
ввода
|
Кому
|
Naim
|
varchar
|
Поле
ввода
|
Через
кого
|
Edit3
|
string
|
Поле
ввода
|
Отпуск
разрешил (должность)
|
Edit4
|
string
|
Поле
ввода
|
Отпуск
разрешил (расшифровка подписи)
|
Edit5
|
string
|
Поле
ввода
|
Отпустил
(должность)
|
Edit6
|
string
|
Поле
ввода
|
Отпустил
(расшифровка подписи)
|
Edit7
|
string
|
Поле
ввода
|
Главный
бухгалтер (расшифровка подписи)
|
Edit8
|
string
|
Поле
ввода
|
|
|
|
|
|
|
|
2.1.4 Математическая модель
Математическая модель задачи показана в формуле
(1).
, (1)
где Sum -общее
количество образовавшегося отхода одного вида;
Koli -
количество единовременно образовавшегося отхода.
2.1.5 Логическая модель задачи
Логическая модель задачи представлена на рисунке
1.
Рис.1
2.1.6 Требования к программе
.1.6.1 Функциональные требования
В
программе должны быть реализованы следующие функции:
- ведение справочника видов отходов;
ведение справочника взаимодействующих
организаций;
ввод и корректировка данных по отходам и
подразделениям;
просмотр информации по видам отходов с
подсуммированием количества;
формирование накладных по отпуску материалов;
формирование журнала учета образования и
движения отходов.
.1.6.2 Требования к надежности
Безопасность данных гарантируется за счет
системы распределения прав доступа пользователей.
Программа должна отвечать следующим требованиям
надежности:
вывод результатов только в том случае, если
введены все данные;
формирование отчетов только в том случае, если
выполнены условия отбора данных.
.1.6.3 Требования к интерфейсу программы
Для обеспечения максимального удобства и
эффективности работы с данными необходимо предусмотреть наличие в приложении
следующих элементов интерфейса.
Программа должна содержать:
интуитивно понятный для пользователя интерфейс;
наличие меню;
наличие справочной информации.
.2 Информационная модель программы решения
задачи
.2.1 Структура таблиц базы данных
Структура таблицы OTH_Move
представлена в таблице 11.
Таблица 11 - Структура таблицы OTH_Move
Таблица
|
Имя поля
|
Тип данных
|
Размерность
|
OTH_Move
|
Nzap
|
int
|
4
|
|
Nzap_Spr
|
int
|
4
|
|
Poluch_dr_podr
|
numeric
|
9
|
|
Ispolz_predpr
|
numeric
|
9
|
|
Peredano_nas
|
numeric
|
9
|
|
Nzap_org
|
int
|
4
|
|
D_form
|
smalldatetime
|
4
|
|
N_nakl
|
varchar
|
24
|
|
Sdano
|
numeric
|
9
|
OTH_Move
|
Vyvez1
|
numeric
|
9
|
|
Vyvez2
|
numeric
|
9
|
|
Oplach_pererab
|
numeric
|
9
|
|
Poluch_pererab
|
numeric
|
9
|
|
D_vvoda
|
smalldatetime
|
4
|
|
Username
|
varchar
|
25
|
Структура таблицы OTH_Source
представлена в таблице 12.
Таблица 12 - Структура таблицы OTH_Source
Таблица
|
Имя
поля
|
Тип
данных
|
Размерность
|
OTH_Source
|
Nzap
|
int
|
4
|
|
Podr
|
varchar
|
24
|
|
Nzap_Spr
|
int
|
4
|
|
Kol
|
numeric
|
9
|
|
N_zap_move
|
int
|
4
|
|
Pr_form
|
bit
|
1
|
|
D_vvoda
|
smalldatetime
|
4
|
|
Username
|
varchar
|
25
|
Структура таблицы OTH_Spr
представлена в таблице 13.
Таблица 13 - Структура таблицы OTH_Spr
Таблица
|
Имя
поля
|
Тип
данных
|
Размерность
|
OTH_Spr
|
Nzap
|
int
|
4
|
|
Kod
|
varchar
|
24
|
|
Naim
|
varchar
|
200
|
varchar
|
200
|
|
Kod_ed
|
smallint
|
2
|
|
Del_Pr
|
smallint
|
2
|
|
D_vvoda
|
smalldatetime
|
4
|
|
Username
|
varchar
|
25
|
Структура таблицы OTH_Spr_Org
представлена в таблице 14.
Таблица 14 - Структура таблицы OTH_Spr_Org
Таблица
|
Имя
поля
|
Тип
данных
|
Размерность
|
OTH_Spr_Org
|
Nzap
|
int
|
4
|
|
Kod
|
varchar
|
24
|
|
Naim
|
varchar
|
200
|
|
Licence
|
varchar
|
24
|
|
D_Licence
|
smalldatetime
|
4
|
|
Del_Pr
|
smallint
|
2
|
|
D_vvoda
|
smalldatetime
|
4
|
|
Username
|
varchar
|
25
|
Структура таблицы Password_OTH
представлена в таблице 15.
Таблица 15 - Структура таблицы Password_OTH
Таблица
|
Имя
поля
|
Тип
данных
|
Размерность
|
Password_OTH
|
password
|
char
|
3
|
|
dep
|
char
|
3
|
Структура таблицы Spr_Ed_Izm
представлена в таблице 16.
Таблица 16 - Структура таблицы Spr_Ed_Izm
Таблица
|
Имя
поля
|
Тип
данных
|
Размерность
|
Spr_Ed_Izm
|
Kod
|
int
|
4
|
|
Naim
|
varchar
|
15
|
|
nlong
|
varchar
|
50
|
2.2.2 Связи между таблицами базы данных и
файлами
Связи между таблицами показаны на рисунке 2.
Рис.2 Связи
между таблицами базы данных
2.3 Логическая модель программы
.3.1 Структурная
диаграмма
Структурная диаграмма представлена на рисунке 3.
Рис.3 Структурная
диаграмма
2.3.2 Логическая структура программы
Логическая структура программы представлена на
рисунке 4.
Рис.4 Логическая
структура
2.3.3 Обобщенные алгоритмы модулей программы
Обобщенные алгоритмы модулей программы
изображены на рисунках 5-13.
Рис.5 Модуль
«Справочник отходов»
Рис.6 Модуль
«Справочник организаций»
Рис.7 Модуль
«Справочник единиц измерения»
Рис.8 Модуль
«Регистрация»
Рис.9 Модуль «Главное меню»
Рис.10 Модуль
«Ввод образовавшегося отхода»
Рис.11 Модуль
«Создание накладной»
Рис.12 Модуль
«Накладная»
Рис.13 Модуль
«Журнал учета образования и движения отходов»
2.4 Текст программы
Unit1;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Grids,
DBGrids, Db, ADODB, ExtCtrls, DBTables, Mask, DBCtrls,, GridsEh;//, GridsEh;=
class(TForm): TButton;: TBevel;: TDBEdit;: TDBEdit;: TDBEdit;: TDBComboBox;:
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TButton;:
TComboBox;: TDBGridEh;: TEdit;: TLabel;: TLabel;: TRadioGroup;: TButton;:
TButton;: TEdit;FormCreate(Sender: TObject);Button4Click(Sender:
TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);ComboBox1Change(Sender:
TObject);Edit1Change(Sender: TObject);RadioGroup1Click(Sender:
TObject);FormActivate(Sender: TObject);FormClose(Sender: TObject; var Action:
TCloseAction);DBEdit2KeyPress(Sender: TObject; var Key:
Char);ComboBox1KeyPress(Sender: TObject; var Key: Char);Button3Click(Sender:
TObject);Edit2Change(Sender: TObject);
{ Private
declarations }
{ Public
declarations };: TForm1;Unit2;
{$R
*.DFM}TForm1.FormCreate(Sender:
TObject);.Query1.Close;.Query1.SQL.Clear;.Query1.SQL.Add('Select * from
OTH_Spr;');.Query1.Open;.Table2.Open;.Table2.First;NOT DataModule2.Table2.Eof
do.Items.Add(DataModule2.Table2.Fields[1].Value);.Table2.Next;;.Table2.Close;.Items.Add('0');.Items.Add('1');.Visible:=false;.Table2.Open;.Table2.First;NOT
DataModule2.Table2.Eof doDataModule2.Table2.Fields[1].Value=ComboBox1.Textbegin
Edit2.Text:=DataModule2.Table2.Fields[0].Value;;
endDataModule2.Table2.Next;;.Table2.Close;;TForm1.Button4Click(Sender:
TObject);.Database1.StartTransaction;.Query1.FieldByName('Kod_ed').AsInteger:=StrToInt(Edit2.Text);.Query1.Post;.Visible:=true;.Visible:=true;.Visible:=False;.Visible:=true;.Visible:=true;.ReadOnly:=false;.Height:=495;
except('Ошибка. Все несохраненные
действия отменены');
DataModule2.Database1.Rollback;
//Button2.Click;;;.Database1.Commit;;TForm1.Button1Click(Sender:
TObject);.Visible:=false;.Height:=660;.Query1.Insert;.ItemIndex:=0;.ItemIndex:=0;.Visible:=true;.Visible:=false;.Visible:=False;.Visible:=false;.ReadOnly:=true;Change(Sender);;TForm1.Button2Click(Sender:
TObject);.Visible:=true;.ReadOnly:=false;.Query1.Cancel;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;.Visible:=true;.Height:=495;;TForm1.ComboBox1Change(Sender:
TObject);.Table2.Open;.Table2.First;NOT DataModule2.Table2.Eof
doDataModule2.Table2.Fields[1].Value=ComboBox1.Textbegin
Edit2.Text:=DataModule2.Table2.Fields[0].Value;;
endDataModule2.Table2.Next;;.Table2.Close;;TForm1.Edit1Change(Sender:
TObject);fil: string;:='%'+edit1.text+'%';edit1.Text>''
then.Query1.Close;.Query1.SQL.Clear;.Query1.SQL.Add('SELECT * from OTH_Spr
where Kod LIKE "'+fil+'"'+' OR Naim LIKE
"'+fil+'"');.Query1.Open;.Query1.Close;.Query1.SQL.Clear;.Query1.SQL.Add('SELECT
* from OTH_Spr');.Query1.Open;;;TForm1.RadioGroup1Click(Sender:
TObject);.Query1.Filtered:=False;RadioGroup1.ItemIndex=1
then.Query1.Filter:='Del_Pr=0';.Query1.Filtered:=True;;RadioGroup1.ItemIndex=2
then.Query1.Filter:='Del_Pr=1';.Query1.Filtered:=True;;;TForm1.FormActivate(Sender:
TObject);.Visible:=true;.Height:=495;.ReadOnly:=false;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;;TForm1.FormClose(Sender:
TObject; var Action:
TCloseAction);.Query1.Cancel;;TForm1.DBEdit2KeyPress(Sender: TObject; var Key:
Char);not ((key in['0'..'9'])or (key =#8)) then
key:=#0;;TForm1.ComboBox1KeyPress(Sender: TObject; var Key:
Char);:=#0;;TForm1.Button3Click(Sender:
TObject);.Visible:=false;.Height:=660;.ReadOnly:=true;.Query1.Edit;.Visible:=false;.Visible:=true;.Visible:=false;.Visible:=false;.Text:=DataModule2.Query1.FieldByName('Kod_ed').AsString;;TForm1.Edit2Change(Sender:
TObject);Edit2.text='' then ComboBox1.Text:=''
else.Table2.Open;.Table2.First;NOT DataModule2.Table2.Eof
doEdit2.Text=DataModule2.Table2.Fields[0].Valuebegin
ComboBox1.Text:=DataModule2.Table2.Fields[1].Value;;DataModule2.Table2.Next;;.Table2.Close;;;.Unit2;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, DBTables;=
class(TDataModule): TDataSource;: TTable;: TTable;: TQuery;: TDataSource;:
TQuery;: TDataSource;: TQuery;: TQuery;: TQuery;: TDataSource;: TQuery;:
TDataSource;: TQuery;: TDataSource;: TQuery;: TQuery;: TQuery;
DataSource10:
TDataSource;
Database1:
TDatabase;: TQuery;
{ Private
declarations }
{ Public
declarations };: TDataModule2;
implementation
{$R *.DFM}.
unit Unit3;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Grids,
DBGrids, Mask, DBCtrls, DBCGrids, Buttons, DBGridEh,, GridsEh;//, GridsEh,
ComCtrls;= class(TForm): TLabel;: TButton;: TButton;: TButton;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TDBComboBox;: TLabel;: TDBEdit;: TDBEdit;:
TDBEdit;: TDBEdit;: TDBGridEh;: TLabel;: TEdit;: TRadioGroup;:
TButton;FormCreate(Sender: TObject);Button1Click(Sender:
TObject);Button3Click(Sender: TObject);Button4Click(Sender:
TObject);Edit1Change(Sender: TObject);RadioGroup1Click(Sender:
TObject);FormActivate(Sender: TObject);Button2Click(Sender:
TObject);DBEdit1KeyPress(Sender: TObject; var Key: Char);
{ Private
declarations }
{ Public
declarations };: TForm3;Unit2;
{$R
*.DFM}TForm3.FormCreate(Sender: TObject);.Items.Add('0');.Items.Add('1');.Query2.Close;.Query2.SQL.Clear;.Query2.SQL.Add('Select
* from
OTH_Spr_Org;');.Query2.Open;.Visible:=true;.Visible:=true;.Visible:=false;;TForm3.Button1Click(Sender:
TObject);.Visible:=false;.Height:=575;.Query2.Insert;.ItemIndex:=0;.Visible:=false;.Visible:=False;.Visible:=false;.Visible:=true;.ReadOnly:=true;;TForm3.Button3Click(Sender:
TObject);.Visible:=true;.Height:=460;.Query2.Cancel;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;.ReadOnly:=false;;TForm3.Button4Click(Sender:
TObject);.Database1.StartTransaction;.Query2.Post;.Visible:=true;.Height:=460;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;.ReadOnly:=false;('Ошибка.
Все
несохраненные действия отменены');.Database1.Rollback;
exit;;.Database1.Commit;;TForm3.Edit1Change(Sender:
TObject);fil: string;:='%'+edit1.text+'%';edit1.Text>''
then.Query2.Close;.Query2.SQL.Clear;.Query2.SQL.Add('SELECT * from OTH_Spr_Org
where Naim LIKE "'+fil+'"');.Query2.Open;.Query2.Close;.Query2.SQL.Clear;.Query2.SQL.Add('Select
* from OTH_Spr_Org');.Query2.Open;;;TForm3.RadioGroup1Click(Sender:
TObject);.Query2.Filtered:=False;RadioGroup1.ItemIndex=1
then.Query2.Filter:='Del_Pr=0';.Query2.Filtered:=True;;RadioGroup1.ItemIndex=2
then.Query2.Filter:='Del_Pr=1';.Query2.Filtered:=True;;;TForm3.FormActivate(Sender:
TObject);.Visible:=true;.Height:=460;.ReadOnly:=false;.Visible:=true;
Button1.Visible:=true;
Button2.Visible:=true;.Visible:=false;;TForm3.Button2Click(Sender:
TObject);.Visible:=false;.Height:=575;.Query2.Edit;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=true;.ReadOnly:=true;;TForm3.DBEdit1KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)) then key:=#0;
end;.
unit Unit4;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, StdCtrls,
SHELLAPI;= class(TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TLabel;: TLabel;:
TLabel;: TMenuItem;: TMenuItem;: TMenuItem;N2Click(Sender: TObject);N3Click(Sender:
TObject);N4Click(Sender: TObject);N7Click(Sender: TObject);N9Click(Sender:
TObject);N8Click(Sender: TObject);N6Click(Sender: TObject);N12Click(Sender:
TObject);N11Click(Sender: TObject);
{ Private
declarations }
{ Public
declarations };: TForm4;Unit1, Unit3, Unit5, Unit6, Unit7, Unit8, Unit9,
Unit10, Unit11;
{$R
*.DFM}TForm4.N2Click(Sender: TObject);.ShowModal;;TForm4.N3Click(Sender:
TObject);.ShowModal;;TForm4.N4Click(Sender:
TObject);.ShowModal;;TForm4.N7Click(Sender: TObject);.Close;;TForm4.N9Click(Sender:
TObject);.ShowModal;;TForm4.N8Click(Sender:
TObject);.ShowModal;;TForm4.N6Click(Sender:
TObject);.ShowModal;;TForm4.N12Click(Sender:
TObject);.ShowModal;;TForm4.N11Click(Sender:
TObject);(Application.Handle,'open', PChar('hh.exe'),PChar('C:\РАТЕП\help1.chm'),
nil, SW_SHOW);
end;.
unit Unit5;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Grids,
DBGrids, Mask, DBCtrls;= class(TForm): TDBGrid;: TButton;: TButton;: TButton;:
TDBEdit;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TLabel;:
TLabel;Button1Click(Sender: TObject);Button2Click(Sender:
TObject);Button4Click(Sender: TObject);FormCreate(Sender:
TObject);FormActivate(Sender: TObject);FormClose(Sender: TObject; var Action:
TCloseAction);DBEdit1KeyPress(Sender: TObject; var Key: Char);
{ Private
declarations }
{ Public
declarations };: TForm5;Unit2;
{$R
*.DFM}TForm5.Button1Click(Sender:
TObject);.Height:=430;.Query3.Insert;.Visible:=false;.Visible:=false;.Visible:=true;;TForm5.Button2Click(Sender:
TObject);.Height:=345;.Query3.Cancel;.Visible:=true;.Visible:=true;.Visible:=false;;TForm5.Button4Click(Sender:
TObject);.Database1.StartTransaction;.Query3.Post;.Height:=345;('Ошибка.
Все
несохраненные действия отменены');.Database1.Rollback;
exit;;.Database1.Commit;;TForm5.FormCreate(Sender:
TObject);.Query3.Close;.Query3.SQL.Clear;.Query3.SQL.Add('Select * from
Spr_Ed_Izm;');.Query3.Open;.Visible:=true;.Visible:=true;.Visible:=false;;TForm5.FormActivate(Sender:
TObject);.Height:=345;.Visible:=true;.Visible:=true;.Visible:=false;;TForm5.FormClose(Sender:
TObject; var Action:
TCloseAction);.Query3.Cancel;;TForm5.DBEdit1KeyPress(Sender: TObject; var Key:
Char);not ((key in['0'..'9'])or (key =#8)) then key:=#0;;.Unit6;, Messages,
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Grids, DBGrids,
DBGridEh, Mask, DBCtrls, ExtCtrls, GridsEh;//,GridsEh;= class(TForm): TLabel;:
TComboBox;: TLabel;: TComboBox;: TLabel;: TDBGridEh;: TButton;: TLabel;:
TEdit;: TEdit;: TLabel;: TButton;: TButton;: TEdit;FormCreate(Sender:
TObject);ComboBox2Change(Sender: TObject);OTHODY();ComboBox1Change(Sender:
TObject);Button5Click(Sender: TObject);FormActivate(Sender:
TObject);Edit2KeyPress(Sender: TObject; var Key: Char);Button2Click(Sender:
TObject);Button1Click(Sender: TObject);
{ Private
declarations }
{ Public
declarations };: TForm6;Unit2, Unit1, Unit8;
{$R
*.DFM}TForm6.FormCreate(Sender: TObject);
//Подразделения.Clear;.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select
* from Password_OTH;');.Query4.Open;.Query4.First;NOT DataModule2.Query4.Eof
doDataModule2.Query4.Fields[1].AsString<>'0'
then.Items.Add(DataModule2.Query4.Fields[1].AsString);.Query4.Next;;.Query4.Close;
//Виды отходов.Clear;.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select
* from OTH_Spr;');.Query4.Open;.Query4.First;NOT DataModule2.Query4.Eof
do.Items.Add(DataModule2.Query4.Fields[2].AsString);.Query4.Next;;.Query4.Close;(ComboBox2.Text>'')
then.Visible:=true;.Height:=530;begin.Visible:=false;.Height:=425;;Change(Sender);;TForm6.ComboBox2Change(Sender:
TObject);Summa_OTH: variant;ComboBox1.Text<>'' then
Button5.Visible:=false;ComboBox2.Text='' then
Edit4.Text:='0';.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select * from
OTH_Spr;');.Query4.Open;.Query4.First;NOT DataModule2.Query4.Eof
doDataModule2.Query4.Fields[2].AsString=ComboBox2.Textbegin.Text:=DataModule2.Query4.Fields[0].AsString;;DataModule2.Query4.Next;;.Query4.Close;;ComboBox2.Text<>''
then_OTH:=0;.Query5.First;NOT DataModule2.Query5.Eof do_OTH:=Summa_OTH+
DataModule2.Query5.Fieldbyname('kol').AsVariant;.Query5.Next;;.Text:=Summa_OTH;;(ComboBox2.Text>'')
then.Visible:=true;.Height:=530;begin.Visible:=false;.Height:=425;;;TForm6.OTHODY();
begin
//Загрузка отходов по виду и
подразделению
DataModule2.Query5.Filtered:=False;.Query5.Filter:='';
//первое введено,
второе-нет(ComboBox1.Text>'')
and (ComboBox2.Text='')DataModule2.Query5.Filter:='[Pr_Form]=0 and
[Podr]='+ComboBox1.Text
else
//первое не введено, второе-введено
if
(ComboBox1.Text='') and
(ComboBox2.Text>'')DataModule2.Query5.Filter:='[Pr_Form]=0 and [Nzap_Spr]='+Edit1.Text
//если все введено(ComboBox1.Text>'')
and (ComboBox2.Text>'')DataModule2.Query5.Filter:='[Pr_Form]=0 and
[Podr]='+ComboBox1.Text+' and [Nzap_Spr]='+Edit1.Text;
{else begin
DataModule2.Query5.Filtered:=false;;; }.Query5.Filtered:=true;;TForm6.ComboBox1Change(Sender:
TObject);;Change(Sender);ComboBox1.Text<>'' then
Button5.Visible:=false;;TForm6.Button5Click(Sender:
TObject);(ComboBox2.Text>'') then.Query7.Open;.Query7.Insert;
//Form8.DBEdit2.Text:=ComboBox1.Text;.Edit10.Text:=ComboBox2.Text;.DBEdit7.Text:=Edit4.Text;.Edit9.Text:=DataModule2.Query5.FieldByName('Naim_1').AsStrin;.ShowModal;ShowMessage('Сначала выберите вид отхода');;TForm6.FormActivate(Sender:
TObject);.Text:='';(ComboBox2.Text>'') then
Button5.Visible:=trueButton5.Visible:=false;Change(Sender);;TForm6.Edit2KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm6.Button2Click(Sender:
TObject);DataModule2.Query5.Fields[0].AsString>'' thenedit2.text>''
then.Query9.Open;.Query9.Locate('Nzap',DataModule2.Query5.Fields[0].AsVariant,[]);.Query9.Edit;.Query9.FieldByName('Kol').AsVariant:=
Edit2.Text;.Query9.Post;.Query9.Close;.Query5.Close; DataModule2.Query5.Open;
ShowMessage('Изменено
количество!');.Text:='';
ComboBox2Change(Sender
);ShowMessage('Сначала введите количество');
end else ShowMessage('Вы не выбрали
запись!');
end;TForm6.Button1Click(Sender:
TObject);DataModule2.Query5.Fields[0].AsString>'' thenMessageDlg('Подтвердите удаление записи',
mtInformation, [mbYes,mbNo], 0)=mrYes.Query9.Open;.Query9.Locate('Nzap',DataModule2.Query5.Fields[0].AsVariant,[]);DataModule2.Query9.FieldbyName('Pr_form').AsBoolean=true
then
ShowMessage('Данный вид отхода
находится в накладной. Удаление невозможно')DataModule2.Query9.Delete;.Query9.Close;.Query5.Close;
DataModule2.Query5.Open;
end;ShowMessage('Вы не можете
удалить пустую запись!');
end;.
unit Unit7;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons,
DBCtrls, Grids, DBGrids;= class(TForm): TLabel;: TEdit;: TComboBox;: TLabel;:
TLabel;: TButton;FormCreate(Sender: TObject);Button1Click(Sender: TObject);
{ Private
declarations }
{ Public
declarations };: TForm7;Unit4, Unit2, Unit6, Unit9;
{$R
*.DFM}TForm7.FormCreate(Sender: TObject);.Query6.Open;.Query6.First;NOT DataModule2.Query6.Eof
do.Items.Add(DataModule2.Query6.Fields[1].AsString);.Query6.Next;;.Query6.Close;.ItemIndex:=0;;TForm7.Button1Click(Sender:
TObject);Parol: variant;.Query6.Open;:=
DataModule2.Query6.Lookup('Dep',ComboBox1.Text,'Password');
DataModule2.Query6.Close;
If
Parol=Edit1.Text thenComboBox1.Text<>'0'
then.Combobox1.Text:=Combobox1.Text;.Combobox1.Enabled:=false;.N6.Visible:=false;.N1.Visible:=false;else
Form9.ComboBox1.ItemIndex:=0;
Form4.ShowModal;ShowMessage('Неправильный
пароль или подразделение!');
end;.
unit Unit8;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Mask,
DBCtrls, OleServer, Excel97, xlReport, ComCtrls;= class(TForm): TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TButton;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TButton;: TDateTimePicker;: TEdit;:
TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;:
TEdit;Button1Click(Sender: TObject);FormActivate(Sender:
TObject);Button2Click(Sender: TObject);DBEdit3KeyPress(Sender: TObject; var
Key: Char);DBEdit4KeyPress(Sender: TObject; var Key:
Char);DBEdit8KeyPress(Sender: TObject; var Key: Char);DBEdit10KeyPress(Sender:
TObject; var Key: Char);DBEdit11KeyPress(Sender: TObject; var Key:
Char);DBEdit12KeyPress(Sender: TObject; var Key: Char);DBEdit7KeyPress(Sender:
TObject; var Key: Char);Edit11KeyPress(Sender: TObject; var Key: Char);
{ Private
declarations }
{ Public
declarations };: TForm8;Unit3, Unit6, Unit2, ComObj;
{$R
*.DFM}TForm8.Button1Click(Sender:
TObject);.ShowModal;;TForm8.FormActivate(Sender: TObject);
//DBEdit2.Text:=Form6.Combobox1.Text;
//структурное подразделение
DBEdit6.Text:=Form6.Edit1.Text;
//номер отхода в справочнике отходов для записи в таблицу накладных
end;TForm8.Button2Click(Sender:
TObject);poisk, zap: integer;: Variant; :=CreateOleObject('Excel.Application');.Workbooks.Open['C:\РАТЕП\Накладная.xls'];
except('Шаблон накладной не
найден');
exit;;.Database1.StartTransaction;(DBEdit1.Text>'')
and (DBEdit5.Text>'')
then.Query7.FieldByName('Nzap_org').AsVariant:=DataModule2.Query2.Fields[0].AsVariant;.Query7.FieldByName('D_form').AsVariant:=DateTimePicker1.Date;.Query7.Post;.Query11.Close;.Query11.SQL.Clear;.Query11.SQL.Add('Select
max(Nzap) from OTH_Move');.Query11.Open;:=
DataModule2.Query11.Fields[0].AsInteger;
//указываем: признак формирования=1
и номер записи перемещения в OTH_Source
DataModule2.Query5.First;NOT
DataModule2.Query5.Eof do:=DataModule2.Query5.Fields[0].AsInteger;.Query8.Open;
DataModule2.Query7.Open;.Query8.Locate('Nzap',poisk,
[]);.Query8.Edit;.Query8.FieldByName('Pr_Form').AsVariant:='1';.Query8.FieldByName('N_zap_Move').AsInteger:=zap;.Query8.Post;.Query5.Next;;.Query8.Close;.Query5.Close;.Query5.Open;.Query7.Close;.Query7.Open;('OK');
//************************************************.Query10.Close;.Query10.Open;.Query10.First;.Query10.Locate('Nzap',zap,
[]);.Range['BQ2']:=DataModule2.Query10.FieldByName('N_Nakl').AsString; //Номер накладной
Excel.Range['M5']:='ОАО
"РАТЕП"'; //Организация
Excel.Range['AH9']:=DateToStr(DataModule2.Query10.FieldByName('D_form').AsDateTime); //Дата
составления.Range['BC9']:=Edit1.Text; //Структурное подразделение
отправителя.Range['CG9']:=DataModule2.Query10.FieldByName('Naim').AsString;
//Структурное подразделение получателя
Excel.Range['L11']:=Edit2.Text;
//Основание.Range['G12']:=DataModule2.Query10.FieldByName('Naim').AsString;
//Кому.Range['CH12']:=Edit3.Text;
//Через кого.Range['Y17']:=DataModule2.Query10.FieldByName('Naim_1').AsString;
//Наименование,сорт,размер,марка.Range['AU17']:=DataModule2.Query10.FieldByName('Kod').AsString;
//Код единицы измерения.Range['BB17']:=DataModule2.Query10.FieldByName('Naim_2').AsString;
//Наименование единицы измерения.Range['BW17']:=DataModule2.Query10.FieldByName('Sdano').AsString;
//Отпущено
(количество)
Excel.Range['Q28']:=Edit4.Text;
//Отпуск разрешил (должность).Range['AM28']:=Edit5.Text; //Отпуск разрешил
(расшифровка подписи).Range['J31']:=Edit6.Text; //Отпустил
(должность).Range['AD31']:=Edit7.Text; //Отпустил (расшифровка
подписи).Range['DA28']:=Edit8.Text; //Главный бухгалтер (расшифровка подписи)
Excel.Visible:=
True;.Close;
endShowMessage('Введите номер
накладной и выберите организацию');('Ошибка. Все несохраненные действия
отменены');
DataModule2.Database1.Rollback;;;.Database1.Commit;;TForm8.DBEdit3KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.DBEdit4KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.DBEdit8KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.DBEdit10KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.DBEdit11KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then key:=#0;
end;
procedure
TForm8.DBEdit12KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.DBEdit7KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm8.Edit11KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)) then key:=#0;
end;.
unit Unit9;,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Mask,
DBCtrls;= class(TForm): TLabel;: TLabel;: TLabel;: TComboBox;: TDBEdit;:
TButton;: TDBEdit;: TEdit;: TLabel;: TEdit;: TDBEdit;:
TButton;FormCreate(Sender: TObject);Button1Click(Sender:
TObject);DBEdit1Change(Sender: TObject);Button2Click(Sender:
TObject);Edit1KeyPress(Sender: TObject; var Key: Char);FormActivate(Sender:
TObject);ComboBox1KeyPress(Sender: TObject; var Key: Char);
{ Private
declarations }
{ Public
declarations };: TForm9;Unit2, Unit1;
{$R
*.DFM}TForm9.FormCreate(Sender: TObject);
//Подразделения.Clear;.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select
* from Password_OTH;');.Query4.Open;.Query4.First;NOT DataModule2.Query4.Eof
doDataModule2.Query4.Fields[1].AsString<>'0'
then.Items.Add(DataModule2.Query4.Fields[1].AsString);.Query4.Next;;.Query4.Close;.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select
* from
Spr_Ed_Izm;');.Query4.Open;.Text:=DataModule2.Query4.Lookup('Kod',DBEdit3.Text,'Naim');.Query4.Close;;TForm9.Button1Click(Sender:
TObject);.ShowModal;;TForm9.DBEdit1Change(Sender: TObject);DBEdit3.Text>''
then.Query4.Close;.Query4.SQL.Clear;.Query4.SQL.Add('Select * from
Spr_Ed_Izm;');.Query4.Open;.Text:=DataModule2.Query4.Lookup('Kod',DBEdit3.Text,'Naim');.Query4.Close;;;TForm9.Button2Click(Sender:
TObject);.Database1.StartTransaction;Edit1.text>'' then.Query9.Open;.Query9.Insert;.Query9.FieldByName('Podr').AsVariant:=ComboBox1.Text;.Query9.FieldByName('Nzap_Spr').AsVariant:=DBEdit2.Text;.Query9.FieldByName('kol').AsVariant:=Edit1.Text;.Query9.FieldByName('Pr_form').AsVariant:=0;.Query9.Post;.Query9.Close;('Добавлено');.Close;else
ShowMessage('Введите количество!');.Database1.Rollback;;;.Database1.Commit;.Query5.Close;
DataModule2.Query5.Open;;TForm9.Edit1KeyPress(Sender: TObject; var Key:
Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm9.FormActivate(Sender:
TObject);.Text:='';;TForm9.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin:=#0;;.
unit
Unit10;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,,
xlReport,, Excel97, ComObj, Mask, DBCtrls, ComCtrls, Grids, DBGridEh,,
xlEngine, GridsEh;//, GridsEh, DBGridEh, xlReportG2, xlcClasses, xlEngine=
class(TForm): TLabel;: TLabel;: TEdit;: TLabel;: TButton;: TDBGridEh;:
TxlReport;: TExcelApplication;: TButton;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TButton;: TLabel;: TLabel;: TDateTimePicker;: TButton;: TButton;:
TEdit;: TButton;: TEdit;Edit1Change(Sender: TObject);Button1Click(Sender:
TObject);Edit1KeyPress(Sender: TObject; var Key: Char);FormActivate(Sender:
TObject);Edit2KeyPress(Sender: TObject; var Key: Char);Edit3KeyPress(Sender:
TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key:
Char);Edit5KeyPress(Sender: TObject; var Key: Char);Edit6KeyPress(Sender:
TObject; var Key: Char);Edit7KeyPress(Sender: TObject; var Key:
Char);Edit8KeyPress(Sender: TObject; var Key: Char);Button4Click(Sender:
TObject);Button3Click(Sender: TObject);Button5Click(Sender:
TObject);Button2Click(Sender: TObject);Button6Click(Sender:
TObject);FormClose(Sender: TObject; var Action: TCloseAction);
{ Private
declarations }
{ Public
declarations };: TForm10;Unit2, Unit8;
{$R
*.DFM}TForm10.Edit1Change(Sender: TObject);buf:
string;:=QuotedStr(edit1.text);edit1.Text>''
then.Query10.Close;.Query10.SQL.Clear;.Query10.SQL.Add('Select OTH_Move.Nzap,
Poluch_dr_podr, Ispolz_predpr, peredano_nas, Sdano, D_form, N_Nakl, Vyvez1,
Vyvez2, Oplach_pererab, ');.Query10.SQL.Add('Poluch_pererab, OTH_Spr_Org.Naim,
OTH_Spr_Org.Licence, OTH_Spr.Kod, OTH_Spr.Naim, OTH_Spr.TP, Spr_Ed_Izm.Naim
FROM OTH_Move LEFT JOIN OTH_Spr_Org ON OTH_Move.Nzap_Org=OTH_Spr_Org.Nzap
');.Query10.SQL.Add('LEFT JOIN OTH_Spr ON OTH_Spr.Nzap=Nzap_Spr LEFT JOIN
Spr_Ed_Izm ON Spr_Ed_Izm.Kod=Kod_ed WHERE
year(D_form)='+buf+';');.Query10.Open;.Query10.Close;.Query10.SQL.Clear;.Query10.SQL.Add('Select
OTH_Move.Nzap, Poluch_dr_podr, Ispolz_predpr, peredano_nas, Sdano, D_form,
N_Nakl, Vyvez1, Vyvez2, Oplach_pererab, ');.Query10.SQL.Add('Poluch_pererab,
OTH_Spr_Org.Naim, OTH_Spr_Org.Licence, OTH_Spr.Kod, OTH_Spr.Naim, OTH_Spr.TP,
Spr_Ed_Izm.Naim FROM OTH_Move LEFT JOIN OTH_Spr_Org ON
OTH_Move.Nzap_Org=OTH_Spr_Org.Nzap ');.Query10.SQL.Add('LEFT JOIN OTH_Spr ON
OTH_Spr.Nzap=Nzap_Spr LEFT JOIN Spr_Ed_Izm ON
Spr_Ed_Izm.Kod=Kod_ed;');.Query10.Open;;;TForm10.Button1Click(Sender:
TObject);poisk: integer;:
Variant;:variant;:=CreateOleObject('Excel.Application');.Workbooks.Open['C:\РАТЕП\Журнал за год.xls'];
except('Шаблон журнала не найден');
exit;;.Database1.StartTransaction;.Query10.First;:=12;NOT
DataModule2.Query10.Eof do.ActiveSheet.Cells[i, 1]:=i-11; //номер по порядку.ActiveSheet.Cells[i,
2]:=DataModule2.Query10.FieldbyName('D_form').AsString; //Дата.ActiveSheet.Cells[i,
3]:=DataModule2.Query10.FieldbyName('Naim_1').AsString; //Наименование Отхода.ActiveSheet.Cells[i,
4]:=DataModule2.Query10.FieldbyName('TP').AsString; //Технологич процесс.ActiveSheet.Cells[i,
5]:=DataModule2.Query10.FieldbyName('Kod').AsString; //Код отхода.ActiveSheet.Cells[i,
6]:=DataModule2.Query10.FieldbyName('Sdano').AsString+' '+DataModule2.Query10.FieldbyName('Naim_2').AsString;
//Кол-во.ActiveSheet.Cells[i,
7]:=DataModule2.Query10.FieldbyName('Poluch_dr_podr').AsString; //Получено другим подразделением.ActiveSheet.Cells[i,
8]:=DataModule2.Query10.FieldbyName('Ispolz_predpr').AsString; //Использовано предприятием.ActiveSheet.Cells[i,
9]:=DataModule2.Query10.FieldbyName('Peredano_nas').AsString; // Передано населению.ActiveSheet.Cells[i,
10]:=DataModule2.Query10.FieldbyName('Naim').AsString; // Наименование предприятия.ActiveSheet.Cells[i,
11]:=DataModule2.Query10.FieldbyName('Licence').AsString; // Лицензия предпрятия.ActiveSheet.Cells[i,
12]:=DataModule2.Query10.FieldbyName('N_nakl').AsString; // Номер накладной.ActiveSheet.Cells[i,
13]:=DataModule2.Query10.FieldbyName('Sdano').AsString+' '+DataModule2.Query10.FieldbyName('Naim_2').AsString;;
// Кол-во.ActiveSheet.Cells[i,
14]:=DataModule2.Query10.FieldbyName('Vyvez1').AsString; // м3.ActiveSheet.Cells[i,
15]:=DataModule2.Query10.FieldbyName('Vyvez2').AsString; // т.ActiveSheet.Cells[i,
16]:=DataModule2.Query10.FieldbyName('Oplach_pererab').AsString; // Оплачено за переработку.ActiveSheet.Cells[i,
17]:=DataModule2.Query10.FieldbyName('Poluch_pererab').AsString; // Получено за переработку.Query10.Next;:=i+1;;.Range['C2']:=Edit1.Text+'
год';.Visible:=
True;('Ошибка.
Все
несохраненные действия отменены');.Database1.Rollback;
exit;;.Database1.Commit;;TForm10.Edit1KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)) then
key:=#0;;TForm10.FormActivate(Sender:
TObject);.Visible:=true;.Height:=565;.Visible:=true;.Visible:=false;.Enabled:=true;.Visible:=true;
//Edit1.Text:=
DecodeDate(Now(), year));;TForm10.Edit2KeyPress(Sender: TObject; var Key:
Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm10.Edit3KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm10.Edit4KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then key:=#0;;TForm10.Edit5KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm10.Edit6KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then key:=#0;;TForm10.Edit7KeyPress(Sender:
TObject; var Key: Char);not ((key in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm10.Edit8KeyPress(Sender: TObject; var Key: Char);not ((key
in['0'..'9'])or (key =#8)or (key =#44)) then
key:=#0;;TForm10.Button4Click(Sender: TObject);poisk: integer;DataModule2.Query10.Fields[0].AsString=''
then('Выберите запись!');;;MessageDlg('Удалить накладную?',
mtInformation, [mbYes,mbNo],
0)=mrYes:=DataModule2.Query10.Fields[0].AsInteger;.Query8.Open;.Query8.Filtered:=false;.Query8.First;NOT
DataModule2.Query8.Eof
doDataModule2.Query8.FieldByName('N_zap_Move').AsInteger=poisk
then.Query8.Edit;.Query8.FieldByName('Pr_Form').AsBoolean:=false;.Query8.FieldByName('N_zap_Move').AsVariant:=NULL;.Query8.Post;;.Query8.Next;;.Query8.Close;.Query8.Open;.Query7.Locate('Nzap',poisk,[]);.Query7.Delete;.Query10.Close;.Query10.Open;.Query5.Close;.Query5.Open;.Visible:=true;.Visible:=false;.Height:=565;.Enabled:=true;;;TForm10.Button3Click(Sender:
TObject);zapis: integer;: Variant; :=CreateOleObject('Excel.Application');.Workbooks.Open['C:\РАТЕП\Накладная.xls'];
except('Шаблон накладной не
найден');
exit;;:=DataModule2.Query10.FieldbyName('Nzap').AsInteger;.Query10.Close;.Query10.Open;.Query10.Locate('Nzap',zapis,
[]);.Range['BQ2']:=DataModule2.Query10.FieldByName('N_Nakl').AsString; //Номер накладной
Excel.Range['M5']:='ОАО
"РАТЕП"'; //Организация
Excel.Range['AH9']:=DateToStr(DataModule2.Query10.FieldByName('D_form').AsDateTime); //Дата
составления
//Excel.Range['BC9']:=Edit1.Text;
//Структурное подразделение отправителя.Range['CG9']:=DataModule2.Query10.FieldByName('Naim').AsString;
//Структурное подразделение получателя
//Excel.Range['L11']:=Edit2.Text;
//Основание.Range['G12']:=DataModule2.Query10.FieldByName('Naim').AsString;
//Кому
//Excel.Range['CH12']:=Edit3.Text;
//Через кого.Range['Y17']:=DataModule2.Query10.FieldByName('Naim_1').AsString;
//Наименование,сорт,размер,марка.Range['AU17']:=DataModule2.Query10.FieldByName('Kod').AsString;
//Код единицы измерения.Range['BB17']:=DataModule2.Query10.FieldByName('Naim_2').AsString;
//Наименование единицы измерения.Range['BW17']:=DataModule2.Query10.FieldByName('Sdano').AsString;
//Отпущено
(количество)
// Excel.Range['Q28']:=Edit4.Text;
//Отпуск разрешил (должность)
// Excel.Range['AM28']:=Edit5.Text;
//Отпуск разрешил (расшифровка подписи)
// Excel.Range['J31']:=Edit6.Text;
//Отпустил (должность)
// Excel.Range['AD31']:=Edit7.Text;
//Отпустил (расшифровка подписи)
// Excel.Range['DA28']:=Edit8.Text;
//Главный бухгалтер (расшифровка подписи)
Excel.Visible:=
True;;TForm10.Button5Click(Sender:
TObject);.Query7.FieldbyName('N_Nakl').AsString:=Edit9.Text;.Query7.FieldbyName('Nzap').AsString:=Edit10.Text;.Query7.FieldbyName('D_form').AsDateTime:=DateTimePicker1.Date;.Query7.FieldbyName('Poluch_dr_podr').AsString:=Edit2.Text;.Query7.FieldbyName('Ispolz_predpr').AsString:=Edit3.Text;.Query7.FieldbyName('peredano_nas').AsString:=Edit4.Text;.Query7.FieldbyName('Vyvez1').AsString:=Edit5.Text;.Query7.FieldbyName('Vyvez2').AsString:=Edit6.Text;.Query7.FieldbyName('Oplach_pererab').AsString:=Edit7.Text;.Query7.FieldbyName('Poluch_pererab').AsString:=Edit8.Text;.Query7.Post;.Query7.Active:=false;.Query7.Active:=true;.Query10.Close;.Query10.Open;.Visible:=true;.Visible:=false;.Height:=565;.Enabled:=true;
//
DBGridEh1.Visible:=true;.Visible:=true;.Visible:=true;;TForm10.Button2Click(Sender:
TObject);find:integer;DataModule2.Query10.Fields[0].AsString='' then('Выберите запись!');;;.Visible:=false;.Visible:=true;.Height:=795;.Enabled:=false;.Text:='';
//
DBGridEh1.Visible:=false;.Visible:=false;.Visible:=false;:=DataModule2.Query10.Fieldbyname('Nzap').AsInteger;.Query7.Open;.Query7.Locate('Nzap',find,[]);.Query7.Edit;.Text:=DataModule2.Query7.FieldbyName('N_Nakl').AsString;.Text:=DataModule2.Query7.FieldbyName('Nzap').AsString;.Date:=DataModule2.Query7.FieldbyName('D_form').AsDateTime;.Text:=DataModule2.Query7.FieldbyName('Poluch_dr_podr').AsString;.Text:=DataModule2.Query7.FieldbyName('Ispolz_predpr').AsString;.Text:=DataModule2.Query7.FieldbyName('peredano_nas').AsString;.Text:=DataModule2.Query7.FieldbyName('Vyvez1').AsString;.Text:=DataModule2.Query7.FieldbyName('Vyvez2').AsString;.Text:=DataModule2.Query7.FieldbyName('Oplach_pererab').AsString;.Text:=DataModule2.Query7.FieldbyName('Poluch_pererab').AsString;
end;
procedure
TForm10.Button6Click(Sender:
TObject);.Query10.Cancel;.Query10.Close;.Query10.Open;.Visible:=true;.Visible:=false;.Height:=565;.Enabled:=true;
//DBGridEh1.Visible:=true;.Visible:=true;.Visible:=true;;TForm10.FormClose(Sender:
TObject; var Action: TCloseAction);.Query10.Close;.Query10.Open;
DataModule2.Query7.Cancel;;.
unit
Unit11;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,;=
class(TForm): TLabel;: TLabel;: TLabel;
Label4:
TLabel;
Label5:
TLabel;: TLabel;
{ Private
declarations }
{ Public
declarations };: TForm11;
implementation
{$R
*.DFM}.ODBC_Update;
// добавить в проект
unit ODBC_Update,
// добавить в головную программу
проекта перед созданием модуля данных,
// например
- if not ODBC_Info_Update('LXR_PRO','LXR8000','PRO') then Halt(1);
// где параметры - Имя ODBC Алиаса,
Имя SQL-Сервера, Имя Базы Данных
interfaceWindows,
Dialogs, SysUtils, Controls, Registry, FileUtil;Reg:
TRegistry;GetCurrentUserName:string; // получение имени текущего пользователяODBC_Info_Update(ODBC_DSN,SqlServer,DataBase:string):boolean;
// изменение информации в
ODBC-алиасеGetCurrentUserName:string;
// получение имени текущего пользователяLenUserName
= 25;UNPTR: PChar;: DWord;: String[LenUserName];:=@UName; UNCount:=LenUserName;(@UName,UNCount);:=UNPTR;:=UName;;ODBC_Info_Update(ODBC_DSN,SqlServer,DataBase:string):boolean;
// изменение информации в
ODBC-алиасе
// Параметры:
- ODBC_DSN - имя
DSN
// -
SqlServer - имя
SQL-сервера
// - DataBase - имя базы данных на
SQL-сервере
var Err: integer;
SQLDriverPath: string; // путь к SQL-драйверу
UserName: String; // текущий
пользователь
begin
try
// если заданы параметры в командной
строке, то они перекроют параметры при вызове функцииParamCount = 3begin //
считаем, что первый параметр - ODBC DSN, второй - СЕРВЕР, третий - ИМЯ БАЗЫ
ODBC_DSN:=AnsiUpperCase(ParamStr(1));:=AnsiUpperCase(ParamStr(2));:=AnsiUpperCase(ParamStr(3));;:=0;:=TRegistry.Create;
{ Системный
ODBC DSN не ТРОГАЕМ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// поработаем с системным DSN, если
есть.RootKey:=HKEY_LOCAL_MACHINE; // ключ на открытие для
чтенияReg.OpenKey('\Software\ODBC\ODBC.INI\'+Trim(ODBC_DSN),False) // есть ли
ключ?begin // ключ есть, может надо сменить СЕРВЕР и БАЗУ ?
if
not((Trim(AnsiUpperCase(Reg.ReadString('Server')))=Trim(AnsiUpperCase(SqlServer)))and
(Trim(AnsiUpperCase(Reg.ReadString('Database')))=Trim(AnsiUpperCase(DataBase))))begin
Reg.WriteString('Database',Trim(AnsiUpperCase(DataBase)));.WriteString('Server',Trim(AnsiUpperCase(SqlServer)));('Системный
ODBC DSN перенастроен
!');;begin Err:=Err+1; // счетчик ошибок;.CloseKey;
// закроем предыдущий ключ
}
// поработаем с пользовательским
DSN, если есть.RootKey:=HKEY_CURRENT_USER; // ключ на открытие для чтения
if Reg.OpenKey('\Software\ODBC\ODBC.INI\'+Trim(AnsiUpperCase(ODBC_DSN)),False) // есть ли
ключ?begin // ключ есть, может надо сменить СЕРВЕР и БАЗУ ?
if
not((Trim(AnsiUpperCase(Reg.ReadString('Server')))=Trim(AnsiUpperCase(SqlServer)))and
(Trim(AnsiUpperCase(Reg.ReadString('Database')))=Trim(AnsiUpperCase(DataBase))))begin
Reg.WriteString('Database',Trim(AnsiUpperCase(DataBase)));.WriteString('Server',Trim(AnsiUpperCase(SqlServer)));
ShowMessage('Пользовательский ODBC
DSN успешно перенастроен !');;begin // нет ключа, создадим пользовательский
алиас:=GetCurrentUserName; // определим текущего пользователя
{
// сначала запомним путь к
SQL-драйверу по стандартному алиасу MQIS.CloseKey; // закроем предыдущий
ключReg.OpenKey('\Software\ODBC\ODBC.INI\MQIS',False)begin // есть ключ,
запомним путь
SQLDriverPath:=Reg.ReadString('Driver');begin
// ошибка
Err:=Err+1;;
}
// если все нормально, создадим
новый пользовательский алиас
if Err=0
then begin
Reg.CloseKey; // закроем
предыдущий ключ
if
Reg.OpenKey('\Software\ODBC\ODBC.INI\'+Trim(AnsiUpperCase(ODBC_DSN)),True)
then begin // пропишем параметры в
пользовательский алиас
SQLDriverPath:=Trim(GetSystemDir)+'\SQLSRV32.dll';.WriteString('Database',Trim(AnsiUpperCase(DataBase)));.WriteString('Driver',SQLDriverPath);.WriteString('LastUser',UserName);.WriteString('Server',Trim(AnsiUpperCase(SqlServer)));.WriteString('Trusted_Connection','Yes');
// создадим запись алиаса в списке
алиасов.CloseKey; // закроем предыдущий
ключReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',True)
then begin
Reg.WriteString(Trim(AnsiUpperCase(ODBC_DSN)),'SQL Server');
ShowMessage('Пользовательский ODBC
DSN успешно добавлен !');
endbegin // ошибка
Err:=Err+1;
endbegin // ошибка:=Err+1;;;;Err<>0
then ('Клиентский
ODBC DSN не
перенастроен! ');.CloseKey; Reg.Free; // закончим работу с реестром
end;_Info_Update:=True;
// все хорошо
end;.
.5 Тестовые
данные
Тестовые данные программы
представлены в таблице 17.
Таблица 17 - Тестовые данные
Вводимые
данные
|
Реакция
программы
|
Неверный
ввод пароля
|
Ошибка:
неправильный пароль или подразделение
|
Верный
ввод пароля
|
Вход
в программу
|
Пустое
ключевое поле при добавлении новой записи в БД или ее изменении
|
Ошибка:
данные не сохранены. Проверьте, все ли поля заполнены и повторите попытку
|
Верный
формат данных при добавлении или изменении записи БД
|
Сохранение
записи (изменения данных записи) в БД
|
Удаление
записи
|
Просьба
подтвердить выбранное действие удаления
|
Не
выбран вид отхода при создании накладной
|
Ошибка:
необходимо сначала выбрать вид отхода
|
Выбран
вид отхода при создании накладной
|
Создание
накладной. Вывод накладной в шаблон MS
Excel
|
Не
введено количество, на которое необходимо изменить количество введенного
отхода
|
Ошибка:
сначала введите количество
|
Введено
количество, на которое необходимо изменить количество введенного отхода
|
Изменение
количества отхода
|
Не
введен номер накладной при создании накладной
|
Ошибка:
введите номер накладной
|
Введен
номер накладной при создании накладной
|
Создание
накладной
|
Не
введено количество образовавшегося отхода при вводе вновь образовавшегося отхода
|
Ошибка:
введите количество
|
Введено
количество образовавшегося отхода при вводе вновь образовавшегося отхода
|
Сохранение
записи в БД
|
Удаление
пустой записи
|
Ошибка:
выберите запись
|
Выбрана
пустая запись при попытке изменить количество образовавшегося отхода
|
Ошибка:
выберите запись
|
|
|
|
.6 Результаты работы программы
Результаты работы программы представлены на
рисунках 14-30.
Рис.14 Регистрация подразделения при входе в
программу
Рис.15 Главное меню программы
Рис.16 Ввод
образовавшегося отхода
Рис.17 Выбор
данных для накладной
программа сетевой учет
delphi
Рис.18 Заполнение
данных накладной
Рис.19 Электронный
вид накладной на отпуск материалов на сторону
Рис.20 Журнал учета образования и движения отходов
Рис.21 Ведение журнала учета образования и
движения отходов
Рис.22 Электронный вид журнала учета образования
и движения отходов
Рис.23 Справочник отходов
Рис.24 Ведение справочника отходов
Рис.25 Справочник организаций
Рис.26 Ведение справочника организаций
Рис.27 Справочник единиц измерения
Рис.28 Ведение справочника единиц измерения
Рис.29 Справка о программе
Рис.30 Справка
помощь
.1 Руководство системного программиста
Программа «Автоматизация ведения учета
образующихся отходов на предприятии» предназначена для систематизации хранения
данных о образовавшихся отходах предприятия, выписки накладных на отпуск
материалов на сторону а также составления журнала накладных за год.
Программа выполняет следующие функции:
добавление, изменение данных;
удаление данных;
хранение данных в БД;
вывод заполненного бланка накладной на отпуск
материалов на сторону;
вывод заполненного журнала выданных накладных за
год;
печать накладной и журнала;
Технические и программные средства, необходимые
для нормального функционирования программы следующие:
процессор Intel;
принтер;
оперативная память 128 Кб;
свободное пространство на жестком диске 5 Мб;
операционная система Windows
XP/Vista;
- пакет
Microsoft Office;
SQL-Server;
Для установки программы необходимо вставить CD-диск
в дисковод. Скопировать папку «РАТЕП» на диск С:\\, подключить базу данных PRO
к SQL Server
(файлы PRO_Data.mdf,
PRO_Log.ldf
в папке «РАТЕП») и запустить программу с помощью файла OTH.exe.
В структуру приложения входят:
Файл приложения;
БД;
шаблон накладной;
шаблон журнала.
При запуске программы может появиться сообщение,
представленное на рисунке 31.
Рис.31 Сообщение о создании псевдонима.
В случае появления других сообщений необходимо
проверить, подключена ли база к серверу. Также ошибку возможно будет устранить
созданием псевдонима вручную. Для этого необходимо зайти Пуск - Панель
управления - BDE
Administrator. Выбрать пункт Object
- ODBC Administrator
и нажать кнопку «Добавить». Создать псевдоним с именем «XumePka»,
указав путь к базе PRO.
3.2 Руководство программиста
Программа «Автоматизация ведения учета
образующихся отходов на предприятии» предназначена для систематизации хранения
данных об образовавшихся отходах предприятия, выписки накладных на отпуск
материалов на сторону а также составления журнала накладных за год.
Для организации работы программы необходимы
следующие компоненты ПК:
системный блок;
- монитор;
- клавиатура;
мышь;
-необходимо около 5 Мб свободного места на диске
Требования к программному обеспечению:
операционная система Windows
XP/Vista;
пакет Microsoft Office.
Структура файла проекта представлена на рисунке
32.
Рис.32 Структура файла проекта
Описание модулей программы представлено в
таблице 18.
Таблица 18 - Описание модулей программы
Форма
|
Процедура
|
Описание
|
Form1
|
FormCreate
|
Загрузка
данных на форму
|
|
Button4Click
|
Сохранение
записи
|
|
Button1Click
|
Добавление
записи
|
|
Button2Click
|
Отмена
введенных данных
|
|
ComboBox1Change
|
Изменение
единицы измерения
|
|
Edit1Change
|
Поиск
данных
|
|
RadioGroup1Click
|
Изменение
вида просмотра данных
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
FormClose
|
Закрытие
формы. Отмена несохраненных изменений
|
|
DBEdit2KeyPress
|
Ввод
только цифр
|
|
ComboBox1KeyPress
|
Запрет
на ввод
|
|
Button3Click
|
Изменение
записи
|
|
Edit2Change
|
Изменение
кода единицы измерения
|
Form3
|
FormCreate
|
Загрузка
данных на форму
|
|
Button1Click
|
Добавление
записи
|
|
Button3Click
|
Отмена
введенных данных
|
|
Button4Click
|
Сохранение
записи
|
|
Edit1Change
|
Поиск
данных
|
|
RadioGroup1Click
|
Изменение
вида просмотра данных
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
Button2Click
|
Изменение
записи
|
|
DBEdit1KeyPress
|
Ввод
только цифр
|
Form4
|
N2Click
|
Справочник
отходов
|
|
N3Click
|
Справочник
организаций
|
|
N4Click
|
Справочник
единиц измерения
|
|
N7Click
|
Выход
|
|
N9Click
|
Создание
накладной
|
|
N8Click
|
Ввод
нового отхода
|
|
N6Click
|
Журнал
|
|
N12Click
|
Справка
помощь
|
|
N11Click
|
Справка
о программе
|
Form5
|
Button1Click
|
Добавление
записи
|
|
Button2Click
|
Отмена
введенных данных
|
|
Button4Click
|
Сохранение
записи
|
|
FormCreate
|
Загрузка
данных на форму
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
FormClose
|
Закрытие
формы. Отмена несохраненных изменений
|
|
DBEdit1KeyPress
|
Ввод
только цифр
|
Form6
|
FormCreate
|
Загрузка
данных на форму
|
|
ComboBox2Change
|
Изменение
вида отхода
|
|
OTHODY
|
Отбор
данных по выбранным критериям
|
|
ComboBox1Change
|
Изменение
подразделения
|
|
Button5Click
|
Создание
накладной
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
Edit2KeyPress
|
Ввод
только цифр
|
|
Button2Click
|
Изменение
количество отхода
|
|
Button1Click
|
Удаление
выбранной записи
|
Form 7
|
FormCreate
|
Загрузка
данных на форму
|
|
Button1Click
|
Подтверждение
пароля
|
Form 8
|
Button1Click
|
Открытие
справочника организаций
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
Button2Click
|
Создание
накладной
|
|
DBEdit3KeyPress
|
Ввод
только цифр
|
|
DBEdit4KeyPress
|
Ввод
только цифр
|
|
DBEdit8KeyPress
|
Ввод
только цифр
|
|
DBEdit10KeyPress
|
Ввод
только цифр
|
|
DBEdit11KeyPress
|
Ввод
только цифр
|
|
DBEdit12KeyPress
|
Ввод
только цифр
|
|
DBEdit7KeyPress
|
Ввод
только цифр
|
|
Edit11KeyPress
|
Ввод
только цифр
|
Form 9
|
FormCreate
|
Загрузка
данных на форму
|
|
Button1Click
|
Открытие
справочника отходов
|
|
DBEdit1Change
|
Изменение
вида отхода
|
|
Button2Click
|
Ввод
отхода
|
|
Edit1KeyPress
|
Ввод
только цифр
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
ComboBox1KeyPress
|
Запрет
ввода
|
Form 10
|
Edit1Change
|
Выбор
данных по введенному году
|
|
Button1Click
|
Вывод
журнала
|
|
Edit1KeyPress
|
Ввод
только цифр
|
|
FormActivate
|
Установление
видимых и невидимых элементов
|
|
Edit2KeyPress
|
Ввод
только цифр
|
|
Edit3KeyPress
|
Ввод
только цифр
|
|
Edit4KeyPress
|
Ввод
только цифр
|
|
Edit5KeyPress
|
Ввод
только цифр
|
|
Edit6KeyPress
|
Ввод
только цифр
|
|
Edit7KeyPress
|
Ввод
только цифр
|
|
Edit8KeyPress
|
Ввод
только цифр
|
|
Button4Click
|
Удаление
записи
|
|
Button3Click
|
Просмотр
накладной
|
|
Button5Click
|
Сохранение
записи
|
|
Button2Click
|
Изменение
записи
|
|
Button6Click
|
Отмена
введенных данных
|
|
FormClose
|
Отмена
несохраненных данных
|
.3 Руководство оператора
.3.1
Запуск программы.
Для запуска программы необходимо дважды щелкнуть
левой кнопкой мыши по файлу OTH.exe.
Для входа в программу необходимо зарегистрировать пользователя в открывшемся
окне. Необходимо выбрать подразделения и ввести пароль. Если вы все ввели
правильно, то откроется главное меню программы, в противном случае программа
выдаст соответствующую ошибку.
3.3.2 Главное меню
Главное меню содержит следующие пункты:
ввод нового отхода
создание накладной
журнал
справочники отходов, организаций и единиц
измерения
справка о программе и помощь
выход
Рассмотрим каждый пункт меню.
.3.2.1 Ввод нового отхода
Для ввода вновь образовавшегося отхода
необходимо выбрать вид отхода из справочника отходов, нажав на соответствующую
кнопку (выделить необходимую запись и закрыть справочник), и ввести его
количество (также необходимо выбрать подразделение если вход осуществлялся в
качестве администратора).
После заполнения всех полей необходимо нажать
кнопку «Ввод» и запись добавится в БД.
.3.2.2 Создание накладной
По мере накопления отходов необходимо создавать
накладные. Для создания накладной необходимо выбрать определенные записи.
Выборка записей осуществляется с помощью раскрывающегося списка «Вид отхода».
Также просмотреть записи можно и с помощью списка подразделений.
Выбрав вид отхода, на который необходимо создать
накладную, вы можете увидеть общую сумму образовавшегося отхода. На форме также
имеются кнопки удаления отхода и изменения количества.
При нажатии на кнопку «В накладную» откроется
форма заполнения данных для будущей накладной. Необходимо ввести номер
накладной, выбрать организацию (кому будет выписана накладная) из справочника
организаций (выделить необходимую запись и закрыть справочник), и заполнить
необходимые оставшиеся поля. После заполнения необходимо нажать кнопку «Создать
накладную», после чего заполненный шаблон накладной на отпуск материалов на
сторону, который можно распечатать, появится на экране
.3.2.3 Журнал
Каждый год необходимо составлять журнал учета
образования и движения отходов. Для вывода электронного журнала необходимо
ввести год, за который необходимо создать журнал (либо оставить поле пустым для
вывода всех введенных накладных) и нажать кнопку «Вывод журнала», после чего
заполненный шаблон журнала учета образования и движения отходов, который можно
распечатать, появится на экране.
Также с данной формы можно просмотреть выбранную
накладную, нажав на соответствующую кнопку, также изменить или удалить ее.
.3.2.4 Справочники
Для хранения данных об организациях, единицах
измерения и видах отходов существуют справочники. Справочники имеют три режима
просмотра: все; все, кроме удаленных; только удаленные, т.к. данные в базе не
удаляются, а лишь помечаются как неиспользуемые (удаленные). Также можно
изменить запись (и восстановить из удаленных) или воспользоваться поиском,
введя требуемые данные в соответствующее поле.
.3.2.5 Справка
Справка поможет вам разобраться с работой
программы и посмотреть данные о создателе.
.3.2.6 Выход
Выход из программы осуществляется путем нажатия
на кнопку «Выход» главного меню. При работе с программой могут появляться
сообщения, представленные на рисунках 33-43.
Рис. 33
Не введено количество при изменении
Рис. 34
Не введен номер накладной при ее создании
Рис.35 Не выбрана запись
Рис.36 Добавлен новый вид отхода
Рис.37 Изменено количество отхода
Рис.38 Успешное создание накладной
Рис.39 Попытка изменения пустой записи
Рис.40 Попытка удаления пустой записи
Рис.41 Подтверждение удаления записи
Рис.42 Подтверждение удаления накладной
Рис.43 Не найден шаблон накладной или журнала
4. ЭКОНОМИЧЕСКИЙ РАЗДЕЛ
.1 Расчет полной себестоимости программы
.1.1 Исходные данные для расчетов стоимости
материалов
Данные для расчетов стоимости материалов
представлены в таблице 19.
Таблица 19 - Данные для расчета стоимости
материалов
Наименование
товара
|
Единица
измерения
|
Количество
|
Цена
за единицу измерения, руб
|
Диск
CD-R
|
шт.
|
1,00
|
9,00
|
Данные для расчета заработной платы представлены
в таблице 20.
Таблица 20 - Данные для расчета заработной платы
Виды
работ
|
Оклад
с премией, руб
|
Стоимость
1 часа работы, руб
|
Время
работы, час
|
Разработка
программы
|
8500,00
|
51,20
|
95,00
|
Отладка
программы
|
6250,00
|
37,65
|
75,00
|
Данные для расчета расходов на содержание
оборудования и нематериальных активов представлены в таблице 21.
Таблица 21 - Данные для расчета расходов на
содержание оборудования и нематериальных активов
Наименование
оборудования
|
Стоимость,
руб
|
Срок
службы, час
|
Стоимость
эксплуатации оборудования за 1 час, руб
|
Время
работы, час
|
Системный
блок типа IBM
PC
|
13000,00
|
5280,00
|
2,50
|
170,00
|
Монитор
FLATRON
|
4500,00
|
5280,00
|
0,90
|
170,00
|
Операционная
система Windows XP
|
3700,00
|
5280,00
|
0,70
|
170,00
|
Система
программирования Delphi 5
|
8000,00
|
5280,00
|
1,50
|
170,00
|
MS Office
|
2900,00
|
5280,00
|
0,60
|
5,00
|
Данные для расчета расходов электроэнергии
представлены в таблицу 22.
Таблица 22 - Данные для расчета расхода
электроэнергии
Наименование
оборудования
|
Мощность,
кВт
|
Время
работы, час
|
Системный
блок типа IBM
PC
|
0,250
|
170,00
|
Монитор
FLATRON
|
0,085
|
170,00
|
Транспортно-заготовительные расходы на материалы
5%
Отчисления на социальные нужды 26,5%
Дополнительная заработная плата 12%
Накладные расходы 120%
Стоимость 1 кВт*ч электроэнергии 2,76 руб.
4.1.2 Расчет полной себестоимости программы
Расчет полной себестоимости производится по
формуле:
где ПС - полная (коммерческая) себестоимость,
руб;
СМ - стоимость материалов, руб;
ЗПо - зарплата основная программиста, руб;
ЗПд - зарплата дополнительная программиста, руб;
ОС - отчисления на социальные нужды, руб;
РО - расходы на содержание и эксплуатацию
технологического оборудования и нематериальных активов, руб;
Э - стоимость потребляемой электроэнергии, руб;
НР - накладные расходы, руб.
Расчет стоимости материалов представлены в
таблице 23.
Таблица 23 -Расчет стоимости материалов
Наименование
товара
|
Единица
измерения
|
Количество
|
Цена
за единицу измерения, руб.
|
Стоимость,
руб
|
Диск
CD-R
|
шт.
|
1,00
|
9,00
|
9,00
|
Стоимость материалов рассчитывается по формуле:
, (3)
где СМ - стоимость материалов, руб;
mi - норма
расхода i-го
материала на единицу изделия;
Цi - цена
единицы i-го
материала, руб;
%ТЗРм -
транспортно-заготовительные расходы на материалы.
СМ=9,45 руб.
Расчет заработной платы в таблице
24.
Таблица 24 - Расчет заработной платы
Виды
работ
|
Оклад,
руб
|
Стоимость
1 часа работы, руб
|
Время
работы, час
|
Заработная
плата по видам работ, руб
|
Разработка
программы
|
8500,00
|
51,20
|
95,00
|
4864,00
|
Отладка
программы
|
6250,00
|
37,65
|
75,00
|
2823,75
|
Итого
|
7687,75
|
Заработная плата основная ЗПо = 7687,75 руб.
Заработная плата дополнительная рассчитывается
по формуле:
, (4)
где ЗПд - заработная
плата дополнительная, руб;
ЗПо - заработная плата
основная, руб;
%ЗПд - процент
дополнительной зарплаты.
ЗПд=922,53 руб.
Отчисления на социальные нужды
рассчитываются по формуле:
, (5)
где ОС - отчисления на социальные
нужды, руб;
ЗПо - зарплата основная,
руб;
ЗПд - зарплата
дополнительная, руб;
%ОС - процент отчислений на
социальные фонды.
ОС=2281,72 руб.
Расчет расхода на содержание оборудования и
нематериальных активов представлен в таблице 25.
Таблица 25 - Расчет расхода на содержание
оборудования и нематериальных активов
Наименование
оборудования
|
Стоимость,
руб
|
Срок
службы, час
|
Стоимость
эксплуатации оборудования за 1 час, руб
|
Время
работы, час
|
Износ
за время работы, руб
|
Системный
блок типа IBM
PC
|
13000,00
|
5280,00
|
2,50
|
170,00
|
425,00
|
Монитор
FLATRON
|
4500,00
|
5280,00
|
0,90
|
170,00
|
153,00
|
Операционная
система Windows
XP
|
3700,00
|
5280,00
|
0,70
|
170,00
|
119,00
|
Система
программ-мирования Delphi
5
|
8000,00
|
5280,00
|
1,50
|
170,00
|
255,00
|
MS Office
|
2900,00
|
5280,00
|
0,60
|
5,00
|
3,00
|
Итого
|
955,00
|
Расходы на содержание и эксплуатацию
оборудования и нематериальных активов РО=955,00 руб.
Расчет расходов на электроэнергию представлен в
таблице 26.
Таблица 26 - Расчет расходов на электроэнергию
Наименование
оборудования
|
Мощность,
кВт
|
Время
работы, час
|
Потребленная
мощность, кВт*ч
|
Системный
блок типа IBM
PC
|
0,250
|
170,00
|
42,50
|
Монитор
FLATRON
|
0,085
|
170,00
|
14,45
|
Итого
|
56,95
|
Стоимость электроэнергии составит:
Э=157,18 руб.
Накладные расходы рассчитываются по
формуле:
, (7)
где НР - накладные расходы, руб;
ЗПо - основная зарплата, руб;
РО - расходы на содержание и
эксплуатацию оборудования, руб;
%НР - процент накладных расходов.
НР=10370,40 руб.
Полная себестоимость программы:
ПС =
9,45+7687,75+922,53+2281,72+955,00+157,18+10370,40;
ПС=22374,28 руб.
Калькуляция полной себестоимости
представлена в таблице 27.
Таблица 27 - Калькуляция полной
себестоимости программы
Статьи
затрат
|
Затраты,
руб.
|
Стоимость
материалов
|
9,45
|
Основная
заработная плата
|
7687,75
|
Дополнительная
заработная плата
|
922,53
|
Отчисления
на социальные нужды
|
2281,72
|
Расходы
на содержание и эксплуатацию оборудования
|
955,00
|
Расход
на электроэнергию
|
157,18
|
Накладные
расходы
|
10370,40
|
Полная
себестоимость
|
22384,03
|
5. РАЗДЕЛ ОХРАНЫ ТРУДА
.1 Задачи центра информационных технологий ОАО
«Ратеп»
Основной задачей ЦИТ-88 является комплексная
автоматизация управления всеми видами деятельности предприятия, обеспечение
качества обрабатываемой и выдаваемой информации пользователям, соблюдение
требований стандартов по охране окружающей среды.
.2 Структурные подразделения вычислительного
центра предприятия
В состав ЦИТ-88 входят:
отдел по работе с клиентами;
отдел информационной поддержки изделий;
отдел разработки и сопровождения КИС;
технический отдел;
центральный склад СВТ;
функции подразделения;
5.3 Функции центра информационных технологий
5.3.1 В области производственной автоматизации:
разработка и исполнение целевых программ
развития систем автоматизации производственных процессов с целью повышения
эффективности использования оборудования с ЧПУ, создания и поддержки
автоматизированных производств (АП), участков;
обеспечение, поддержка и организация процесса
разработки электронной технической документации (ЭТД) конструкторского и
технологического назначения в целях внедрения новых технологий планирования и
управления производством;
обеспечение, поддержка и организация работы
непосредственных разработчиков ЭТД по правилам, отвечающим действующей на
предприятии НТД и обеспечивающим возможность дальнейшего целевого использования
производимой электронной информации заинтересованными в ней службами
предприятия, в соответствии с предъявляемыми этими службами требованиями,
исходя из их целей и задач;
взаимосвязь с непосредственными разработчиками
ЭТД и заинтересованными в ней службами, решение вопросов и проблем, возникающих
на этом уровне с учётом соответствующих норм, правил и интересов сторон;
организация процессов обучения пользователей
стандартным методам пользования и дальнейшего углублённого освоения ими
внедряемых и внедрённых средств автоматизированной разработки ЭТД;
оказание оперативной методической и практической
помощи в создании конкретных документов, которое требует от пользователя более
глубокого знания возможностей программ, помощь в организации и формировании
базы типовых фрагментов ЭТД;
обеспечение взаимодействия в части обмена электронной
конструкторской информацией с НИИ и сторонними КБ-проектантами;
постоянное углубление собственных навыков работы
с применяемыми на предприятии программными продуктами, поиск наиболее
эффективных и оптимальных методов работы в них и их распространение для всех
пользователей;
обеспечение и поддержка участия разработчика
технической документации в сквозном процессе формирования информации об
изделиях;
разработка и внедрение методических руководств,
инструкций, рекомендаций, регламентирующих специфику разработки, оформлению и
прохождению ЭТД;
участие в разработке и внедрении стандартов
предприятия, определяющих механизмы взаимодействия в сквозных циклах
проектирования и изготовления изделий;
изучение, анализ и тестирование новых программ
конструкторского и технологического назначения, участие в принятии решений по
целесообразности приобретения тех или иных программ;
выбор, освоение и внедрение современных
программных средств проектирования ЭТД, моделирования процесса обработки
деталей на СЧПУ, автоматизированного управления оборудованием с ЧПУ,
определение программной политики предприятия в этой сфере;
изучение опыта сторонних организаций, проработка
возможности его применения на предприятии, знание перспектив и направлений
развития средств автоматизации конструкторской и технологической подготовок
производства, передового отечественного и зарубежного опыта автоматизации
производственных процессов.
.3.2 В области информационных технологий
5.3.2.1 В области PDM-систем и электронного
документооборота:
- управление PDM, ее администрирование,
информационная безопасность PDM;
координация взаимной работы PDM в рамках
интегрированной информационной среды предприятия;
решение вопросов структурной организации данных
стандартных изделий, технологических переходов и т.д.
.3.2.2 В области методологии использования
CALS-технологий
формирование нормативной базы методологии
использования PDM, электронного документооборота на предприятии;
моделирование бизнес-процессов
автоматизированного проектирования с учетом работы в PDM;
решение вопросов использования системы
каталогизации и кодификации в рамках PDM-системы и электронного
документооборота.
.3.2.3 В области проектирования и сопровождения
КИС
реинжениринг бизнес-процессов на основе методов
IDEF;
разработка, внедрение и сопровождение КИС РАТЕП;
разработка, внедрение и эксплуатация комплексов
задач по освоению производства новых и совершенствованию выпускаемых изделий и
технологических процессов;
запуск в производство новых изделий;
сопровождение изделий, находящихся в производстве;
подготовка информации для расчетов в
подразделениях предприятия потребности материалов, покупных комплектующих
изделий, трудозатрат на изделия и их составные части;
систематический анализ, выявление и мобилизация
внутренних резервов для снижения затрат на разработку алгоритмов и программ;
разработка и доведение до цехов заданий по
выполнению заводской производственной программы;
учёт выполнения производственных заданий;
расчёты трудовых затрат, объёмных и
количественных показателей;
автоматизация комплекса бухгалтерских задач;
разработка и сопровождение комплексов задач по
управлению кадрами всех категорий работающих на предприятии;
администрирование и сопровождение баз данных по
направлениям.
.3.2.4 В области технического обеспечения
поддержание в рабочем состоянии всего парка СВТ
предприятия;
установка, техническое обслуживание, ремонт и
модернизация СВТ, сетевого оборудования, периферийных устройств;
ввод в эксплуатацию новой техники;
тестовые проверки и диагностика СВТ;
участие в разработках проектов ЦИТ-88;
централизованное приобретение, установка,
сопровождение лицензионного системного программного обеспечения;
внедрение и контроль нормального
функционирования информационно-вычислительных сетей (ЛВС) предприятия;
разработка новых проектов и модернизация
корпоративной ЛВС предприятия;
системно- техническая поддержка корпоративной
ЛВС;
техническая поддержка серверного и сетевого
оборудования предприятия;
администрирование ЛВС;
установка и сопровождение программного
обеспечения Cisсo IOS, ISA Server, Arc Server 2000, Linux, SendMail и их
развитие;
реализация и внедрение средств и методов защиты
ЛВС от вирусов;
защита от несанкционированного доступа к данным
(безопасность сети);
сопровождение почтового сервера;
поддержка и дальнейшее развитие INTERNET;
администрирование ЛВС «INTERNET»;
централизованное приобретение СВТ согласно
разрабатываемых проектов и поданных заявок;
своевременное обеспечение пользователей
расходными материалами, носителями информации;
приобретение ремонтных ЗИПов;
хранение, списание и утилизация вышедшей из
строя техники;
решение вопросов связанных с охраной труда,
пожаробезопасностью при установке и монтаже СВТ;
обеспечение защиты информации.
.3.2.5 В области экономики, планирования, учета
и отчетности
разработка и обеспечение планов технического
перевооружения предприятия в области вычислительной техники;
обеспечение сохранности и эффективного
использования оборотных средств, выделенных ЦИТ-88;
разработка, составление и представление планов,
отчётов, справок и докладов по всем вопросам, связанным с деятельностью ЦИТ-88;
обеспечение подготовки данных для составления
бюджета предприятия;
оказание помощи в составлении планов развития
предприятия.
5.3.2.6 В области организаций
трудового процесса:
комплектование, правильный
подбор, расстановка, воспитание руководящих кадров, специалистов и рабочих в
ЦИТ-88;
переподготовка специалистов
ЦИТ-88 и других подразделений в области компьютерных технологий;
создание безопасных условий
труда, соблюдение правил пожарной безопасности, правил внутреннего трудового
распорядка, охраны труда;
обеспечение работников ЦИТ-88
спецодеждой, защитными приспособлениями;
организация морального и
материального стимулирования работников за образцовое выполнение должностных
обязанностей;
внесение предложений Генеральному
директору предприятия об установлении квалифицированным специалистам
персональных окладов;
обеспечение расходования фонда
оплаты труда в строгом соответствии с установленным плановым фондом.
.3.2.7 В области Системы менеджмента качества:
знание и реализация Политики
руководства ОАО «РАТЕП» в области качества;
организация работы при
проведении внутренних проверок качества;
ведение регистрации данных о
качестве, в установленных стандартами предприятия формах, журналах, картах,
актах и т.д. разборчиво с заполнением всех граф.
.3.2.8 В области Системы
экологического менеджмента (СЭМ):
разработка и сопровождение
комплекса задач в области СЭМ;
обеспечение сохранности и
передачи по сети пользователям информации по охране окружающей среды;
разработка планов мероприятий
по СЭМ;
организация работ и мероприятий
при проведении внутренних проверок комиссией по внутренним проверкам;
соблюдение требований СЭМ.
.4 Общие требования охраны
труда
.4.1 Требования при работе
Требования охраны труда в
ЦИТ-88 разработаны с учетом требований СанПиН 2.2.2/2.4.1340-03 «Гигиенические
требования к персональным электровычислительным машинам и организации работы»:
- работе с компьютером
допускаются лица не моложе 18 лет, прошедшие предварительный и периодические
медицинские осмотры, не имеющие медицинских противопоказаний, прошедшие вводный
инструктаж по охране труда, инструктаж по охране труда на рабочем месте,
прошедшие подготовку с приобретением определенных знаний и навыков, обучение
безопасным методам и приемам работ, имеющие группу по электробезопасности не
ниже L.
женщины со времени установления
беременности переводятся на работы, не связанные с использованием ПЭВМ, или для
них ограничивается время работы с ПЭВМ (не более 3 часов за рабочую смену) при
условии соблюдения гигиенических требований.
работник обязан соблюдать
правила внутреннего распорядка и требования настоящей инструкции. Выполнять
требования режима труда и отдыха в зависимости от продолжительности, вида и
категории трудовой деятельности. Не допускать на рабочее место посторонних лиц,
содержать свое рабочее место в чистоте и порядке, не появляться на рабочем
месте в нетрезвом и болезненном состоянии, не допускать распития спиртных
напитков на рабочем месте. Не покидать рабочее место на длительное время без
разрешения своего непосредственного руководителя.
на пользователей компьютером
могут воздействовать вредные и опасные факторы производственной среды:
электромагнитное поле (радиочастоты), статическое электричество, видимое
излучение, блики и мерцание экрана, степень ионизации кислорода воздуха,
недостаточная освещенность, нерациональная организации рабочего места,
психоэмоциональное напряжение.
.4.2 Вредные и опасные
производственные факторы
низкочастотное поле -
обостряются некоторые заболевания кожи, может изменяться биохимическая реакция
в крови, на клеточном уровне, в результате чего у работников возникают симптомы
стресса; возможны нарушения протекания беременности.
электростатическое поле
способно изменить и прерывать клеточное развитие, возможно заболевание
глаукомой, повышает вероятность возникновения дерматитов лица.
видимое излучение, блики и
мерцание экрана способствует возникновению близорукости и переутомлению глаз,
мигрени и головной боли, повышают раздражительность, нервное напряжение и могут
вызывать стрессы.
- нерациональная высота рабочей
поверхности стола и кресла, отсутствие опорной спинки и подлокотников,
неудобное размещение документов, компьютера и клавиатуры, неправильный угол
наклона экрана, отсутствие пространства и подставки для ног, а также подставки
для кистей рук приводит к быстрой утомляемости работника и отмечается
болезненность и одеревенелость мышц шеи или плечевого сустава, боли в спине,
дискомфорт в мышцах рук и ног.
.4.3 Требования к работнику
работник должен обеспечивать
выполнение требований пожарной безопасности, пройти инструктаж по пожарной
безопасности, уметь пользоваться первичными средствами пожаротушения, знать
правила поведения при пожаре и при обнаружении признаков горения.
работник не должен курить на
рабочем месте. Обязан выполнять установленный режим труда и отдыха.
Продолжительность рабочего времени 8 часов. Начало работы - 8-00, окончание -
17-00. Перерыв на обед с 12-00 до 13-00. Работник не должен покидать рабочее
место на длительное время без разрешения начальника.
- при обнаружении
неисправностей в работе работник должен своевременно уведомить об этом своего
непосредственного руководителя. Немедленно сообщить о несчастном случае и
оказать доврачебную помощь пострадавшему, по возможности сохранить обстановку
на месте происшествия, если это не угрожает жизни и здоровью окружающих.
Невыполнение требований охраны
труда является нарушением производственной дисциплины. Работник, нарушивший
требования настоящей инструкции при работе с компьютером, несет ответственность
в установленном порядке.
.5 Требования охраны труда
перед началом работы
Перед
началом работы работник обязан:
-осмотреть
и привести в порядок рабочее место;
убедиться в достаточности
освещенности рабочего места, отсутствии отражений на экране, отсутствии
встречного светового потока;
проверить правильность
подключения оборудования в электросеть;
проверить правильность
установки стола, стула, подставки для ног, положения оборудования, угла наклона
экрана, положение клавиатуры и, при необходимости произвести регулировку
рабочего стола и кресла, а также расположение элементов компьютера в
соответствии с требованиями эргономики и в целях исключения неудобных поз и
длительных напряжений тела.
При включений компьютера
работник обязан соблюдать последовательность включения оборудования:
включить блок питания (источник
бесперебойного питания;
включить периферийные
устройства (принтер, монитор, сканер и др.);
включить системный блок
(процессор).
Работнику запрещается
приступать к работе при:
обнаружении неисправности
оборудования;
отсутствии защитного заземления
устройств ПЭВМ;
отсутствии
углекислотного или порошкового огнетушителя;
нарушении гигиенических норм
размещения ПЭВМ.
.6 Требования охраны труда во
время работы
Во время работы необходимо:
площадь на одно рабочее место
пользователей ПЭВМ с ВДТ на базе электроннолучевой трубки (ЭЛТ) должна
составлять не менее 6 квадратных метров, с ВДТ на базе плоских дискретных
экранов (жидкокристаллические, плазменные) - не менее 4,5 квадратных метров.
при размещении рабочих мест с
ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла
поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не
менее 2 метров, а расстояние между боковыми поверхностями видеомониторов - не
менее 1,2 метров.
оптимальное расстояние от глаз
пользователя до экрана компьютера -600-700 мм, но не ближе 500 мм.
Работник во время работы
обязан:
выполнять только порученную
работу;
в течение всего рабочего дня
содержать в чистоте и порядке рабочее место;
держать открытыми все
вентиляционные отверстия устройств;
при необходимости прекращения
работы на некоторое время корректно закрыть все активные задачи;
соблюдать режим работы и
отдыха;
соблюдать правила эксплуатации
вычислительной техники в соответствии с инструкциями по эксплуатации;
при работе с текстовой
информацией выбирать наиболее физиологичный режим представления черных символов
на белом фоне;
соблюдать установленные режимом
рабочего времени регламентированные перерывы в и рекомендованные упражнения для
глаз, шеи, рук, туловища, ног.
Во время работы запрещается:
прикасаться к задней панели
системного блока (процессора) при включенном питании;
переключение разъемов
интерфейсных кабелей периферийных устройств при включенном питании;
загромождать верхние панели
устройств бумагами и посторонними предметами; допускать захламленность рабочего
места бумагой в целях недопущения накапливания органической пыли;
производить отключение питания
во время выполнения активной задачи; производить частые переключения питания;
допускать попадание влаги на
поверхность системного блока (процессора), монитора, рабочую поверхность
клавиатуры, дисководов, принтеров и др. устройств;
включать сильно охлажденное
(принесенное с улицы в зимнее время) оборудование;
производить
самостоятельно вскрытие и ремонт оборудования;
превышать величину количества
обрабатываемых символов свыше 30 тысяч за 4 часа работы;
самостоятельно проводить ремонт
компьютера, следует обращаться в технический отдел;
- протирать экран, аппаратуру
от пыли и загрязнений ранее, чем через 5 минут после отключения аппаратуры от
электрической сети,
При обнаружении в работе
компьютера неисправностей произвести отключение аппаратуры и сообщить об этом
непосредственному руководителю.
В помещениях, оборудованных
ПЭВМ, должна проводиться ежедневная влажная уборка и систематическое
проветривание после каждого часа работы на ПЭВМ.
ЗАКЛЮЧЕНИЕ
Результатом выполнения данного
дипломного проекта является сетевой программный комплекс (СПК) автоматизация
ведения учетов образования и движения отходов, образующихся на предприятии.
Программа выполнена в полном соответствии с техническим заданием.
Достоинствами данной программы
являются:
достаточно удобный и
интуитивно-понятный интерфейс;
наличие справки приложения,
содержащей руководство пользователя;
формирование отчетов, вывод их
на печать;
возможность редактирования,
добавления, удаления данных в БД;
контроль ввода;
перехват ошибок;
разделение прав доступа.
Недостатком программы является
не настраиваемый интерфейс по желанию пользователя.
Программный продукт предназначен для учета
образования и движения отходов производства и потребления на предприятии.
Данные используются для формирования бухгалтерских документов и отчетов для
вышестоящих организаций.
Внедрение СПК позволит автоматизировать рабочие
места ответственных за экологическое состояние работников подразделений по
вводу данных, формированию накладных по отпуску материалов и получению
электронной версии журнала образования и движения отходов.
СПИСОК ЛИТЕРАТУРЫ
1. Фленов
М., «Библия Delphi» - БХВ-Петербург, 2005.
2. Архангельский
А.Я., «Программирование в Delphi
5», Москва, ЗАО «Издательство Бином», 2000.
. Фаронов
В.В., «Delphi.
Программирование на языке высокого уровня», Санкт-Петербург, Питер, 2004.
. ГОСТ
19.003-77 Обозначение программ и программных документов.
. ГОСТ
19.104-78 Основные надписи.
. ГОСТ
19.105-78 Общие требования к программным документам.
. ГОСТ
19.106-78 Требования к программным документам выполненные печатным способом.