Разработка модуля поддержки процессов организации повышения квалификации преподавателей в рамках АСУ МИИТ

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 27.07.2013
Размер файла 4,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Годовая заработная плата сотрудника факультета повышения квалификации преподаваталей (ФПКП) равна:

Количество сотрудников, использующих проект равно 42.

Сумма годовых отчислений на ЕСН составит:

Расходы на командировки, содержание легкового транспорта, почтово-телеграфные и телефонные расходы считаем равными нулю.

З3 = 0

З4 = 0

З6 = 0

Канцелярские и типографские расходы:

В среднем в месяц на канцелярские и типографские расходы тратится 1000 руб.

Будем считать, что на человека приходится 4 м2.

Расходы на содержание и эксплуатацию зданий, помещений и инвентаря будем рассчитывать как коммунальные платежи для помещения площадью (4 * 42) = 168 м2.

Оплата 1 м2 составляет 33 руб.

Годовые расходы на содержание и эксплуатацию аппаратного и программного комплекса будут включать годовые затраты на амортизацию программного комплекса (Запр), годовые затраты на амортизацию аппаратного комплекса (Заап) и годовую стоимость электроэнергии (Зэ):

Годовые затраты на амортизацию программного комплекса будут складываться из удельной стоимости лицензионного ПО и затрат на создание программного комплекса. Норма амортизации принимается равной 20%:

Запр = Кр * 0,2 = 210073,97 * 0,2 = 42014,79 руб.

Годовые затраты на амортизацию аппаратного комплекса будут равны:

Заап = Кто уд * 0,11 = 92320 * 0,11 = 10155,2 руб.

Годовая стоимость потребляемой электроэнергии составит:

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

З8 = 42014,79 + 10155,2 + 8236,8 = 60406,79 руб.

Прочие расходы будем считать равными нулю.

З9 = 0

В итоге получаем, что годовые текущие затраты, связанные с проектом, равны:

З = З1 + З2 + З5 + З7 +З8 = 12600000 + 102000 + 12000 + 66528 + +60406,79 = 12840934,79 руб.

5.3 Расчет экономической эффективности

Подсчитаем годовые затраты на организацию процесса повышения квалификации преподавателей до внедрения проекта. Затраты на приобретение аппаратного и лицензионного программного обеспечения (кроме PL/SQL Developer и Delphi, так как - это средства разработки) останутся прежними, потому что до внедрения проекта использовались те же программные и аппаратные средства (использовались другие приложения, для поддержания которых необходимы были те же программные и аппаратные средства).

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

Стоимостная оценка потерь времени сотрудника МИИТа (сотрудника ФПКП, УФБУ, управления кадров и ряда других подразделений или филиалов МИИТа, которые участвуют поддержке процесса повышения квалификации преподавателей) на выполнение работы по организации повышения квалификации преподавателей, включающей доставку и передачу документов из подразделения в подразделение, можно произвести по формуле:

, где

Зм - месячная заработная плата приведенного выше сотрудника МИИТа на работу в локальной системе;

Т - число рабочих часов в месяц;

ЕСН - ставка единого социального налога.

Зм=25000 руб.

ЕСН = 0,34

Получаем:

Сч = 25000*(1+0,34)/60 =190,34 руб./час

Учитывая, что в МИИТе с разрабатываемым приложением должно работать около 42 сотрудников, экономию от сокращения затрат на работу в локальной системе:

РР = Сч * ?t * n * N,

где: Сч - стоимостная оценка потерь времени сотрудника МИИТа;

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

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

N - среднее число документов (планов, отчетов) на каждого сотрудника МИИТа в год (50).

Получаем:

РР = 190,34 * 4 * 42 * 50 = 1598856 руб./год

Здо_внедрения = З1 + З2 + З3 + З4 + З5 + З6 + З7 + З8 + З9 + РР

Все значения З останутся прежними, кроме З8

Не учитываем PL/SQL Developer и Delphi:

Запр = (Зпр + Куд(Oracle)*0,2) =(189221,12 + 20793,58) * 0,2 = 42002,94

З8 = 42002,94 + 10155,2 + 8236,8 = 60394,94 руб.

Здо_внедрения = 12600000 + 102000 + 12000 + 66528 +60394,94 + 1598856 = = 14439778,94 руб.

Зпосле_внедрения = 12840934,79 руб.

Экономическая эффективность равна:

Э = 14439778,94 - 12840934,79 = 1598844,15 руб./год

Капитальные затраты на разработку и внедрение проекта будут равны:

К = 704080,74 руб.

Так как Э > K, то можно сделать вывод о целесообразности разработки и применения приложения, автоматизирующего технологию организации повышения квалификации преподавателей в рамках АСУ МИИТ.

Заключение

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

Созданное приложение отвечает всем основным поставленным требованиям:

интеграция с корпоративной системой университета (АСУ МИИТ);

реализация всего требуемого функционала;

заполнение и корректировка содержимого документов, используя данные БД АСУ МИИТ;

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

время выполнения запросов не превышает требуемое при определенных условиях;

организация разграничения доступа на уровне СУБД (объектные привилегии) и на уровне приложения (программные роли).

Список литературы

http://mvf.klerk.ru/zakon/125fz.htm (полный текст ФЗ 125)

М.Р. Когаловский. Энциклопедия технологий баз данных. М. Финансы и статистика, 2002

Usability Engineering, Jakob Nielsen San Francisco, 1993

Проектирование информационных систем на железнодорожном транспорте. Э.К. Лецкий, З.А. Крепкая. И.В. Маркова

UML Руководство пользователя. Грейди Буч, Джеймс Рамбо Айвар Джекобсон

Программирование в Delphi 6, Архангельский А.А.

Психологическая диагностика, Учебное пособие / Под П 86 ред. К.М. Гуревича и Е.М. Борисовой. -- М.: Изд-во УРАО, 1997 г.

Человеко-машинное взаимодействие, Методические указания к дипломному проектированию, Дружинин Ю.Г.

http://ru.wikipedia.org

Качество информации, Дружинин Г.В., Сергеева И.В. - М.: Радио и связь, 1990 г.

Приложение А

Описание ER-модели

Entity

1. 'Entity' sectionEntity TableEntity

Name

Definition

Бумаги

Сведения о документах

Группы повышения квалификации

Группы повышения квалификации

Договора

Сведения о договорах

Документы

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

Кто есть кто

Сведения о пользователях системы

Куратор группы

Куратор группы

Методический комплекс

Методический комплекс

Параграфы

Сведения о параграфах

План повышения квалификации

План повышения квалификации

Подразделения

Сведения о подразделениях

Сертификат

Содержит информацию о документах, подтверждающих полученное образование (вуз, ФПК, аспирантура, докторантура и т.д.).

Сотрудники

Содержит список сотрудников

Специальности комплекса

Специальности комплекса

Студенты

Сведения о студентах

Учебная группа

Список учебных групп

Учебная нагрузка умк

Учебная нагрузка в рамках умк

Attribute(s) of "Бумаги" EntityAttribute(s) of "Бумаги" Entity

Name

Definition

ID бумаги

Внутрисистемный номер бумаги

ID вида бумаги

Внутрисистемный номер вида бумаги

номер бумаги

Номер бумаги

ID периода нумерации

Внутрисистемный номер периода нумерации бумаги

ID серии бумаг

Внутрисистемный номер серии бумаги

дата

Дата

временный номер

Временный номер бумаги

основание

Основание

аннотация

Аннотация

примечание

Примечание

готов?

Признак готовности документа

пошел?

Признак того, что документ ушел на подпись

дата создания

Дата создания бумаги

