№ п/п
|
Наименование
этапа
|
Исполнители
|
Трудоемкость,
чел./дн.1
|
Трудоемкость,
чел./мес.2
|
Затраты
по заработной плате, руб.
|
1
|
Подготовительный
|
программист
|
5
|
0,227
|
241,00
|
54,71
|
2
|
Техническое задание
|
программист
|
10
|
0,455
|
241,00
|
109,66
|
3
|
Основной
|
программист
|
60
|
2,727
|
241,00
|
657,21
|
4
|
Тестирование
|
программист
|
5
|
0,455
|
241,00
|
109,66
|
5
|
Документирование
|
программист
|
15
|
0,682
|
241,00
|
164,36
|
6
|
Сдача темы
|
программист
|
5
|
0,227
|
241,00
|
54,71
|
ИТОГО:
|
1150,31
|
Примечание:
1 – см рис. 1.
2 – из расчета 22
рабочих дня в месяц.
Зосн
рук=10×54,72=547,20 р.
Зосн=1150,31+547,20=1697,51
р.
Принимаем
дополнительный фонд оплаты труда равным 20% от основного фонда оплаты труда.
Здоп=1697,51×0,2=339,50
р.
1697,51+339,50=2037,01
р.
Отчисления на
заработную плату:
ЕСН=26%
Зотч=2037,01×0,26=529,62
р.
Итого:
Ззп=2037,01+529,62=2566,63
р.
Амортизационные отчисления
Первоначальная
стоимость ПК равна 18000 рублей. Норма амортизации 10% в год.
Аг=18000,00×0,1=1800,00
р.
Ад=1800,00/365=4,93
р.
Аобщ=4,93×55=271,15
р.
Затраты на электроэнергию
В соответствии с
Санитарно эпидемиологическими правилами и нормами, программист должен работать
за компьютером не более 6 часов за 1 рабочую смену, от сюда общее время работы
оборудования:
Tобщ=80×6=480 ч.
Расход
электропотребления одного компьютера
Рэл=480×150=72000=72
КВт.
Стоимость 1 КВт
для юридических лиц 1,75 р.
Зэл=72×1,75=126
р.
На искусственное
освещение израсходовано 40 Вт/ч.
Эи
осв=480×40=19200=19,20 КВт.
Зосн=19,20×1,75=33,60
р.
Зэл=126+33,60=159,60
р.
Общие текущие
затраты составляют:
Зтек
общ=2566,63 +271,15+159,60 =2997,38 р.
Прочие затраты
составляют 5% от Зтек общ:
2997,38×0,05=149,87
р.
Текущие затраты:
Зтек=2997,38+149,869=3147,25
р.
Затраты на
создание программного продукта составляет:
З=0+3147,25=3147,25
р.
3.3 Оценка экономической эффективности применения
программного продукта
В нашей ситуации
программный заменяет ручной труд, следовательно, набор полезных результатов в
принципе не меняется. В качестве оценки результатов применения программного
продукта в год берется разница (экономия) издержек, возникающая в результате
использования программного продукта. Экономия от замены ручной обработки информации
на автоматизированную, образуются в результате снижения
затрат на обработку информации и определяются по формуле:
Эзп=Зр-За
(3.5)
где, Зр
– затраты на ручную обработку информации;
За –
затраты на автоматизированную обработку информации.
Затраты на ручную
обработку информации определяются по формуле:
Зр=(Ои×Ц×Гд)/Нв
(3.6)
где, Ои
– объем информации обрабатываемой в ручную, Мб;
Ц – стоимость
одного часа работы, р./ч.;
Гд –
коэффициент, учитывающий дополнительные затраты времени на логические операции
при ручной обработке информации;
Нв –
норма выработки, Мб./ч.
В данном случае:
Он = 2
Мб. (общий размер обрабатываемых данных, вводимых для регистрации за год с
последующим подсчетом статистики);
Ц = 6000/22/8=34,10
р./ч.;
Гд =
2,5 (установлен экспериментально);
Нв =
0,005 Мб./ч.
Следовательно
затраты на ручную обработку информации будут равны:
Зр=(2×34,10×2,5)/0,005=34100
р./год.
Затраты на
автоматизированную обработку информации рассчитываются по формуле:
За=tа×Цм×tо×(Цм+Цо)
(3.7)
где, tа – время автоматической обработки;
Цм –
стоимость одного часа машинного времени;
tо – время работы оператора;
Цо –
стоимость одного часа работы оператора.
Для данного
программного продукта tа=325 часа.
Для автоматической обработки введенных данных, если в год
будет приходить 1000 слушателей курсов (время оформления одного слушателя и составление
договора 30 минут), понадобится 19500 минут = 325 час в год.
Цм=4
р.
Для ввода данных оператором
в систему, понадобится 1000 случаев за год × 30 минут оформления одного
договора. tо =500 часов.
Цо=6000/22/8=34,10
р./ч.
Затраты на
автоматизированную обработку:
За=325*4+500*(4+34,10)= 20350
руб.
Таким образом,
годовая экономия от замены ручной обработки информации на автоматизированную
составит:
Эз=34100–20350=13750
р./год.
Срок окупаемости
вложений
Со=С/Эз
(3.8)
где, Со
– срок окупаемости;
С – себестоимость
программного продукта;
Эз –
экономия от замены ручного труда на автоматизированную обработку
Со=3147,25/13750=0,22
года ≈ 80 дня.
Расчетный
коэффициент эффективности:
Ер=1/Со (3.9)
Ер=1/0,22=4,5
Экономический
эффект от использования программного продукта за год определяется по формуле:
Эг=Эз–С*Ен (3.10)
где, Эг
– годовой экономический эффект;
Эз –
экономия от замены ручной обработки на автоматизированную;
С – себестоимость
программного продукта;
Ен –
нормативный коэффициент эффективности.
Значение Ен принимается равным 0,2 для всех отраслей
народного хозяйства. Ен представляет собой минимальную норму эффективности
вложений, ниже которых они нецелесообразны.
Эг=13750–3147,25*0,2=13120,55
руб.
3.4 Заключение
Окупаемость
программного продукта составит – 80 дней. Расчетный коэффициент вложений больше
нормативного коэффициента вложений (4,5>0,2).
Годовой экономический эффект = 13120,5 руб.
Проведенный
анализ показывает, что внедрение разработанного программного продукта –
целесообразно.
4. БЕЗОПАСНОСТЬ
ЖИЗНЕДЕЯТЕЛЬНОСТИ
4.1
Требования к охране труда и организации рабочего места пользователя разрабатываемой
АС
В конце девятнадцатого и в двадцатом веках учеными
математики, физики и химии были сделаны открытия, которые коренным образом
изменили жизнеобеспечение мирового сообщества.
Компьютеризацией мирового сообщества, которая привела
к созданию единого информационного пространства.
Вместе с тем использование вычислительных машин,
комплексов, систем и сетей привело к расширению гаммы травмирующих и вредных
факторов, последствие которых на здоровье человечества трудно предугадать.
Работа программиста на ПК связана с выполнением
работы сидя и на клавиатуре, в связи с этим организация труда приобретает
первостепенное значение.
Пользователи ПК в течение рабочего дня воспринимают
большой объём информации, что способствует утомлению и снижению работоспособности.
Снижению психофизиологических и нервно-эмоциональных
нагрузок способствует правильная организация рабочего места (РМ)
Одним из важных эргономических показателей трудового
процесса являются антропометрические показатели, определяющие размеры тела
человека и их соответствие размерам, форме рабочего места органов управления,
которые необходимо учитывать при конструировании.
При организации рабочего места пользователя следует
учитывать данные антропометрии, то есть движения должны быть сконцентрированы
так, чтобы группы мышц были нагружена равномерно, и исключены лишние, непроизвольные
движения.
При организации рабочего места следует учитывать
удобства положения дисплея, клавиатуры, системного блока, а также зоны
досягаемости рук, которые установлены на основании антропометрических данных
человеческого тела и дают возможность рационально разместить как по
горизонтали, так и по вертикали монитор, клавиатуру, системный блок, устройства
и т. п.
При постоянной работе экран должен находится в
центре поля обзора, документы слева на столе.
Клавиатура должна быть выполнена следующим образом:
ход клавиш не более 4 мм, высота третьего ряда клавиш над поверхностью стола
должна составлять 30 мм, а наклон стержней клавиш 6. Клавиатура должна иметь
упоры для запястий, что исключает положение ладоней на весу. Устройство клавишного
ввода должно быть разделено на три части, которые оператор может повернуть под
удобным для себя углом, а центр клавиатуры нужно слегка приподнять, тогда не
придётся перекручивать кисти рук с тем, чтобы ладони располагались
горизонтально.
Комфортабельным рабочим местом пользователя должно
быть такое, которое можно приспособить не менее чем для двух позиций, при этом
положение кресла, монитор, системный блок и клавиатура должны каждый раз соответствовать
выполняемой работе и привычкам. Для работы на ВЭВМ больше всего подходит
вертикальное и слегка наклонное положение.
Режимы труда и отдыха при профессиональной работе ПЭВМ
должны организовываться в зависимости от вида и категории трудовой
деятельности.
Трудовая деятельность пользователей по напряженности
работ подразделяется на три категории:
- группы А – по суммарному числу считываемых знаков за
рабочую смену;
- группа Б – по суммарному числу считываемых или
вводимых знаков за рабочую смену;
- группа В – по суммарному времени непосредственной
работы с ПК за рабочую смену.
Для видов и категорий трудовой деятельности
устанавливаются количество знаков за смену или суммарное время
непосредственной работы на ПК.
4.2 Анализ потенциально
опасных и вредных производственных факторов
Эксплуатация современного оборудования (ПК) и
технологического процесса на этом оборудовании (разработка, отладка и
реализация программного продукта на ПК) сопровождаются возникновением
травмирующих и вредных производственных факторов.
Травмирующий фактор – негативное воздействие на человека,
которое приводит к травме или летальному исходу.
Вредный фактор – негативное воздействие на человека, которое
приводит к ухудшению самочувствия или заболеванию.
При работе ПК, разработке, отладке и реализации
программного продукта на пользователя постоянно или периодически действуют
следующие травмирующие и вредные факторы:
- Длительное пребывание в одном и том же положении и
повторении одних и тех же действий;
- Нерациональная организация рабочего места;
- Умственное перенапряжение, обусловленное характером
решаемых задач;
- Большой объём перерабатываемой информации;
- Монотонность труда;
- Нервно-психические нагрузки;
- Отсутствие или недостаток естественного света;
- Повышенная пульсация светового потока (мерцание
изображения);
- Широкий спектр излучения дисплея, который включает
рентгеновскую, ультрафиолетовую, и инфракрасную области, а также широкий диапазон
электромагнитных излучений других частот;
- Повышенный уровень ионизирующего излучения (мягкое
рентгеновское, гамма-излучения);
- Возникновение на экране монитора
статистических зарядов, заставляющих частички пыли двигаться к ближайшему
заземлённому предмету. Часто им оказывается лицо разработчика;
- Загрязнение воздуха вредными веществами, пылью,
микроорганизмами;
- Несоответствие параметров микроклимата норме;
- Повышенный уровень шума на рабочем месте;
- Опасность возникновения пожара.
Травмирующие и вредные факторы, оказывая воздействие,
приводят к отрицательным последствиям в состоянии здоровья пользователя.
Эргономика
Эргономика – научная дисциплина, комплексно изучающая
человека (группу людей) в конкретных условиях его (их) деятельности, связанной
с использованием машин (технических средств). Человек, машина и среда рассматриваются
в эргономике как сложное, функционирующее целое, в котором ведущая роль
принадлежит человеку. Эргономика является одновременно и научной, и
проектировочной дисциплиной, так как в ее задачу входит разработка методов
учета человеческих факторов при модернизации
действующей и создании новой техники и технологии, а также соответствующих условий труда (деятельности).
Интерес к системам «человек – машина» возник в
середине XX века. Он обусловлен тем, что в качестве объектов технического
проектирования и конструирования стали всё чаще выступать различного рода
сложные системы управления производством, транспортом, связью, космическими
полётами и т.п. Эффективность функционирования этих систем, во многом
определяется деятельность, включаемого в них в качестве ведущего звена –
человека. Сочетание способностей человека и возможностей машины существенно повышает
эффективность управления. Несмотря на совместное выполнение функций управления
человеком и машиной, каждая из двух составляющих этой сложной системы подчиняется в работе собственным,
свойственным только ей закономерностям.
Предметом эргономики является конкретная деятельность
человека (группы людей), использующего машины, а объектом исследования –
система «человек - машина – среда».
Эргономика рассматривает технический и человеческий
аспекты в неразрывной связи. Эргономика может, вероятно, существовать и
добиваться определённых успехов на стыке психологии, физиологии, гигиены труда
и анатомии, однако подлинный прогресс и практическая ценность её определяются
уровнем синтеза в ней человеческого и технического аспектов.
Различают две стадии (этапа) в развитии и
соответственно два вида эргономики – коррективную и проективную
(превентивную), которые соответственно связывают с задачами модернизации
существующих машин и систем и с проектированием новых.
Коррективная эргономика играет немаловажную роль,
объединяя для решения важных и актуальных проблем специалистов различных
областей знания. В коррективной эргономике предпринимаются попытки свести
воедино, пусть зачастую и механически, факты, добытые различными науками о
труде. Коррективная эргономика оказывает определённое положительное влияние на
практику проектирования, способствует накоплению отдельных данных о труде.
Формирование проективной эргономики предполагает не
только накопление данных о человеческих факторах, но и развитие специальных
исследований типичных видов и форм человеческой деятельности, создание методов
её анализа и формализации, выявление факторов, определяющих её эффективность. В
свою очередь, эти задачи побуждают анализировать факторы, влияющие на
протекание различных видов деятельности, составлять эргономическую топологию
видов деятельности, разрабатывать собственные, специфические, исследовательские
методы проективной эргономики.
В связи с усиливающейся тенденцией технизации
быта специалисты в области эргономики всё большее внимание уделяют исследованию
человеческих факторов применительно к задачам проектирования, создания и оценки
технически сложных изделий культурно-бытового назначения. Однако в этом направлении
сделаны только первые шаги.
Эргономика играет всё возрастающую роль и в решении
комплексной проблемы реабилитации лиц, в той или иной мере утративших
работоспособность. Такая реабилитация представляет систему государственных,
социально – экономических, медицинских, педагогических, , психологических и
других мероприятий, направленных на возвращение больных и инвалидов в общество
и к общественно полезному труду.
Таким образом, деятельность человека представляет
собой начало и завершение эргономического исследования, эргономической оценки,
эргономического проектирования. В эргономике формируются новые концептуальные
схемы деятельности и новые методы её анализа, что, в свою очередь, стимулирует
разработку общей теории трудовой деятельности.
Эргономика решает задачи рациональной организации
деятельности людей в «среде человек - машина», целесообразного распределения
функций между человеком и машиной, определение критериев оптимизации «среды человек
- машина» с учётом возможностей и особенностей работающего человека (группы
людей), разрабатывает типологии таких систем.
Проектирование конкретных
видов человеческой деятельности как в сравнительно простых, так и в сложнейших
человека – машинных комплексах требует проведения самых разнообразных
исследований. Специальные издания в области эргономики насыщены экспериментальными
антропометрическими, физиологическими и психологическим исследованиями
познавательной и исполнительной деятельности. Более того, эргономика наложила
свой отпечаток на проблематику, теорию и методы исследования в упомянутых областях
знания. Получаемые в науках о человеке результаты выполняют сейчас не только
функцию иллюстрации и доказательства той или иной теории или гипотезы. Они приобретают и
самостоятельное практическое значение. Грамотное проектирование внешних средств
трудовой деятельности и формирование способов её осуществления требуют не
только теоретических знаний о строении человеческой деятельности, но и большого
числа количественных данных, относящихся к точности, скорости, устойчивости и
оперативности выполнения различных видов деятельности. Получение таких данных
возможно лишь на основе разработки новых методов экспериментального
исследования.
ЗАКЛЮЧЕНИЕ
Использование баз данных и информационных систем
становится неотъемлемой составляющей деловой деятельности современного человека
и функционирования преуспевающих организаций. В связи с этим большую актуальность
приобретает освоение принципа построения и эффективного применения
соответствующих технологий и программных продуктов.
По
завершению дипломного проекта удалось достигнуть всех поставленных целей и
задач. В итоге программа прибрела некоторые дополнительные возможности, такие
как настройка внешнего вида и выбора используемой базы данных, а также другие
не менее значимые функции и возможности.
ИСТОЧНИКИ, ИСПОЛЬЗОВАННЫЕ ПРИ РАЗРАБОТКЕ
1.
Озеров В.
Delphi. Советы программистов. –
СПб.: Символ – Плюс. 2002. – 912 с.: ил.;
2.
Фаронов
В.В. Программирование баз данных в Delphi 7. Учебный курс. – СПб.: Питер, 2004. – 459 с.: ил.;
3.
Вирт Н.
Алгоритмы и структуры данных / Пер. с англ. — М.: Мир, 1999. - 360 с., ил.;
4.
Гринзоу
Лу. Философия программирования для Windows XP / Пер. с англ. — СПб.: Символ-Плюс, 2002. — 640 с., ил.;
5.
Зелковиц
М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения / Пер. с
англ. — М.: Мир, 2003. — 386 с., ил.;
6.
Практическое
руководство по программированию / Пер. с англ. Б. Мик, П. Хит, Н. Рашби и др.;
под ред. Б. Мика, П. Хит, Н. Рашби. — М.: Радио и связь, 2004. — 168 с., ил.;
7.
Новиков
Ю., Новиков Д., Черепанов А., Чернов В. Компьютеры, сети, Интернет. Энциклопедия.
Спб.: Питер, 2002 г. – 928 с.: ил.
8.
Фокс Дж.
Программное обеспечение и его разработка / Пер. с англ. — М.: Мир, 2000. - 368
с., ил.;
9.
Язык
компьютера. Пер. с англ, под ред. и с предисл. В. М. Курочкина. — М.: Мир, 2001.
- 240 с., ил.;
10.
И.Г.Гетия Безопасность при
работе на ПЭВМ Москва НПЦ «Профессионал - Ф» 2005 год, 127 страниц.
11.
Гофман В.Э., Хомоненко А.
Д. Работа с базами данных В Delphi. 2-е изд. – спб.: БХВ – Петербург, 2002. 624
с.:ил
12.
Безопасность
жизнедеятельности: Учебник / По ред. Проф. Э. А. Арустамова – 6-е изд.,
перераб. И доп – М.: Издательско – торговая корпорация «Дашков и К», 2003, -496
с.
13.
В.П. Зинченко, В.М.
Мухинов. Основы эргономики. М., изд-во Моск. ун-та, 2002 г, 344 с.
14.
Русак
О.Н., Малаян К.Р., Занько Н.Г. Безопасность жизнедеятельности: Учебное пособие.
4-е изд., стер./ Под ред. О.Н.Русака. – Спб.: Издательство «Лань», 2001 г., 448 с., ил. – (Учебники для вузов, специальная литература).
15.
#"1.files/image084.gif">
Приложение А
//Загрузка программы
program DataBase;
uses
Forms,
UMain in 'UMain.pas' {MainForm},
UListSlush in 'UListSlush.pas' {ListSlushForm},
USlush in 'USlush.pas' {EditSlushForm},
UDataMod in 'UDataMod.pas' {DataModule1: TDataModule},
URecvizit in 'URecvizit.pas' {SetingForm},
USplash in 'USplash.pas' {SplashForm},
UAbout in 'UAbout.pas' {AboutForm},
USpecials in 'USpecials.pas' {ListSpecialsForm},
UEditSpecials in 'UEditSpecials.pas' {EditSpecialForm},
UFind in 'UFind.pas' {FindForm},
ULogin in 'ULogin.pas' {LoginForm},
UAboutKMRCPK in 'UAboutKMRCPK.pas' {AboutKMRCPKForm},
UCreateGroup in 'UCreateGroup.pas' {ListGroupForm};
{$R *.res}
{$R Bitmap.RES}
{$R xp_manifest.RES}
begin
Application.Initialize;
with TSplashForm.Create(nil) do
try
LoadingProgressBar.Max:=130;
Show;
Update;
Application.Title := 'ASF: Приемная комиссия';
Application.CreateForm(TMainForm, MainForm);
LoadingProgressBar.Position:=10;
InfoLabel.Caption:='Создание MainForm. Загрузка... 10%';
MainForm.Delay(50);
Application.CreateForm(TEditSpecialForm, EditSpecialForm);
LoadingProgressBar.Position:=20;
InfoLabel.Caption:='Создание EditSpecialForm. Загрузка...
20%';
MainForm.Delay(50);
Application.CreateForm(TAboutForm, AboutForm);
LoadingProgressBar.Position:=30;
InfoLabel.Caption:='Создание AboutForm. Загрузка... 30%';
MainForm.Delay(50);
Application.CreateForm(TEditSlushForm, EditSlushForm);
LoadingProgressBar.Position:=40;
InfoLabel.Caption:='Создание EditSlushForm. Загрузка... 40%';
MainForm.Delay(50);
Application.CreateForm(TDataModule1, DataModule1);
LoadingProgressBar.Position:=50;
InfoLabel.Caption:='Создание DataModule1. Загрузка... 50%';
MainForm.Delay(50);
Application.CreateForm(TSetingForm, SetingForm);
LoadingProgressBar.Position:=60;
InfoLabel.Caption:='Создание формы RekvizitForm. Загрузка... 60%';
MainForm.Delay(50);
Application.CreateForm(TFindForm, FindForm);
LoadingProgressBar.Position:=70;
InfoLabel.Caption:='Создание FindForm. Загрузка... 70%';
MainForm.Delay(50);
Application.CreateForm(TAboutKMRCPKForm, AboutKMRCPKForm);
LoadingProgressBar.Position:=50;
InfoLabel.Caption:='Создание ListGroupForm. Загрузка... 80%';
MainForm.Delay(50);
Application.CreateForm(TListGroupForm, ListGroupForm);
InfoLabel.Caption:='Создание
AboutKMRCPKForm. Загрузка... 90%';
MainForm.Delay(50);
MainForm.ErrorBase;
LoadingProgressBar.Position:=90;
InfoLabel.Caption:='Проверка базы данных. Загрузка... 95%';
MainForm.Delay(50);
MainForm.WindowState:=wsMaximized;
LoadingProgressBar.Position:=100;
InfoLabel.Caption:='Расположение окна, загрузка настроек. Загрузка... 100%';
MainForm.Delay(50);
finally
Free;
end;
Application.Run;
end.
Приложение Б
//Перевод числа в строку (прописью)
function TMainForm.CurrencyToStr(Value: double): string;
const Hundreds: array [0..9] of string=('',' сто',' двести','
триста',' четыреста',' пятьсот',' шестьсот',' семьсот',' восемьсот',' девятьсот');
Tens: array [0..9] of string=('','',' двадцать',' тридцать','
сорок',' пятьдесят',' шестьдесят',' семьдесят',' восемьдесят',' девяносто');
Ones: array [0..19] of string=('','','',' три',' четыре','
пять',' шесть',' семь',' восемь',' девять',' десять',' одиннадцать',' двенадцать',' тринадцать',' четырнадцать',' пятнадцать',' шестнадцать',' семнадцать',' восемнадцать',' девятнадцать');
Razryad: array [0..6] of string=('',' тысяч',' миллион','
миллиард',' триллион',' квадриллион',' квинтиллион');
var s: string; i: integer; val: int64;
function shortNum(s: string; raz: integer): string;
begin
Result:=hundreds[StrToInt(s[1])]; if StrToInt(s)=0 then Exit;
if s[2]<>'1' then
begin
Result:=Result+tens[StrToInt(s[2])];
case StrToInt(s[3]) of
1: if raz=1 then Result:=Result+' одна' else
Result:=Result+' один';
2: if raz=1 then Result:=Result+' две' else
Result:=Result+' два';
else Result:=Result+ones[StrToInt(s[3])];
end;
Result:=Result+razryad[raz];
case StrToInt(s[3]) of
0,5,6,7,8,9: if raz>1 then Result:=Result+'ов';
1: if raz=1 then Result:=Result+'а';
2,3,4: if raz=1 then Result:=Result+'и' else if
raz>1 then Result:=Result+'а';
end; end else
begin
Result:=Result+ones[StrToInt(Copy(s,2,2))];
Result:=Result+razryad[raz];
if raz>1 then Result:=Result+'ов';
end;
end;
begin
val:=Trunc(value);
if val=0 then
begin
Result:='ноль';
Exit;
end;
s:=IntToStr(val);
Result:='';
i:=0;
while Length(s)>0 do
begin
Result:=shortNum(Copy('00'+s,Length('00'+s)-2,3),i)+Result;
if Length(s)>3 then s:=Copy(s,1,Length(s)-3) else s:='';
inc(i);
end;
s:=IntToStr(Trunc((value-val)*100+0.5));
if s='0' then s:='00';
Result:=Result+' руб '+s+' коп';
if Copy(Result,0,1)=' ' then Delete(Result,0,2);
if Copy(Result,0,1)=' ' then Delete(Result,0,1);
if Copy(Result,Length(Result)-1,1)=' ' then
Delete(Result,Length(Result)-1,1);
end;
Приложение В
procedure TEditSlushForm.CreateReport;
var FileName, S1, S2, S3: OLEVariant;
i, n: LongInt;
Whatr: OLEVariant;
Which: OLEVariant;
Count: OLEVariant;
Temp: Variant;
begin
FileDogovor:=DataModule1.SpecialsTable.Fields.Fields[9].Text;
if (FileDogovor='') or (FileExists(FileDogovor)) then FileDogovor:=Path+'\Data\GeneralBlank.dot';
//Путь до файла с бланком
FileName:=FileDogovor;
if FileExists(FileName)=false then Application.MessageBox('Файл с бланком договора не найден. Возможно
файл был переименован либо удален.'#13'Обратитесь к администратору для
устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else
begin
MainForm.Label1.Caption:='0% ';
MainForm.ProgressBar1.Visible:=true;
MainForm.ProgressBar1.Max:=100;
MainForm.ProgressBar1.Position:=0;
try
WA.Connect;
WA.WindowState:=wdWindowStateMaximize;
WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;
Whatr:=wdGoToBookmark;
Which:=unAssigned;
Count:=unAssigned;
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
try
NameBookmakers:='Num';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DogovorDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Date';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DateDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Zakazchik';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(FamDBEdit.Text+' '+NameDBEdit.Text+'
'+SurNameDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='License';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[9].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Director';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[11].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Slushatel';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(FioDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Programm';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[2].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Hour';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[8].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Month';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[7].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
if SaleDBCheckBox.Checked=false then
begin
try
NameBookmakers:='Summ';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
Temp:=DataModule1.SpecialsTable.Fields.Fields[4].Text;
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[4].Text+'
('+MainForm.CurrencyToStr(Temp)+')');
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Plata';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
Temp:=DataModule1.SpecialsTable.Fields.Fields[3].Text;
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[3].Text+'
('+MainForm.CurrencyToStr(Temp)+')');
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'% ';
except
end;
end else
begin
try
NameBookmakers:='Summ';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
Temp:=DataModule1.SpecialsTable.Fields.Fields[6].Text;
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[6].Text+'
('+MainForm.CurrencyToStr(Temp)+')');
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'% ';
except
end;
try
NameBookmakers:='Plata';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
Temp:=DataModule1.SpecialsTable.Fields.Fields[5].Text;
WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[5].Text+'
('+MainForm.CurrencyToStr(Temp)+')');
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'% ';
except
end;
end;
try
NameBookmakers:='DateVuplatu';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DateVuplatuDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='NameFirm';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[1].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Inn';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[2].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Adress';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[3].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Tel';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[4].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Bank';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[5].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='RSChet';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[6].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='KSChet';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[7].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Bik';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[8].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='License2';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[9].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Doljnost';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[12].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='FIODir';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DataModule1.RekvizitTable.Fields.Fields[10].Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='FIOZakazchik';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(FamDBEdit.Text+' '+NameDBEdit.Text+'
'+SurNameDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='DateRojd';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(DateRDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='Pasport';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(SeriaDBEdit.Text+' № '+NumDBEdit.Text+' выдан
'+VudanDBEdit.Text+' от '+DateVudachDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='AdressZakazchik';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(PropiskaDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='TelZakazchik';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(TelDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='FIOZakazchikNiz';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
WA.Selection.TypeText(Copy(NameDBEdit.Text,0,1)+'.
'+Copy(SurNameDBEdit.Text,0,1)+'. '+FamDBEdit.Text);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
try
NameBookmakers:='START';
WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
end;
//Сохранение документа во временной папки
S1:=Path+'\Doc\Договор
№'+DogovorDBEdit.Text+'.doc';
try
WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+3;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
Application.MessageBox('Не удалось сохранить
документ во временную папку! Все документы MS Word будут закрыты. Попытаться
снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);
WA.Disconnect;
WA.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
WA.Visible:=true;
WA.Activate;
WA.Disconnect;
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+6;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'%
';
except
Application.MessageBox('Связь с MS Word
завершилась неудачей! Закройте все документы MS Word и попробуйте
снова.','Критическая ошибка',mb_ok+mb_IconError);
end;
end;
MainForm.ProgressBar1.Position:=100;
MainForm.Label1.Caption:=IntToStr(MainForm.ProgressBar1.Position)+'% ';
MainForm.ProgressBar1.Visible:=false;
end;
Приложение Г
//Процедура поиска слушателей по заданным критериям
для формирования списка группы
procedure TListGroupForm.RunButtonClick(Sender: TObject);
var SelectIndex, i: integer;
OneD, TwoD: string;
begin
with DataModule1.GroupQuery do
begin
DateSeparator:='/';
ShortDateFormat:='mm/dd/yyyy';
OneD:=DateToStr(StartDateDTP.Date);
TwoD:=DateToStr(FinishDateDTP.Date);
try
if SpecialsLB.Items.Strings[SpecialsLB.ItemIndex]<>'' then
begin
DataModule1.SpecialsTable.Active:=true;
DataModule1.SpecialsTable.Locate('ПолноеНаименование',SpecialsLB.Items.Strings[SpecialsLB.ItemIndex],[loCaseInsensitive,
loPartialKey]);
end;
SelectIndex:=DataModule1.SpecialsTable.Fields.Fields[0].AsInteger;
except
end;
SpecialsEdit.Text:=SpecialsLB.Items.Strings[SpecialsLB.ItemIndex];
Active:=false;
SQL.Clear;
SQL.Add('SELECT ФИО, ДатаНачалаОбучения, ДатаОкончанияОбучения');
SQL.Add('FROM Слушатели');
SQL.Add('WHERE (Специальность='+IntToStr(SelectIndex)+') AND (ДатаНачалаОбучения>=#'+OneD+'#) AND (ДатаОкончанияОбучения<=#'+TwoD+'#)');
try
Active:=true;
except
Application.MessageBox('Невозможно сформировать список. Задайте
другие параметры!','Информация',mb_Ok+mb_IconInformation);
end;
DateSeparator:='.';
ShortDateFormat:='mm/dd/yyyy';
if DataModule1.GroupQuery.RecordCount>0 then
begin
ListCLB.Clear;
DataModule1.GroupQuery.First;
while not DataModule1.GroupQuery.Eof do
begin
DataModule1.GroupQuery.Next;
end;
for i:=0 to ListCLB.Count do
try
ListCLB.State[i]:=cbChecked;
except
end;
Report1Button.Enabled:=true;
Report2Button.Enabled:=true;
end else
begin
ListCLB.Clear;
Report1Button.Enabled:=false;
Report2Button.Enabled:=true;
Application.MessageBox('Невозможно сформировать список. По
заданным критериям слушатели не
найдены!','Информация',mb_Ok+mb_IconInformation);
end;
end;
end;
Приложение Д
//Формирование простого списка группы
procedure TListGroupForm.CreateSimpleReport;
var FileName, S1, S2, S3: OLEVariant;
i, n, g, j: LongInt;
Whatr: OLEVariant;
Which: OLEVariant;
Count: OLEVariant;
NameBookmakers: OLEVariant;
k: real;
begin
//Путь до файла с бланком
FileName:=Path+'\Data\ListGroup.dot';
if FileExists(FileName)=false then Application.MessageBox('Файл
"\Data\ListGroup.dot" не найден. Возможно
файл был переименован либо удален.'#13'Обратитесь к администратору для
устранения ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else
begin
try
//Настройка соединения с Word
MainForm.WA.Connect;
//Настройка параметров документа
MainForm.WA.WindowState:=wdWindowStateMaximize;
MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;
Whatr:=wdGoToBookmark;
Which:=unAssigned;
Count:=unAssigned;
try
NameBookmakers:='Group';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(NumEdit.Text);
except
end;
try
NameBookmakers:='Programm';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(SpecialsEdit.Text);
except
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
n:=ListCLB.Items.Count;
k:=0;
S2:=wdCell;
S3:=1;
j:=0;
for i:=0 to n-1 do
begin
if ListCLB.State[i]=cbChecked then
begin
//№ п/п
j:=j+1;
MainForm.WA.Selection.TypeText(IntToStr(j));
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//ФИО
MainForm.WA.Selection.TypeText(ListCLB.Items.Strings[i]);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
end;
end;
//Удаление последней строки
//если таблица заканчивается
MainForm.WA.Selection.Rows.Delete;
except
Application.MessageBox('Не найдена закладка для
СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Информация',mb_ok+mb_IconInformation);
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
except
end;
//Сохранение документа во временной папки
S1:=Path+'\Doc\Список группы №'+NumEdit.Text+'.doc';
try
MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
except
Application.MessageBox('Не удалось сохранить
документ во временную папку! Все документы MS Word будут закрыты. Попытаться
снова создать документ?','Информация',mb_Ok+mb_IconInformation);
MainForm.WA.Disconnect;
MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
//Видимость документа
MainForm.WA.Visible:=true;
//Активизация соединения
MainForm.WA.Activate;
//Разрыв соединения с MS Word(Quit, Preview, Print)
MainForm.WA.Disconnect;
except
Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте
все документы MS Word и попробуйте снова.','Информация',mb_ok+mb_IconInformation);
end;
end;
end;
Приложение Е
//Формирование списка группы для ведомости
посещаемости
procedure TListGroupForm.CreateUspReport;
var FileName, S1, S2, S3: OLEVariant;
i, n, g, j: LongInt;
Whatr: OLEVariant;
Which: OLEVariant;
Count: OLEVariant;
NameBookmakers: OLEVariant;
k: real;
begin
//Путь до файла с бланком
FileName:=Path+'\Data\Vedom.dot';
if FileExists(FileName)=false then Application.MessageBox('Файл
"Data\Vedom.dot" не найден. Возможно
файл был переименован либо удален.'#13'Обратитесь к администратору для устранения
ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else
begin
try
//Настройка соединения с Word
MainForm.WA.Connect;
//Настройка параметров документа
MainForm.WA.WindowState:=wdWindowStateMaximize;
MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;
Whatr:=wdGoToBookmark;
Which:=unAssigned;
Count:=unAssigned;
try
NameBookmakers:='Group';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(NumEdit.Text);
except
end;
try
NameBookmakers:='Date1';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(DateToStr(StartDateDTP.Date));
except
end;
try
NameBookmakers:='Date2';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(DateToStr(FinishDateDTP.Date));
except
end;
try
NameBookmakers:='Programm';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(SpecialsEdit.Text);
except
end;
try
NameBookmakers:='Prepod';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
if PrepodEdit.Text<>'' then MainForm.WA.Selection.TypeText(PrepodEdit.Text)
else MainForm.WA.Selection.TypeText('_____________________________________________________________');
except
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
n:=ListCLB.Items.Count;
k:=0;
S2:=wdCell;
S3:=1;
j:=0;
for i:=0 to n-1 do
begin
if ListCLB.State[i]=cbChecked then
begin
//№ п/п
j:=j+1;
MainForm.WA.Selection.TypeText(IntToStr(j));
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//ФИО
MainForm.WA.Selection.TypeText(ListCLB.Items.Strings[i]);
for g:=0 to 31 do
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
end;
end;
//Удаление последней строки
//если таблица заканчивается
MainForm.WA.Selection.Rows.Delete;
except
Application.MessageBox('Не найдена закладка для
СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Информация',mb_ok+mb_IconInformation);
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
except
end;
//Сохранение документа во временной папки
S1:=Path+'\Doc\Ведомость для группы №'+NumEdit.Text+'.doc';
try
MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
except
Application.MessageBox('Не удалось сохранить
документ во временную папку! Все документы MS Word будут закрыты. Попытаться
снова создать документ?','Информация',mb_Ok+mb_IconInformation);
MainForm.WA.Disconnect;
MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
//Видимость документа
MainForm.WA.Visible:=true;
//Активизация соединения
MainForm.WA.Activate;
//Разрыв соединения с MS Word(Quit, Preview, Print)
MainForm.WA.Disconnect;
except
Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте
все документы MS Word и попробуйте снова.','Информация',mb_ok+mb_IconInformation);
end;
end;
end;
Приложение Ж
//Формирования отчета по списку слушателей
procedure TListSlushForm.CreateReport;
var FileName, S1, S2, S3: OLEVariant;
i, n: LongInt;
Whatr: OLEVariant;
Which: OLEVariant;
Count: OLEVariant;
NameBookmakers: OLEVariant;
k: real;
begin
DataModule1.DogovorsTable.DisableControls;
//Путь до файла с бланком
FileName:=Path+'\Data\List.dot';
if FileExists(FileName)=false then Application.MessageBox('Файл
"\Data\List.dot" не найден. Возможно
файл был переименован либо удален.'#13'Обратитесь к администратору для устранения
ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else
begin
try
//Настройка соединения с Word
MainForm.WA.Connect;
//Настройка параметров документа
MainForm.WA.WindowState:=wdWindowStateMaximize;
MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;
Whatr:=wdGoToBookmark;
Which:=unAssigned;
Count:=unAssigned;
try
NameBookmakers:='DATE';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(DateToStr(Now));
except
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
n:=DataModule1.DogovorsTable.RecordCount;
MainForm.ProgressBar1.Visible:=true;
MainForm.ProgressBar1.Max:=n;
MainForm.ProgressBar1.Position:=0;
k:=0;
MainForm.Label1.Caption:=FloatToStr(k)+'% ';
DataModule1.DogovorsTable.First;
S2:=wdCell;
S3:=1;
while not DataModule1.DogovorsTable.Eof do
for i:=0 to n-1 do
begin
//№ договора
MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[0].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//ФИО заказчика
MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[3].Text+'
'+DataModule1.DogovorsTable.Fields.Fields[4].Text+'
'+DataModule1.DogovorsTable.Fields.Fields[5].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Курс
MainForm.WA.Selection.TypeText(DataModule1.DogovorsTable.Fields.Fields[16].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Переход к следующей записи
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;
k:=k+(100/n);
MainForm.Label1.Caption:=FloatToStrF(k,ffFixed,0,0)+'% ';
DataModule1.DogovorsTable.Next;
//Удаление последней строки
//если таблица заканчивается
if DataModule1.DogovorsTable.Eof then MainForm.WA.Selection.Rows.Delete;
end;
MainForm.Label1.Caption:='100% ';
except
Application.MessageBox('Не найдена закладка для
СТАРТА! Прочитайте руководство пользователя для устранения ошибки!','Критическая
ошибка',mb_ok+mb_IconError);
end;
try
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
except
end;
//Сохранение документа во временной папки
S1:=Path+'\Doc\Список.doc';
try
MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
except
Application.MessageBox('Не удалось сохранить
документ во временную папку! Все документы MS Word будут закрыты. Попытаться
снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);
MainForm.WA.Disconnect;
MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
//Видимость документа
MainForm.WA.Visible:=true;
//Активизация соединения
MainForm.WA.Activate;
//Разрыв соединения с MS Word(Quit, Preview, Print)
MainForm.WA.Disconnect;
except
Application.MessageBox('Связь с MS Word завершилась неудачей! Закройте
все документы MS Word и попробуйте снова.','Критическая
ошибка',mb_ok+mb_IconError);
end;
end;
MainForm.ProgressBar1.Visible:=false;
DataModule1.DogovorsTable.EnableControls;
end;
Приложение З
//Формирование Прайс-листа
procedure TListSpecialsForm.CreateReport;
var FileName, S1, S2, S3: OLEVariant;
i, n: LongInt;
NotError: boolean;//Проверка на ошибки перед
созданием отчета
Whatr:
OLEVariant;
Which: OLEVariant;
Count: OLEVariant;
NameBookmakers: OLEVariant;
k: real;
begin
DataModule1.SpecialsTable.DisableControls;
//Путь до файла с бланком
FileName:=Path+'\Data\PriceList.dot';
if FileExists(FileName)=false then Application.MessageBox('Файл
"Data\PriceList.dot" не найден. Возможно
файл был переименован либо удален.'#13'Обратитесь к администратору для устранения
ошибки.','Критическая ошибка',mb_Ok+mb_IconError) else
begin
try
//Настройка соединения с Word
MainForm.WA.Connect;
//Настройка параметров документа
MainForm.WA.WindowState:=wdWindowStateMaximize;
MainForm.WA.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
MainForm.WA.ActiveWindow.ActivePane.View.Zoom.Percentage:=100;
Whatr:=wdGoToBookmark;
Which:=unAssigned;
Count:=unAssigned;
NameBookmakers:='DATE';
try
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
MainForm.WA.Selection.TypeText(DateToStr(Now));
except
end;
NameBookmakers:='START';
try
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
except
end;
n:=DataModule1.SpecialsTable.RecordCount;
MainForm.ProgressBar1.Max:=n;
MainForm.ProgressBar1.Position:=0;
k:=0;
MainForm.Label1.Caption:=FloatToStr(k)+'% ';
DataModule1.SpecialsTable.First;
S2:=wdCell;
S3:=1;
while not DataModule1.SpecialsTable.Eof do
for i:=0 to n-1 do
begin
//№ п/п
MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[0].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Наименование
MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[2].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Срок обучения
MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[7].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Цена за месяц
MainForm.WA.Selection.TypeText(DataModule1.SpecialsTable.Fields.Fields[3].Text);
MainForm.WA.Selection.MoveRight(S2,S3,EmptyParam);
//Переход к следующей записи
MainForm.ProgressBar1.Position:=MainForm.ProgressBar1.Position+1;
k:=k+(100/n);
MainForm.Label1.Caption:=FloatToStrF(k,ffFixed,0,0)+'% ';
DataModule1.SpecialsTable.Next;
//Удаление последней строки
//если таблица заканчивается
if DataModule1.SpecialsTable.Eof then
MainForm.WA.Selection.Rows.Delete;
end;
MainForm.Label1.Caption:='100% ';
NameBookmakers:='START';
MainForm.WA.Selection.GoTo_(Whatr, Which, Count, NameBookmakers);
//Сохранение
документа во временной папки
S1:=Path+'\Doc\Прайс-лист на
'+DateToStr(Now)+'.doc';
try
MainForm.WA.ActiveDocument.SaveAs(S1, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
except
Application.MessageBox('Не удалось сохранить
документ во временную папку! Все документы MS Word будут закрыты. Попытаться
снова создать документ?','Критическая ошибка',mb_Ok+mb_IconError);
MainForm.WA.Disconnect;
MainForm.WA.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
//Видимость документа
MainForm.WA.Visible:=true;
//Активизация соединения
MainForm.WA.Activate;
//Разрыв соединения с MS Word(Quit, Preview, Print)
MainForm.WA.Disconnect;
except
Application.MessageBox('Связь с MS Word
завершилась неудачей! Закройте все документы MS Word и попробуйте
снова.','Критическая ошибка',mb_ok+mb_IconError);
end;
end;
MainForm.ProgressBar1.Visible:=false;
DataModule1.SpecialsTable.EnableControls;
end;