Разработка модуля поддержки процессов организации повышения квалификации преподавателей в рамках АСУ МИИТ
Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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