дата изменения

Дата внесения изменений в документ

ID пользователя системы

ID Пользователя системы, создавшего этот документ

Attribute(s) of "Группы повышения квалификации" EntityAttribute(s) of "Группы повышения квалификации" Entity

Name

Definition

ID группы пк

Внутрисистемный номер группы повышения квалификации

ID плана пк

Внутрисистемный номер плана повышения квалификации

ID учебной группы

Внутрисистемный номер учебного группы

ID методического комплекса

Внутрисистемный номер методического комплекса

дата начала

Планируемая дата начала обучения

дата окончания

Планируемая дата окончания обучения

Attribute(s) of "Договора" EntityAttribute(s) of "Договора" Entity

Name

Definition

ID договора

Внутрисистемный номер договора

ID кто

Внутрисистемный номер организации, которая заключает договор

ID с кем

Внутрисистемный номер организации, с которой заключается договор

дата начала

Дата начала действия договора

дата оконч план

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

дата окончания

Дата окончания договора

ID параграфа

Внутрисистемный номер параграфа

предмет

Предмет договора

ID источника фин

Внутрисистемный номер источника финансирования

ID счета

Внутрисистемный номер счета

в рамках

Внутрисистемный номер договора

Attribute(s) of "Документы" EntityAttribute(s) of "Документы" Entity

Name

Definition

ID документа

Внутрисистемный номер документа

ID вида документа

Внутрисистемный номер вида документа

когда выдан

Когда выдан

серия

Серия

номер

Номер

кто выдал

Кто выдал

ID сотрудника

Внутрисистемный номер сотрудника

дата окончания

Окончание действия

Attribute(s) of "Кто есть кто" EntityAttribute(s) of "Кто есть кто" Entity

Name

Definition

ID пользователя системы

Внутрисистемный номер пользователя системы

ID сотрудника

Внутрисистемный номер сотрудника

ID пользователя

Внутрисистемный номер пользователя

дата начала

Дата начала действия

дата окончания

Дата окончания действия

логин

Логин пользователя

примечание

Описание пользователя

логин в ОС

Имя пользователя в операционной системе

ID сервера приложений

Внутрисистемный номер сервера приложений

ID подразделения

Внутрисистемный номер подразделения, (укрупненно) к которому относится пользователь

Attribute(s) of "Куратор группы" EntityAttribute(s) of "Куратор группы" Entity

Name

Definition

ID учебной группы

Внутрисистемный номер учебного группы

ID сотрудника

Внутрисистемный номер сотрудника

дата начала

Дата начала действия

дата окончания

Дата окончания действия

Attribute(s) of "Методический комплекс" EntityAttribute(s) of "Методический комплекс" Entity

Name

Definition

ID методического комплекса

Внутрисистемный номер методического комплекса

ID подразделения

Внутрисистемный номер кафедры

ID дисциплины

Внутрисистемный номер дисциплины

Attribute(s) of "Параграфы" EntityAttribute(s) of "Параграфы" Entity

Name

Definition

ID параграфа

Внутрисистемный номер параграфа

ID вида бумаги

Внутрисистемный вида бумаги

ID бумаги

Внутрисистемный номер бумаги

порядок

Порядок

отмена

Отмена документа

Attribute(s) of "План повышения квалификации" EntityAttribute(s) of "План повышения квалификации" Entity

Name

Definition

ID плана пк

Внутрисистемный номер плана повышения квалификации

ID параграфа

Внутрисистемный номер параграфа

ID обучаемой спец

Внутрисистемный номер обучаемой специальности

дата начала

Дата начала действия

дата окончания

Дата окончания действия

Attribute(s) of "Подразделения" EntityAttribute(s) of "Подразделения" Entity

Name

Definition

ID подразделения

Внутрисистемный номер подразделения

ID метатермина

Внутрисистемный номер метатермина

ID контрагента

Внутрисистемный номер контрагента

Attribute(s) of "Сертификат" EntityAttribute(s) of "Сертификат" Entity

Name

Definition

ID сертификата

Внутрисистемный номер сертификата

ID вида уровня образования

Внутрисистемный номер вида образования

дата начала

Дата начала обучения

дата окончания

Дата окончания обучения

примечание

Примечание

ID специальности

Внутрисистемный номер специальности

ID квалификации

Внутрисистемный номер квалификации

признак отличия

Признак отличия: 1 - золотой медалист, 2 - серебрянный и др.

ID документа

Внутрисистемный номер документа

оценок 5

число оценок 5

оценок 4

число оценок 4

оценок 3

число оценок 3

ID вида уч заведения

Внутрисистемный номер вида учебного заведения

прослушано часов

Количество прослушанных часов

Attribute(s) of "Сотрудники" EntityAttribute(s) of "Сотрудники" Entity

Name

Definition

ID сотрудника

Внутрисистемный номер сотрудника

ID контрагента

Внутрисистемный номер контрагента сотрудника

фамилия

Фамилия сотрудника

ID склонения ф

Внутрисистемный номер склонения фамилии

имя

Имя сотрудника

ID склонения и

Внутрисистемный номер склонения имени

отчество

Отчество сотрудника

ID склонения от

Внутрисистемный номер склонения отчества

пол

Пол

дата рожнения

Дата рождения

дата окончания

Дата окончания действия

ИНН

Номер ИНН

номер пенс страх

Номер пенсионного свидетельства

ID национальности

Внутрисистемный номер национальности

ID метатермина

Внутрисистемный номер метатермина

Attribute(s) of "Специальности комплекса" Entity

Name

Definition

ID методического комплекса

Внутрисистемный номер методического комплекса

ID обучаемой спец

Внутрисистемный номер обучаемой специальности

ID параграфа программы

Внутрисистемный номер параметра программы

ID вида дисциплины

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

ID типа дисциплины

Внутрисистемный номер типа дисциплины

ID параграфа кафедры

Внутрисистемный номер протокола заседания кафедры

ID параграфа умо

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

Attribute(s) of "Студенты" Entity

Name

Definition

ID студента

Внутрисистемный номер студента

ID сотрудника

Внутрисистемный номер сотрудника

ID учебной группы

Внутрисистемный номер учебного группы

ID вида зачисления

Внутрисистемный номер вида зачисления

ID приказа о зач

Внутрисистемный номер приказа о зачислении

дата начала

Дата начала действия

окончание плановое

Планируемая дата окончания

ID договора

Внутрисистемный номер договора

ID документа

Внутрисистемный номер бумаги

ID вида программы

Внутрисистемный номер вида программы, по которой обучается студент (ускоренная, сокращенная и др.)

условный срок

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

ID учебного плана

Внутрисистемный номер учебного плана

Attribute(s) of "Учебная группа" Entity

Name

Definition

ID учебной группы

Внутрисистемный номер учебного группы

ID обучаемой спец

Внутрисистемный номер обучаемой специальности

наименование

Наименование учебного группы

уровень группы

0 - группы не учитываемые в учебном отделе

1 - курс

2 - поток

3 - группа

дата начала

Дата начала действия

дата окончания

Дата окончания действия

входит

Входит

максимальный размер

Рекомендуемое число участников в группе

ID вида группы

Внутрисистемный номер вида группы

курс

Курс обучения

аббревиатура

Аббревиатура, если не указана, то берется аббревиатура специальности

Attribute(s) of "Учебная нагрузка умк" Entity

Name

Definition

ID учебной нагрузки умк

Внутрисистемный номер учебной нагрузки УМК

ID методического комплекса

Внутрисистемный номер методического комплекса

ID вида обучения

Внутрисистемный номер вида обучения

ID вида нагрузки

Внутрисистемный номер вида нагрузки

семестр

Семестр (1..12)

часы

Количество часов

Table

Table

Name

Certificate

Complex_specialities

Contracts

Curator_group

Division

Documents

Educational_group

Educational_load_umk

Employees

Methodical_complex

Orders

Paragraphs

Refresher_course_group

Refresher_course_plan

Students

Who_Is_Who

Column(s) of "Certificate" Table

Name

Datatype

Is PK

Is FK

ID_certificate

NUMBER(10)

Yes

No

IDk_level_formation

NUMBER(10)

No

No

d_start

DATE

No

No

d_end

DATE

No

No

note

VARCHAR2(500)

No

No

ID_speciality

NUMBER(10)

No

No

ID_qualification

NUMBER(10)

No

No

attribute_difference

INTEGER

No

No

ID_doc

NUMBER(10)

No

Yes

estimations_5

INTEGER

No

No

estimations_4

INTEGER

No

No

estimations_3

INTEGER

No

No

IDk_ed_institution

NUMBER(10)

No

No

heard_hours

FLOAT

No

No

Column(s) of "Complex_specialities" Table

Name

Datatype

Is PK

Is FK

ID_p_dp

NUMBER(10)

No

Yes

IDt_discipline

NUMBER(10)

No

No

IDk_discipline

NUMBER(10)

No

No

ID_d_specialitie

NUMBER(10)

No

No

ID_methodical_complex

INTEGER

No

Yes

ID_p_k

NUMBER(10)

No

Yes

ID_p_umo

NUMBER(10)

No

Yes

Column(s) of "Contracts" Table

Name

Datatype

Is PK

Is FK

ID_contract

NUMBER(10)

Yes

No

ID_who

NUMBER(10)

No

No

ID_with_whom

NUMBER(10)

No

No

d_start

DATE

No

No

dp_end

DATE

No

No

d_end

DATE

No

No

ID_paragraph

NUMBER(10)

No

Yes

subject

VARCHAR2(500)

No

No

ID_source

NUMBER(10)

No

No

ID_account

NUMBER(10)

No

No

ID_contract_main

NUMBER(10)

No

Yes

Column(s) of "Curator_group" Table

Name

Datatype

Is PK

Is FK

ID_ed_group

NUMBER(10)

Yes

Yes

ID_e

NUMBER(10)

Yes

Yes

d_start

DATE

Yes

No

d_end

DATE

No

No

Column(s) of "Division" TableColumn(s) of "Division" Table

Name

Datatype

Is PK

Is FK

ID_d

NUMBER(10)

Yes

No

ID_metaterm

NUMBER(10)

No

No

ID_contractor

NUMBER(10)

No

No

Column(s) of "Documents" Table

Name

Datatype

Is PK

Is FK

ID_doc

NUMBER(10)

Yes

No

IDk_doc

NUMBER(10)

No

No

when_given

DATE

No

No

series

VARCHAR2(20)

No

No

identifier

VARCHAR2(30)

No

No

who_given

VARCHAR2(500)

No

No

ID_e

NUMBER(10)

No

Yes

d_end

DATE

No

No

Column(s) of "Educational_group" Table

Name

Datatype

Is PK

Is FK

ID_ed_group

NUMBER(10)

Yes

No

ID_d_specialitie

NUMBER(10)

No

No

name

VARCHAR2(100)

No

No

level_group

INTEGER

No

No

d_start

DATE

No

No

d_end

DATE

No

No

ID_ed_group_main

NUMBER(10)

No

Yes

maximal_size

INTEGER

No

No

IDk_group

NUMBER(10)

No

No

course

INTEGER

No

No

abbreviation

VARCHAR2(20)

No

No

Column(s) of "Educational_load_umk" Table

Name

Datatype

Is PK

Is FK

ID_educational_load_umk

INTEGER

Yes

No

ID_methodical_complex

INTEGER

No

Yes

IDk_training

NUMBER(10)

No

No

IDk_lesson

NUMBER(10)

No

No

semester

INTEGER

No

No

hours

FLOAT

No

No

Column(s) of "Employees" Table

Name

Datatype

Is PK

Is FK

ID_e

NUMBER(10)

Yes

No

ID_contractor

NUMBER(10)

No

No

surname

VARCHAR2(60)

No

No

ID_declination_s

NUMBER(10)

No

No

name

VARCHAR2(50)

No

No

ID_declination_n

NUMBER(10)

No

No

patronymic

VARCHAR2(50)

No

No

ID_declination_p

NUMBER(10)

No

No

sex

NUMBER(1)

No

No

date_of_birth

DATE

No

No

d_end

DATE

No

No

INN

VARCHAR2(30)

No

No

insurance_pension

VARCHAR2(30)

No

No

ID_nationality

NUMBER(10)

No

No

ID_metaterm

NUMBER(10)

No

No

Column(s) of "Methodical_complex" Table

Name

Datatype

Is PK

Is FK

ID_methodical_complex

INTEGER

Yes

No

ID_d

NUMBER(10)

No

Yes

ID_discipline

NUMBER(10)

No

No

Column(s) of "Orders" Table

Name

Datatype

Is PK

Is FK

ID_order

NUMBER(10)

Yes

No

IDk_order

NUMBER(10)

No

No

number_paper

INTEGER

No

No

ID_period_numbering

NUMBER(10)

No

No

ID_series_paper

NUMBER(10)

No

No

hisdate

DATE

No

No

temp_identifier

NUMBER(10)

No

No

basis

VARCHAR2(800)

No

No

summary

VARCHAR2(500)

No

No

note

VARCHAR2(800)

No

No

If_ready

SMALLINT

No

No

if_gone

SMALLINT

No

No

d_creation

DATE

No

No

d_modification

DATE

No

No

ID_ERP_user

NUMBER(10)

No

Yes

Column(s) of "Paragraphs" Table

Name

Datatype

Is PK

Is FK

ID_paragraph

NUMBER(10)

Yes

No

IDk_order

NUMBER(10)

No

No

ID_order

NUMBER(10)

No

Yes

index_p

INTEGER

No

No

cancellation

NUMBER(10)

No

Yes

Column(s) of "Refresher_course_group" Table

Name

Datatype

Is PK

Is FK

ID_rc_group

INTEGER

Yes

No

ID_refresher_course_plan

INTEGER

No

Yes

ID_ed_group

NUMBER(10)

No

Yes

ID_methodical_complex

INTEGER

No

Yes

d_start

DATE

No

No

d_end

DATE

No

No

Column(s) of "Refresher_course_plan" Table

Name

Datatype

Is PK

Is FK

ID_refresher_course_plan

INTEGER

Yes

No

ID_paragraph

NUMBER(10)

No

Yes

ID_d_specialitie

NUMBER(10)

No

No

d_start

DATE

No

No

d_end

DATE

No

No

Column(s) of "Students" Table

Name

Datatype

Is PK

Is FK

ID_student

NUMBER(10)

Yes

No

ID_e

NUMBER(10)

No

Yes

ID_ed_group

NUMBER(10)

No

Yes

IDkba_transfer

NUMBER(10)

No

No

ID_order_start

NUMBER(10)

No

Yes

d_start

DATE

No

No

dp_end

DATE

No

No

ID_order_contract

NUMBER(10)

No

Yes

ID_doc

NUMBER(10)

No

Yes

IDk_program

NUMBER(10)

No

No

d_trial

DATE

No

No

ID_educational_plan

NUMBER(10)

No

No

Column(s) of "Who_Is_Who" Table

Name

Datatype

Is PK

Is FK

ID_ERP_user

NUMBER(10)

Yes

No

ID_e

NUMBER(10)

No

Yes

ID_user

NUMBER(10)

No

No

d_start

DATE

No

No

d_end

DATE

No

No

login

VARCHAR2(20)

No

No

note

VARCHAR2(200)

No

No

login_OS

VARCHAR2(30)

No

No

ID_as

NUMBER(10)

No

No

ID_d

NUMBER(10)

No

Yes

Приложение Б. Код программы

program pk

uses

Forms,

Windows,

SysUtils,

Main in 'модули\Главная\Main.pas' {Form_Main},

About_cx in 'общие модули\Формы\О программе\About_cx.pas' {Form_About},

SysServices in 'общие модули\System\SysServices.pas',

wrappers in 'общие модули\System\wrappers.pas',

GridEditClass in 'общие модули\System\GridEditClass.pas',

LP_u_CX_tools in 'общие модули\System\LP_u_CX_tools.pas',

LP_u_MA_Interface in 'общие модули\System\LP_u_MA_Interface.pas',

Standart_new in 'общие модули\System\Standart_new.pas',

SqlStringList in 'общие модули\System\SqlStringList.pas',

Get_Admin_Data in 'общие модули\SQL_Data\Get_Admin_Data.pas',

Get_Single_Data in 'общие модули\SQL_Data\Get_Single_Data.pas',

Get_PK_PPS_Data in 'общие модули\SQL_Data\Get_PK_PPS_Data.pas',

uListener in 'общие модули\System\uListener.pas',

Event in 'модули\Мероприятия\Event.pas' {Form_Event},

SE in 'общие модули\Формы\Поиск\SE.pas' {Form_SE},

Find_Org in 'общие модули\Формы\Организации\Find_Org.pas' {Form_Find_Org},

UnivQuestionnaire in 'общие модули\Формы\Анкета\UnivQuestionnaire.pas' {FUnivQuestionare},

photo_U in 'общие модули\Формы\фото\photo_U.pas' {fPhoto},

New_For_All in 'общие модули\Формы\Ввод новых значений\New_For_All.pas' {Form_New_For_All},

address_U in 'общие модули\Формы\адреса\address_U.pas' {fAddr},

UnitDocuments in 'общие модули\Формы\Документы\UnitDocuments.pas' {FormDocuments},

RegService in 'общие модули\System\RegService.pas',

WebCam in 'общие модули\Формы\фото\WebCam.pas' {WebCamera},

Dictionaries in 'модули\Справочники\Dictionaries.pas' {Form_Dictionaries},

Plan in 'модули\Планирование\Plan.pas' {Form_Plan},

SysEnvironment in 'общие модули\System\SysEnvironment.pas';

{$R *.res}

const

KB_LANG_RUSSIAN = (SUBLANG_DEFAULT shl 10) or LANG_RUSSIAN;

begin

if not MSystemServices.Connect(True, True)

then Exit;

if System.DebugHook >0

then MSystemServices.IsDebugMode:=True;

// Включим по-умолчанию русский язык!

LoadKeyboardLayout(PChar(IntToHex(KB_LANG_RUSSIAN, 8)), KLF_ACTIVATE);

Application.Initialize;

//локализация DevExpress

LoadLocalizerOnce;

vnSessionAgent.RefreshLoginInfo;

vnSessionAgent.RefreshRolesInfo;

ShowWindow(Application.Handle, SW_HIDE);

Application.Title := 'Повышение квалификации';

Application.CreateForm(TForm_Main, Form_Main);

Application.Run;

end.

unit Main

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, dxBar, dxBarExtItems, cxClasses, ActnList, ImgList,

cxPropertiesStore, About_cx, Plan, Event, Dictionaries;

const

{ Путь для сохранения в реестре }

Reg_Path = '\Software\AS Pilot group\Parameters\Модуль повышения квалификации';

type

TForm_Main = class(TForm)

cxPropertiesStore1: TcxPropertiesStore;

cxPropertiesStore2: TcxPropertiesStore;

ImageList_Aple: TImageList;

ImageList16: TImageList;

ActionList1: TActionList;

Action_Plan: TAction;

Action_Exit: TAction;

ActionList2: TActionList;

Action_Options: TAction;

dxBarManager1: TdxBarManager;

dxBarManager1Bar1: TdxBar;

MAbout: TdxBarSubItem;

dxBarLargeButton5: TdxBarLargeButton;

MNastr: TdxBarSubItem;

dxBarLargeButton6: TdxBarLargeButton;

dxBarLargeButton4: TdxBarLargeButton;

dxBarLargeButton1: TdxBarLargeButton;

Panel_Main: TPanel;

Panel1: TPanel;

Action_Message: TAction;

dxBarButton1: TdxBarButton;

Action_Change_User: TAction;

Action_Refresh_Roles: TAction;

dxBarButton2: TdxBarButton;

dxBarLargeButton2: TdxBarLargeButton;

Action_Event: TAction;

dxBarLargeButton3: TdxBarLargeButton;

Action_Dictionaries: TAction;

procedure Action_MessageExecute(Sender: TObject);

procedure Action_Change_UserExecute(Sender: TObject);

procedure Action_Refresh_RolesExecute(Sender: TObject);

procedure Action_ExitExecute(Sender: TObject);

procedure Action_AboutExecute(Sender: TObject);

procedure Action_PlanExecute(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

procedure Action_EventExecute(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Action_DictionariesExecute(Sender: TObject);

private

{ Private declarations }

{ Форма "О программе" }

F_About: TForm_About;

{ Форма "Планирование" }

F_Plan: TForm_Plan;

{ Форма "Мероприятия" }

F_Event: TForm_Event;

{ Форма "Справочники" }

F_Disctionaries: TForm_Dictionaries;

public

{ Public declarations }

ERP_NAME: string;

{ Обновить роли }

procedure Refresh_Roles;

{ Скрыть все }

procedure Hide_All;

end;

var

Form_Main: TForm_Main;

implementation

{$R *.dfm}

uses SysServices, LP_u_MA_Interface, grideditclass, standart_new, Get_PK_PPS_Data;

{ Обмен сообщениями }

procedure TForm_Main.Action_MessageExecute(Sender: TObject);

begin

(vnListAgent as IvnMessageAgent).MA_MessageWindow;

end;

{ Изменить текущего пользователя }

procedure TForm_Main.Action_Change_UserExecute(Sender: TObject);

begin

if not MSystemServices.Connect(True)

then Close

{ Обновить роли нового пользователя }

else Action_Refresh_Roles.Execute;

end;

{ Справочники }

procedure TForm_Main.Action_DictionariesExecute(Sender: TObject);

begin

{ Скрываем все }

Hide_All;

{ Если формы нет, создаем ее, инициализируем, проверяем роли и встраиваем }

if F_Disctionaries = nil

then begin

F_Disctionaries := TForm_Dictionaries.Create(Self);

F_Disctionaries.Init(Reg_Path+'\Справочники');

F_Disctionaries.Refresh_Roles;

F_Disctionaries.ManualDock(Panel1, nil, alClient);

end;

{ Показываем форму }

F_Disctionaries.Realign;

F_Disctionaries.PageControl_Main.Realign;

F_Disctionaries.Panel_Main.Realign;

F_Disctionaries.Panel_Filter.Realign;

F_Disctionaries.PopupEdit_Filter_Org.Realign;

if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Disctionaries.Caption

else Self.Caption := F_Disctionaries.Caption;

Application.Title := Self.Caption;

F_Disctionaries.Show;

end;

{ Скрыть все формы }

procedure TForm_Main.Hide_All;

begin

if F_Plan <> nil

then

if F_Plan.Visible

then F_Plan.Hide;

if F_Event <> nil

then

if F_Event.Visible

then F_Event.Hide;

//Self.Caption := My_Get_Version('InternalName');

Self.Caption := ERP_NAME;

Application.Title := Self.Caption;

end;

{ Обновить роли пользователя }

procedure TForm_Main.Refresh_Roles;

var data: olevariant; i: integer;

begin

data := MSystemServices.SelectData(Get_Params_Module, CreateVarAr(['2000']), i

, 'Не смогли прочитать настройку модуля');

if VarIsArray(data)

then ERP_NAME := VarToStr(data[0][0])

else ERP_NAME := '';

data := MSystemServices.SelectData(Get_Params_Module, CreateVarAr(['2014']), i

, 'Не смогли прочитать настройку модуля');

if VarIsArray(data)

then

begin

if ERP_NAME <> ''

then ERP_NAME := ERP_NAME + '. ';

ERP_NAME := ERP_NAME + VarToStr(data[0][0]);

end;

Self.Caption := ERP_NAME;

{ Проверка доступности показа формы планирования }

Action_Plan.Enabled := TForm_Plan.IsRoleAccessible;

if (F_Plan <> nil)

then begin

if F_Plan.Visible and not Action_Plan.Enabled

then Hide_All

else F_Plan.Refresh_Roles;

if F_Plan.Visible

then if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Plan.Caption

else Self.Caption := F_Plan.Caption;

end;

{ Проверка доступности показа формы мероприятий }

Action_Event.Enabled := TForm_Event.IsRoleAccessible;

if (F_Event <> nil)

then begin

if F_Event.Visible and not Action_Event.Enabled

then Hide_All

else F_Event.Refresh_Roles;

if F_Event.Visible

then

if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Event.Caption

else Self.Caption := F_Event.Caption;

end;

Action_Dictionaries.Enabled := TForm_Dictionaries.IsRoleAccessible;

if (F_Disctionaries <> nil)

then begin

if F_Disctionaries.Visible and not Action_Event.Enabled

then Hide_All

else F_Disctionaries.Refresh_Roles;

if F_Disctionaries.Visible

then

if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Disctionaries.Caption

else Self.Caption := F_Disctionaries.Caption;

end;

Application.Title := Self.Caption;

end;

{ Перечитать роли текущего юзверя }

procedure TForm_Main.Action_Refresh_RolesExecute(Sender: TObject);

begin

{ Если создана форма, то и там обновим роли }

if F_About <> nil

then Get_SqlData_cxGrid(F_About.Tree_Roles_User).Read_Data

{ Иначе - сами их прочтем и определим доступность }

else begin

vnSessionAgent.RefreshLoginInfo;

vnSessionAgent.RefreshRolesInfo;

Refresh_Roles;

end;

end;

{ Проведение мероприятий }

procedure TForm_Main.Action_EventExecute(Sender: TObject);

begin

{ Скрываем все }

Hide_All;

{ Если формы нет, создаем ее, инициализируем, проверяем роли и встраиваем }

if F_Event = nil

then begin

F_Event := TForm_Event.Create(Self);

F_Event.Init(Reg_Path+'\Мероприятия');

F_Event.Refresh_Roles;

F_Event.ManualDock(Panel1, nil, alClient);

end;

{ Показываем форму }

F_Event.Realign;

F_Event.PageControl_Main.Realign;

F_Event.Panel_Main.Realign;

if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Event.Caption

else Self.Caption := F_Event.Caption;

Application.Title := Self.Caption;

F_Event.Show;

end;

{ Выход из программы }

procedure TForm_Main.Action_ExitExecute(Sender: TObject);

begin

Close;

end;

{ Открыть форму о программе }

procedure TForm_Main.Action_AboutExecute(Sender: TObject);

begin

{ Если формы нет, создаем ее и инициализируем }

if F_About = nil

then begin

F_About := TForm_About.Create(Self);

F_About.Refresh_Roles := Refresh_Roles;

F_About.Init(Reg_Path+'\О программе');

end;

{ Показываем форму в модальном окне }

F_About.ShowModal;

end;

{ Планирование обучения }

procedure TForm_Main.Action_PlanExecute(Sender: TObject);

begin

{ Скрываем все }

Hide_All;

{ Если формы нет, создаем ее, инициализируем, проверяем роли и встраиваем }

if F_Plan = nil

then begin

F_Plan := TForm_Plan.Create(Self);

F_Plan.Init(Reg_Path+'\Планирование');

F_Plan.Refresh_Roles;

F_Plan.ManualDock(Panel1, nil, alClient);

end;

{ Показываем форму }

F_Plan.Realign;

F_Plan.PageControl_Main.Realign;

F_Plan.Panel_Main.Realign;

F_Plan.Panel_Filter.Realign;

F_Plan.PopupEdit_Filter_Org.Realign;

if Self.Caption <> ''

then Self.Caption := Self.Caption + '. ' + F_Plan.Caption

else Self.Caption := F_Plan.Caption;

F_Plan.Show;

end;

{ Сохраним параметры окна }

procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);

begin

dxBarManager1.SaveToRegistry(Reg_Path+'\Главное окно\Меню');

cxPropertiesStore1.StoreTo(False);

{ При свернутости и распахнутости окна размеры не сохранять! }

if WindowState = wsNormal

then cxPropertiesStore2.StoreTo(False);

end;

{ Инициализация }

procedure TForm_Main.FormCreate(Sender: TObject);

begin

{ Загружаем параметры из реестра }

cxPropertiesStore1.StorageName:=Reg_Path+'\Главное окно';

cxPropertiesStore2.StorageName:=Reg_Path+'\Главное окно\Размеры';

Position:=poDesigned;

cxPropertiesStore1.RestoreFrom;

cxPropertiesStore2.RestoreFrom;

dxBarManager1.LoadFromRegistry(Reg_Path+'\Главное окно\Меню');

end;

procedure TForm_Main.FormShow(Sender: TObject);

begin

Refresh_Roles;

{ Скроем все }

Hide_All;

end;

end.

unit Dictionaries

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, cxPC, cxControls, cxSplitter, cxStyles, cxCustomData,

cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxGridLevel,

cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,

cxGridCustomView, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,

cxContainer, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,

cxLabel,wrappers, ActnList, cxLookAndFeels, cxLookAndFeelPainters, cxSpinEdit,

cxCalendar, GridEditClass, cxButtonEdit, cxTimeEdit, SE;

const

{ Роль на редактирование специальностей, организаторов обучения }

Action_Q_Edit_Spec = '1401';

{ Роль на редактирование учебных групп }

Action_Q_Edit_Groups = '1402';

{ Вид уровня специальности "Повышение квалификации" }

IDK_Level_Spec = '70';

{ Вид дисциплины "Повышение квалификации }

IDK_Discipline = '59454';

{ Вид уровня образования "Повышение квалификации" }

IDK_Level_Formation = '70508';

{ Путь для сохранения в реестре }

Reg_Path = '\Software\AS Pilot group\Parameters\Модуль повышения квалификации\Справочники';

{ Путь для сохранения списков }

Grid_Path = '\Параметры списков\';

{ Путь для добавления }

Add_Path = 'Модуль повышения квалификации\Справочники\Добавление\';

type

TForm_Dictionaries = class(TForm)

Panel_Main: TPanel;

cxEditStyleController1: TcxEditStyleController;

cxStyleRepository3: TcxStyleRepository;

st_Group: TcxStyle;

sf_s_ContentEVEN: TcxStyle;

st_Filter_Box: TcxStyle;

st_Footer: TcxStyle;

st_Inactive: TcxStyle;

st_Indicator: TcxStyle;

st_Preview: TcxStyle;

st_Selection: TcxStyle;

st_ContentOdd: TcxStyle;

st_Content_TEXT: TcxStyle;

st_Content_POPUP: TcxStyle;

st_Content_DATE: TcxStyle;

st_Content_QUALIFIER: TcxStyle;

st_Footer_Column: TcxStyle;

st_Content_ID: TcxStyle;

st_Content_Memo: TcxStyle;

st_Content_Project: TcxStyle;

st_Content_Cancel: TcxStyle;

st_Content_ProjectSend: TcxStyle;

st_Content_Owner: TcxStyle;

st_Content_NotOwner: TcxStyle;

st_Content_Hot_Track: TcxStyle;

st_Inc_Search: TcxStyle;

st_Group_By_Box: TcxStyle;

st_Header: TcxStyle;

cxTreeList_Style_1: TcxTreeListStyleSheet;

cxGrid_Style_1: TcxGridBandedTableViewStyleSheet;

cxEditRepository1: TcxEditRepository;

cxER_Date_None_Blank: TcxEditRepositoryDateItem;

cxER_Date_With_Blank: TcxEditRepositoryDateItem;

cxER_Spin_ID: TcxEditRepositorySpinItem;

cxER_Text_RO: TcxEditRepositoryTextItem;

cxER_Memo_RO: TcxEditRepositoryMemoItem;

cxER_Date_RO: TcxEditRepositoryDateItem;

cxPropertiesStore1: TcxPropertiesStore;

Panel_Filter: TPanel;

cxSplitter1: TcxSplitter;

cxLabel1: TcxLabel;

PopupEdit_Filter_Org: TcxPopupEdit;

cxER_Text: TcxEditRepositoryTextItem;

ActionList1: TActionList;

Action_Insert_Spec_Div: TAction;

Action_Insert_Spec: TAction;

Fill_tv_spec: TAction;

Fill_tv_spec_div: TAction;

Fill_tv_intitutes: TAction;

Fill_tv_kind_training: TAction;

Fill_tv_k_l_f: TAction;

Fill_tv_org_div: TAction;

Fill_tv_source_finansing: TAction;

Action_Insert_Ed_Group: TAction;

PageControl_Main: TcxPageControl;

cxTabSheet_Spec: TcxTabSheet;

cxGrid_Spec: TcxGrid;

tv_Spec: TcxGridBandedTableView;

tv_Spec_Name: TcxGridBandedColumn;

tv_Spec_Q: TcxGridBandedColumn;

tv_Spec_ID: TcxGridBandedColumn;

tv_Spec_IDK_Level_Spec: TcxGridBandedColumn;

tv_Spec_id_discipline: TcxGridBandedColumn;

tv_Spec_idk_discipline: TcxGridBandedColumn;

cxGrid_Spec_Level1: TcxGridLevel;

cxTabSheet_Org: TcxTabSheet;

cxGrid_Spec_Div: TcxGrid;

tv_spec_div: TcxGridBandedTableView;

tv_spec_div_name_spec: TcxGridBandedColumn;

tv_spec_div_name_div: TcxGridBandedColumn;

tv_spec_div_kind_training: TcxGridBandedColumn;

tv_spec_div_institute: TcxGridBandedColumn;

tv_spec_div_source: TcxGridBandedColumn;

tv_spec_div_d_start: TcxGridBandedColumn;

tv_spec_div_d_end: TcxGridBandedColumn;

tv_spec_div_id_spec_div: TcxGridBandedColumn;

tv_spec_div_id_spec: TcxGridBandedColumn;

tv_spec_div_id_d: TcxGridBandedColumn;

tv_spec_div_idk_training: TcxGridBandedColumn;

tv_spec_div_id_d_institute: TcxGridBandedColumn;

tv_spec_div_id_source: TcxGridBandedColumn;

tv_spec_div_idk_level_formation: TcxGridBandedColumn;

cxGridLevel1: TcxGridLevel;

cxGrid_Ed_Group: TcxGrid;

tv_ed_group: TcxGridBandedTableView;

tv_ed_group_name: TcxGridBandedColumn;

tv_ed_group_kind_group: TcxGridBandedColumn;

tv_ed_group_d_start: TcxGridBandedColumn;

tv_ed_group_d_end: TcxGridBandedColumn;

tv_ed_group_id_ed_group: TcxGridBandedColumn;

tv_ed_group_id_spec_div: TcxGridBandedColumn;

tv_ed_group_idk_group: TcxGridBandedColumn;

tv_ed_group_level_group: TcxGridBandedColumn;

cxGridLevel6: TcxGridLevel;

cxSplitter3: TcxSplitter;

cxTabSheet_Editing: TcxTabSheet;

cxPageControl1: TcxPageControl;

cxTabSheet_Division: TcxTabSheet;

cxGrid_Org_Division: TcxGrid;

tv_Org_Division: TcxGridBandedTableView;

tv_Org_Division_Abbr: TcxGridBandedColumn;

tv_Org_Division_Name: TcxGridBandedColumn;

tv_Org_Division_ID: TcxGridBandedColumn;

cxGrid_Org_Division_Level1: TcxGridLevel;

cxTabSheet_Institutes: TcxTabSheet;

cxGrid_Institutes: TcxGrid;

tv_institutes: TcxGridBandedTableView;

tv_institutes_Abbr: TcxGridBandedColumn;

tv_institutes_Name: TcxGridBandedColumn;

tv_institutes_ID: TcxGridBandedColumn;

cxGridLevel2: TcxGridLevel;

cxTabSheet_Kind_Training: TcxTabSheet;

cxGrid_Kind_Training: TcxGrid;

tv_Kind_Training: TcxGridBandedTableView;

tv_Kind_Training_Name: TcxGridBandedColumn;

tv_Kind_Training_IDK_TRAINING: TcxGridBandedColumn;

cxGridLevel4: TcxGridLevel;

cxTabSheet_K_L_F: TcxTabSheet;

cxGrid_K_L_F: TcxGrid;

tv_klf: TcxGridBandedTableView;

tv_klf_idk_lf: TcxGridBandedColumn;

tv_klf_name: TcxGridBandedColumn;

tv_klf_qualifer: TcxGridBandedColumn;

cxGridLevel3: TcxGridLevel;

cxTabSheet_SF: TcxTabSheet;

cxGrid_Source_Financing: TcxGrid;

tv_Source_Financing: TcxGridBandedTableView;

tv_Source_Financing_Abbreviation: TcxGridBandedColumn;

tv_Source_Financing_Name: TcxGridBandedColumn;

tv_Source_Financing_Abbr_Div: TcxGridBandedColumn;

tv_Source_Financing_Division: TcxGridBandedColumn;

tv_Source_Financing_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_Activity: TcxGridBandedColumn;

tv_Source_Financing_Date_Close: TcxGridBandedColumn;

tv_Source_Financing_ID: TcxGridBandedColumn;

tv_Source_Financing_ID_D: TcxGridBandedColumn;

tv_Source_Financing_ID_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_ID_Activity: TcxGridBandedColumn;

cxGridLevel7: TcxGridLevel;

cxTabSheet_Add: TcxTabSheet;

cxPageControl2: TcxPageControl;

cxTabSheet_Add_Spec: TcxTabSheet;

Panel_New_Spec: TPanel;

cxLabel22: TcxLabel;

cxTextEditNew_Spec_Name: TcxTextEdit;

cxTextEditNew_Spec_Quality: TcxTextEdit;

cxLabel6: TcxLabel;

cxTabSheet_New_Spec_Div: TcxTabSheet;

Panel_New_Spec_Div: TPanel;

cxLabel2: TcxLabel;

cxLabel24: TcxLabel;

cxLabel25: TcxLabel;

cxLabel4: TcxLabel;

cxLabel5: TcxLabel;

cxDateEditNew_Spec_Div_D_Start: TcxDateEdit;

cxDateEditNew_Spec_Div_D_End: TcxDateEdit;

cxPopupEditNew_Spec_Div_Institute: TcxPopupEdit;

cxLabel3: TcxLabel;

cxPopupEditNew_Spec_Div_Div: TcxPopupEdit;

cxPopupEditNew_Spec_Div_Spec: TcxPopupEdit;

cxPopupEditNew_Spec_Div_KT: TcxPopupEdit;

cxLabel8: TcxLabel;

cxPopupEditNew_Spec_Div_SF: TcxPopupEdit;

cxTabSheet_Ed_Group: TcxTabSheet;

Panel_New_Ed_Group: TPanel;

cxLabel12: TcxLabel;

cxTextEdit_New_Ed_Group_Name: TcxTextEdit;

cxLabel14: TcxLabel;

cxDateEdit_New_Ed_Group_D_End: TcxDateEdit;

cxDateEdit_New_Ed_Group_D_Start: TcxDateEdit;

cxLabel15: TcxLabel;

Panel_SD_Params: TPanel;

cxPageControl3: TcxPageControl;

cxTabSheet1: TcxTabSheet;

cxTabSheet2: TcxTabSheet;

cxGrid_Commission: TcxGrid;

TTree_Commission: TcxGridBandedTableView;

Tree_Commission_Order: TcxGridBandedColumn;

Tree_Commission_Kind: TcxGridBandedColumn;

Tree_Commission_Start: TcxGridBandedColumn;

Tree_Commission_End: TcxGridBandedColumn;

Tree_Commission_ID_Paragraph: TcxGridBandedColumn;

Tree_Commission_ID_Spec: TcxGridBandedColumn;

Tree_Commission_ID_D: TcxGridBandedColumn;

Tree_Commission_ID_Order: TcxGridBandedColumn;

cxGrid_Commission_Level5: TcxGridLevel;

cxTabSheet_New_Sommission: TcxTabSheet;

Panel_New_Commission: TPanel;

cxLabel7: TcxLabel;

cxLabel9: TcxLabel;

DateEdit_New_Commission_End: TcxDateEdit;

DateEdit_New_Commission_Start: TcxDateEdit;

cxLabel10: TcxLabel;

ButtonEdit_New_Commission: TcxButtonEdit;

Tree_Commission_IDK_Order: TcxGridBandedColumn;

Tree_Commission_Status_Order: TcxGridBandedColumn;

Tree_Commission_ID_MT: TcxGridBandedColumn;

Tree_Commission_ID_MO: TcxGridBandedColumn;

Tree_Commission_ID_ERP: TcxGridBandedColumn;

Tree_Commission_User: TcxGridBandedColumn;

Action_New_Commission: TAction;

Action_Insert_New_Commission: TAction;

Tree_Commission_ID: TcxGridBandedColumn;

Tree_Commission_ID_Kind: TcxGridBandedColumn;

cxGrid_Members: TcxGrid;

TTree_Members: TcxGridBandedTableView;

Tree_Members_Order: TcxGridBandedColumn;

Tree_Members_Kind: TcxGridBandedColumn;

Tree_Members_Start: TcxGridBandedColumn;

Tree_Members_End: TcxGridBandedColumn;

Tree_Members_User: TcxGridBandedColumn;

Tree_Members_ID_Paragraph: TcxGridBandedColumn;

Tree_Members_ID_Order: TcxGridBandedColumn;

Tree_Members_IDK_Order: TcxGridBandedColumn;

Tree_Members_Status_Order: TcxGridBandedColumn;

Tree_Members_ID_MT: TcxGridBandedColumn;

Tree_Members_ID_MO: TcxGridBandedColumn;

Tree_Members_ID_ERP: TcxGridBandedColumn;

Tree_Members_ID_Commission: TcxGridBandedColumn;

cxGrid_Members_Level1: TcxGridLevel;

Tree_Members_Post: TcxGridBandedColumn;

Tree_Members_FIO: TcxGridBandedColumn;

Tree_Members_ID_Post: TcxGridBandedColumn;

Tree_Members_ID_E: TcxGridBandedColumn;

cxSplitter2: TcxSplitter;

cxTabSheet_New_Member: TcxTabSheet;

Panel_New_Member: TPanel;

cxLabel11: TcxLabel;

cxLabel13: TcxLabel;

DateEdit_New_Member_End: TcxDateEdit;

DateEdit_New_Member_Start: TcxDateEdit;

cxLabel16: TcxLabel;

ButtonEdit_New_Member: TcxButtonEdit;

cxLabel17: TcxLabel;

cxGrid_Post: TcxGrid;

TTree_Post: TcxGridBandedTableView;

Tree_Post_Name: TcxGridBandedColumn;

Tree_Post_ID: TcxGridBandedColumn;

cxGrid_Post_Level1: TcxGridLevel;

PopupEdit_New_Member_Post: TcxPopupEdit;

Action_New_Member: TAction;

Tree_Members_ID: TcxGridBandedColumn;

cxLabel18: TcxLabel;

PopupEdit_New_Member_FIO: TcxPopupEdit;

Action_Insert_New_Member: TAction;

procedure FormDestroy(Sender: TObject);

procedure Action_Insert_Spec_DivExecute(Sender: TObject);

procedure Action_Insert_SpecExecute(Sender: TObject);

procedure Fill_tv_specExecute(Sender: TObject);

procedure PageControl_MainPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

procedure Fill_tv_spec_divExecute(Sender: TObject);

procedure Fill_tv_intitutesExecute(Sender: TObject);

procedure Fill_tv_kind_trainingExecute(Sender: TObject);

procedure Fill_tv_k_l_fExecute(Sender: TObject);

procedure Fill_tv_org_divExecute(Sender: TObject);

procedure Fill_tv_source_finansingExecute(Sender: TObject);

procedure tv_spec_div_institutePropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_name_divPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_name_specPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_kind_trainingPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_sourcePropertiesInitPopup(Sender: TObject);

procedure PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(Sender: TObject);

procedure Action_Insert_Ed_GroupExecute(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(

Sender: TObject);

procedure tv_SpecSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_SpecEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_spec_divSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_spec_divEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_ed_groupSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_ed_groupEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure FormShow(Sender: TObject);

procedure tv_SpecMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure tv_SpecKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure tv_ed_groupKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure tv_ed_groupMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure tv_spec_divKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure tv_spec_divMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure PopupEdit_Filter_OrgPropertiesEditValueChanged(Sender: TObject);

procedure Action_New_CommissionExecute(Sender: TObject);

procedure cxPageControl3Change(Sender: TObject);

procedure Action_Insert_New_CommissionExecute(Sender: TObject);

procedure Action_New_MemberExecute(Sender: TObject);

procedure Action_Insert_New_MemberExecute(Sender: TObject);

private

{ Private declarations }

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

REdit_Spec: boolean;

{ Доступность редактирования учебных групп, сроков проведения и плана ПК }

REdit_Groups: boolean;

{ Объект для работы со списками }

FSqlData_TableView: TSqlData_cxGridTableView;

{ Путь реестра (для загрузки/сохранения параметров) }

Curr_Reg_Path: String;

{ Контейнеры оберток }

cW_Institute_Filter, cW_New_Spec, cW_New_Ed_Group, cW_New_Spec_Div

, cW_New_Commission, cw_New_Member: TContainerWrappers;

{ Форма поиска человека }

Current_Form_SE: TForm_SE;

{ Обработчики событий изменения в контейнерах оберток }

procedure DoChanged_cW_New_Spec(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Spec_Div(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Ed_Group(AWrapper: TCustomEditWrapper);

procedure Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;

ARecordIndex: Integer; var ExchangeParameters: OleVariant);

{ Смена записи в tv_spec_div }

procedure OnChoiceGridRecord_tv_spec_div(Sender: TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);

{ Установка доступности добавления }

procedure Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);

{ Установка доступности редактирования таблицы (с документом) }

function Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

ID_ERP_Column: TcxGridColumn; Roles: array of boolean): boolean; overload;

{ Установка доступности редактирования таблицы (без документа) }

function Allow_Editing(TV: TcxCustomGridTableView; Roles: array of boolean): boolean; overload;

{ Установка доступности удаления из таблицы (с документом) }

procedure Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

ID_ERP_Column: TcxGridColumn; Roles: array of boolean); overload;

{ Установка доступности удаления из таблицы (без документа) }

procedure Allow_Delete(TV: TcxCustomGridTableView; Roles: array of boolean); overload;

{ Сохранение/восстановление параметров списков }

procedure Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);

public

{ Public declarations }

{ Инициализация формы }

procedure Init(AReg_Path: String = Reg_Path; AForm_SE: TForm_SE = nil);

{ Обновить роли }

procedure Refresh_Roles;

{ Проверка доступности ко всей форме без создания ее самой }

class function IsRoleAccessible: Boolean;

end;

var

Form_Dictionaries: TForm_Dictionaries;

implementation

{$R *.dfm}

uses SysServices, Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;

{ Сохранение/восстановление параметров списков }

procedure TForm_Dictionaries.Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);

begin

cxPropertiesStore1.StorageName:=RReg_Path+'\Общие параметры';

if PIs_Load

{ Восстановление параметров }

then begin // 1

{ Восстановим общие параметры }

cxPropertiesStore1.RestoreFrom;

{ Восстановим значения фильтра по институтам }

if PopupEdit_Filter_Org.Tag <> 0

then begin // 2

cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value := IntToStr(PopupEdit_Filter_Org.Tag);

cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := PopupEdit_Filter_Org.Text;

end // 2

else begin // 3

cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value := '';

cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := '';

end; // 3

end // 1

{ Сохранение параметров }

else begin // 4

{ Сохраним значения фильтра по институтам }

if VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value) <> ''

then begin // 5

PopupEdit_Filter_Org.Tag := StrToInt(VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value));

PopupEdit_Filter_Org.Text := VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay);

end // 5

else begin // 6

PopupEdit_Filter_Org.Tag := 0;

PopupEdit_Filter_Org.Text := '';

end; // 6

{ Сохраним общие параметры }

cxPropertiesStore1.StoreTo(True);

end; // 4

{ Сохранение или загрузки параметров списков (в зависимости от параметра PIs_Load) }

Restore_cxGridTableView(tv_spec, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec).Table_Name);

Restore_cxGridTableView(tv_spec_div, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec_div).Table_Name);

Restore_cxGridTableView(tv_ed_group, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_ed_group).Table_Name);

Restore_cxGridTableView(tv_Org_Division, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Org_Division).Table_Name);

Restore_cxGridTableView(tv_institutes, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_institutes).Table_Name);

Restore_cxGridTableView(tv_Kind_Training, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Kind_Training).Table_Name);

Restore_cxGridTableView(tv_klf, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_klf).Table_Name);

Restore_cxGridTableView(tv_Source_Financing, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_Source_Financing).Table_Name);

Restore_cxGridTableView(TTree_Commission, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(TTree_Commission).Table_Name);

end;

{ Проверка доступности ко всей форме без создания ее самой! }

class function TForm_Dictionaries.IsRoleAccessible: Boolean;

begin

Result := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Spec)

or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups)

or vnSessionAgent.IsDBA;

end;

{ Проверка прав }

procedure TForm_Dictionaries.Refresh_Roles;

var DBA: boolean;

begin

{ Проверка наличия ролей }

DBA := vnSessionAgent.IsDBA;

REdit_Spec := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Spec) or DBA;

REdit_Groups := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups) or DBA;

if PageControl_Main.ActivePageIndex = 1

then cxPageControl3Change(cxPageControl3);

end;

{ Установка доступности добавления }

procedure TForm_Dictionaries.Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

if (FSqlData_TableView <> nil) and (Length(Roles) > 0)

then begin // 1

if not FSqlData_TableView.IsFirstRead

then begin // 2

Allow := False;

for i := 0 to Length(Roles) - 1

do Allow := Allow or Roles[i];

FSqlData_TableView.ActionInsert.Enabled := Allow;

end // 2

else FSqlData_TableView.ActionInsert.Enabled := False;

end; // 1

end;

{ Установка доступности редактирования таблицы (с документом) }

function TForm_Dictionaries.Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

ID_ERP_Column: TcxGridColumn; Roles: array of boolean): boolean;

var status, id_erp: string;

i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

if (FSqlData_TableView <> nil) and (Length(Roles) > 0)

then begin // 1

if (TV.DataController.FocusedRecordIndex <> -1)

then begin // 2

status := VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex

,Status_Column.Index]);

id_erp := VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex

,ID_ERP_Column.Index]);

Allow := False;

for i := 0 to Length(Roles) - 1

do Allow := Allow or Roles[i];

Result := (status = '2') and (id_erp = vnSessionAgent.ID_ERP_User) and Allow;

end // 2

else Result := False;

end; // 1

end;

{ Установка доступности редактирования таблицы (без документа) }

function TForm_Dictionaries.Allow_Editing(TV: TcxCustomGridTableView; Roles: array of boolean): boolean;

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

if (FSqlData_TableView <> nil) and (Length(Roles) > 0)

then begin // 1

Allow := False;

for i := 0 to Length(Roles) - 1

do Allow := Allow or Roles[i];

Result := (TV.DataController.FocusedRecordIndex <> -1) and Allow;

end // 1

else Result := False;

end;

{ Установка доступности удаления из таблицы (с документом) }

procedure TForm_Dictionaries.Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

ID_ERP_Column: TcxGridColumn; Roles: array of boolean);

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

if (FSqlData_TableView <> nil) and (Length(Roles) > 0)

then begin // 1

Allow := False;

for i := 0 to Length(Roles) - 1

do Allow := Allow or Roles[i];

FSqlData_TableView.ActionDelete.Enabled := Is_Value(Status_Column, '2', false)

and Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User, false)

and (TV.Controller.SelectedRecordCount > 0) and Allow;

end; // 1

end;

{ Установка доступности удаления из таблицы (без документа) }


Подобные документы

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

    дипломная работа [2,2 M], добавлен 15.10.2013

  • Визуальная разработка приложений баз данных. Характеристика визуальных компонентов среды разработки Builder 6.0, используемых в данном приложении. Программная реализация приложения, разработка форм и вкладок. Тестирование приложения, листинг программы.

    курсовая работа [3,1 M], добавлен 28.03.2011

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

    дипломная работа [1,4 M], добавлен 03.06.2014

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

    курсовая работа [949,7 K], добавлен 22.02.2015

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

    дипломная работа [2,3 M], добавлен 19.11.2010

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

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

    курсовая работа [395,4 K], добавлен 28.04.2015

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

    дипломная работа [2,5 M], добавлен 05.02.2017

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

    курсовая работа [352,0 K], добавлен 24.08.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.