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

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

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

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

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

OptionsOrder.Column_Status_Text := tv_plan_status_text;

OptionsOrder.Column_ID_order := tv_plan_id_order;

OptionsOrder.Column_ID_paragraph := tv_plan_id_paragraph;

OptionsOrder.Column_IDk_order := tv_plan_idk_order;

OptionsOrder.Column_Status_Order := tv_plan_status_order;

OptionsOrder.Column_ID_erp_user := tv_plan_id_erp_user;

OptionsOrder.Column_hisdate := tv_plan_hisdate;

OptionsOrder.Column_summary := tv_plan_summary;

OptionsOrder.Column_note := tv_plan_note;

OptionsOrder.Column_d_creation := tv_plan_d_creation;

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

// Программы обучения в испорте

with TSqlData_cxGridTableView.Create(tv_Spec) do

begin

Editing := False;

Table_Name := tv_Spec.Bands.Items[0].Caption;

GUID_Select := Get_List_Spec_By_Params;

StepOnTopDataRecordMode := True;

ParametersCount := 2;

Parameters[1] := IDK_Level_Spec;

with Select_Columns do

begin

Add(tv_Spec_Name, 2);

Add(tv_Spec_Q, 1);

Add(tv_Spec_ID, 0);

Add(tv_Spec_IDK_Level_Spec, 6);

Add(tv_Spec_id_discipline);

Add(tv_Spec_idk_discipline);

end;

Key_Columns.Add(tv_Spec_ID, 0);

Stat_Column := tv_Spec_Name;

NameColumnsForPopupEdit.Add(tv_Spec_Name);

cW_New_Spec := TContainerWrappers.Create;

cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name, True, False, '');

cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Quality, False, False, '');

end;

// Вид обучения

with TSqlData_cxGridTableView.Create(tv_Kind_Training) do

begin

Editing := False;

Table_Name := 'Виды обучения';

GUID_Select := Kind_Training;

StepOnTopDataRecordMode := True;

Single := False;

with Select_Columns do

begin

Add(tv_Kind_Training_IDK_TRAINING);

Add(tv_Kind_Training_Name);

end;

Key_Columns.Add(tv_Kind_Training_IDK_TRAINING);

Stat_Column := tv_Kind_Training_Name;

NameColumnForPopupEdit := tv_Kind_Training_Name;

end;

// ---------------------------------------------

// добавление подразделение-организаторов обучения

// ---------------------------------------------

if Get_SqlData_cxGrid(tv_Org_Division) = nil then

with TSqlData_cxGridTableView.Create(tv_Org_Division) do

begin

Table_Name := 'Организаторы обучения';

Editing := False;

GUID_Select := Get_List_Divisions;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec]);

Select_Columns.Add(tv_Org_Division_Abbr);

Select_Columns.Add(tv_Org_Division_Name);

Select_Columns.Add(tv_Org_Division_ID);

Key_Columns.Add(tv_Org_Division_ID);

Stat_Column := tv_Org_Division_Abbr;

NameColumnsForPopupEdit.Add(tv_Org_Division_Abbr);

NameColumnsForPopupEdit.Add(tv_Org_Division_Name);

cW_New_Spec_Div := TContainerWrappers.Create;

cW_New_Spec_Div.AddCustomEdit(DateEditNew_Spec_Div_D_Start, True, False, '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Spec, True, False,

cxGrid_Spec, tv_Spec, tv_Spec_ID, [tv_Spec_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_KT, True, False,

cxGrid_Kind_Training, tv_Kind_Training, tv_Kind_Training_IDK_TRAINING,

[tv_Kind_Training_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_SF, True, False,

cxGrid_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,

[tv_Source_Financing_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Institute, True, False,

cxGrid_Org_Division, tv_Org_Division, tv_Org_Division_ID,

[tv_Org_Division_Abbr, tv_Org_Division_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Div, True, False,

cxGrid_Org_Division, tv_Org_Division, tv_Org_Division_ID,

[tv_Org_Division_Abbr, tv_Org_Division_Name], '');

cW_New_Spec_Div.MakeSynchronize_Similar([PopupEditNew_Spec_Div_Institute,

PopupEditNew_Spec_Div_Institute], False);

cW_New_Spec_Div.OnChangeWrapper := DoChanged_cW_Spec_Div;

end;

// ---------------------------------------------

// добавление подразделение-организаторов обучения

// ---------------------------------------------

if Get_SqlData_cxGrid(TTree_Stat) = nil then

with TSqlData_cxGridTableView.Create(TTree_Stat) do

begin

Table_Name := TTree_Stat.Bands.Items[0].Caption;

Editing := False;

GUID_Select := Get_Stat_Data_By_Period;

StepOnTopDataRecordMode := True;

ParametersCount := 2;

Select_Columns.Add(Tree_Stat_Inst);

Select_Columns.Add(Tree_Stat_Spec_Name);

Select_Columns.Add(Tree_Stat_FIO);

Select_Columns.Add(Tree_Stat_EG);

Select_Columns.Add(Tree_Stat_D_Start);

Select_Columns.Add(Tree_Stat_D_End);

Select_Columns.Add(Tree_Stat_Order_Start);

Select_Columns.Add(Tree_Stat_Order_End);

Select_Columns.Add(Tree_Stat_Contract);

Select_Columns.Add(Tree_Stat_Org);

Select_Columns.Add(Tree_Stat_Money);

Select_Columns.Add(Tree_Stat_Money_NDS);

Select_Columns.Add(Tree_Stat_Cert);

Select_Columns.Add(Tree_Stat_Hours_Fact);

Select_Columns.Add(Tree_Stat_Hours_Plan);

Select_Columns.Add(Tree_Stat_Last_Date);

Select_Columns.Add(Tree_Stat_Contract_Main);

Select_Columns.Add(Tree_Stat_Org_Main);

Select_Columns.Add(Tree_Stat_ID_E);

Select_Columns.Add(Tree_Stat_ID_C);

Select_Columns.Add(Tree_Stat_ID_Student);

Select_Columns.Add(Tree_Stat_ID_EG);

Key_Columns.Add(Tree_Stat_ID_E);

Key_Columns.Add(Tree_Stat_ID_Student);

Stat_Column := Tree_Stat_FIO;

ActionUpdate.OnExecute := Action_Read_Stat.OnExecute;

Cont_Stat := TContainerWrappers.Create;

Cont_Stat.AddCustomEdit(DateEdit_Stat_Begin, False, False);

Cont_Stat.AddCustomEdit(DateEdit_Stat_End, False, False);

end;

if Get_SqlData_cxGrid(TTree_MC) = nil then

with TSqlData_cxGridTableView.Create(TTree_MC) do

begin

Single := False;

Table_Name := TTree_MC.Bands.Items[0].Caption;

Row_Name := 'рамочный договор';

GUID_Select := Get_List_MC;

GUID_Update := d_P_CONTRACTS;

GUID_Delete := GUID_Delete_Main_Contract;

OnBefore_Delete_Exchange := Delete_Main_Contract;

StepOnTopDataRecordMode := True;

ParametersCount := 3;

Stat_Column := Tree_MC_Org;

with Select_Columns do

begin

Add(Tree_MC_Org, 2);

Add(Tree_MC_Kind);

Add(Tree_MC_Hisdate);

Add(Tree_MC_Start, 3);

Add(Tree_MC_End, 4);

Add(Tree_MC_Count);

Add(Tree_MC_Order);

Add(Tree_MC_Number);

Add(Tree_MC_Old_Number);

Add(Tree_MC_User);

Add(Tree_MC_ID_Contract, 0);

Add(Tree_MC_ID_CA, 2);

Add(Tree_MC_ID_MT);

Add(Tree_MC_ID_MO);

Add(Tree_MC_ID_Paragraph);

Add(Tree_MC_ID_Order);

Add(Tree_MC_IDK_Order);

Add(Tree_MC_ID_ERP);

Add(Tree_MC_ID_Status);

end;

Key_Columns.Add(Tree_MC_ID_Contract, 0);

OptionsOrder.Column_Status_Text := Tree_MC_Order;

OptionsOrder.Column_identifier := Tree_MC_Number;

OptionsOrder.Column_ID_order := Tree_MC_ID_Order;

OptionsOrder.Column_ID_paragraph := Tree_MC_ID_Paragraph;

OptionsOrder.Column_IDk_order := Tree_MC_IDK_Order;

OptionsOrder.Column_ID_erp_user := Tree_MC_ID_ERP;

OptionsOrder.Column_User_Name := Tree_MC_User;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_New_MC.OnExecute;

PopupActions.Add(Action_New_MC);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

{cxPopupEdit_New_Listener_Contract_Organization.Properties.PopupControl :=

Current_Form_Find_Org;}

TcxPopupEditProperties(Tree_MC_Org.Properties).PopupControl := Current_Form_Find_Org;

with PopupColumnsList.Add(Tree_MC_Org) do

begin

SelfKeyColumn := Tree_MC_ID_CA;

PopupKeyColumn := Current_Form_Find_Org.Tree_Org_ID_CA;

PopupNameColumn := Current_Form_Find_Org.Tree_Org_Name;

end;

PopupEdit_Filter_Org.Properties.PopupControl := Current_Form_Find_Org;

cw_Filter_Contracts_Main := TContainerWrappers.Create;

cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_Start, False, False);

cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_End, False, False);

cw_Filter_Contracts_Main.AddPopupEdit(PopupEdit_Filter_Org

, False, False, Current_Form_Find_Org.cxGrid_Org

, Current_Form_Find_Org.TTree_Org, Current_Form_Find_Org.Tree_Org_ID_CA

, [Current_Form_Find_Org.Tree_Org_Name], '');

if PageControl_Main.ActivePageIndex = 3

then Filter_MC_Changed(DateEdit_Filter_Start);

end;

// ---------------------------------------------

DateEdit_New_Contract_Main_Start.Date := Date;

DateEdit_New_Contract_Main_End.Date := Date;

if cw_New_Contract_Main = nil

then

begin

PopupEdit_New_Contract_Main.Properties.PopupControl := Current_Form_Find_Org;

cw_New_Contract_Main := TContainerWrappers.Create;

cw_New_Contract_Main.AddPopupEdit(PopupEdit_New_Contract_Main

, True, False

, Current_Form_Find_Org.cxGrid_Org

, Current_Form_Find_Org.TTree_Org

, Current_Form_Find_Org.Tree_Org_ID_CA

, [Current_Form_Find_Org.Tree_Org_Name], '');

cw_New_Contract_Main.AddButtonOrderEdit(ButtonEdit_New_Contract_Main

, True, False, '', ['24790']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

, [nil, nil, nil, nil]);

cw_New_Contract_Main.AddCustomEdit(TextEdit_New_Contract_Main, False, False, '');

cw_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_Start, True, False, '');

cw_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_End, False, False, '');

cw_New_Contract_Main.ActionEnter := Action_Insert_Contract_Main;

end;

{ Скрываем ненужные страницы }

cxTabSheet_Editing.TabVisible := False;

cxTabSheet_Add.TabVisible := False;

{ Прочитаем параметры из реестра }

Save_Restore_Params(Curr_Reg_Path, True);

// *****************************************************************************

// *****************************************************************************

cW_Plan_Filters := TContainerWrappers.Create;

cW_Plan_Filters.AddCustomEdit(cxSpinEdit_Plan_Filters_Year, False, False, '');

cW_Plan_Filters.AddPopupEdit(cxPopupEdit_Plan_Filters_Plan, False, False,

cxGrid_Plan, tv_plan, tv_plan_id_paragraph, [tv_plan_note], '');

cW_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Summary, False, True,

'');

cW_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Note, False, True, '');

cW_Plan_Filters.ActionApply := Plan_Apply;

cW_Plan_Filters.ActionRefuse := Plan_Refuse;

cW_Plan_Filters.OnChangeWrapper := DoChanged_cW_Plan_Filters;

{ Устанавливаем значение фильтра }

cW_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year].Value := IntToStr

(YearOf(Date));

if cxPopupEdit_Plan_Filters_Plan.Tag <> 0

then begin

cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value :=

VarToStr(cxPopupEdit_Plan_Filters_Plan.Tag);

cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay :=

VarToStr(cxPopupEdit_Plan_Filters_Plan.Text);

end;

end;

{ Добавление организатора (специальности подразделения)}

procedure TForm_Event.ButtonEdit_Import_Spec_DivClick(Sender: TObject);

var

mf: TSForm;

i: Integer;

begin

try // 1

mf := CreateSForm(self, 'fNew_Spec_Div', TabSheet_New_Spec_Div.Caption,

Add_Path + TabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div, tdb_Apply);

cW_New_Spec_Div.ClearWrappers;

cW_New_Spec_Div.wrappers[ DateEditNew_Spec_Div_D_Start].Value :=

cW_Import.wrappers[DateEdit_Import_Start].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].Value :=

cW_Import.wrappers[PopupEdit_Import_Spec].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].ValueDisplay :=

cW_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay;

// Институт

if id_d_import <> ''

then

begin

Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;

i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]

, CreateVarAr([id_d_import]));

if i >= 0

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value :=

VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_ID.Index]);

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay :=

VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_Abbr.Index]);

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay;

end;

if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] <> id_d_import

then

begin

Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] := id_d_import;

Get_SqlData_cxGrid(tv_Source_Financing).Read_Data;

if tv_Source_Financing.DataController.RecordCount = 1

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].Value :=

VarToStr(tv_Source_Financing.DataController.Values[0, tv_Source_Financing_ID.Index]);

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].ValueDisplay :=

VarToStr(tv_Source_Financing.DataController.Values[0, tv_Source_Financing_Name.Index]);

end;

end;

end;

// Кафедра

if id_d_kaf <> ''

then

begin

Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;

i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]

, CreateVarAr([id_d_kaf]));

if i >= 0

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=

VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_ID.Index]);

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=

VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_Name.Index]);

end;

end;

mf.Position := poScreenCenter;

if mf.ShowModal = mrok then

begin // 2

if Get_SqlData_cxGrid(tv_spec_div_popup).Insert_New(

CreateVarAr([VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Spec].Value)

, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Div].Value)

, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_KT].Value)

, VarToStr(cW_New_Spec_Div.Wrappers[DateEditNew_Spec_Div_D_Start].Value)

, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Institute].Value)

, '70508' // уровень образования

, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_SF].Value)]))

then

begin // 3

i := tv_spec_div_popup.DataController.Values

[tv_spec_div_popup.DataController.FocusedRecordIndex, tv_spec_div_popup_id_spec_div.Index];

Get_SqlData_cxGrid(tv_spec_div_popup).Read_Data;

i := FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]

, CreateVarAr([IntToStr(i)]));

if i >= 0

then

begin

cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value := VarToStr

(tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_id_spec_div.Index]);

cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay := VarToStr

(tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_institute.Index])

+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_name_div.Index]))

+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_name_spec.Index]))

+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_kind_training.Index]));

end;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] <> ''

then

begin

Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] := '';

Get_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;

end;

end; // 1

end;

{ Добавление УМК}

procedure TForm_Event.ButtonEdit_Import_UMKClick(Sender: TObject);

var

mf: TSForm;

i: Integer;

begin

try // 1

mf := CreateSForm(self, 'fNew_UMK', TabSheet_New_UMK.Caption,

Add_Path + TabSheet_New_UMK.Caption, Panel_New_UMK, tdb_Apply);

mf.Position := poScreenCenter;

cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value := Import_Hours;

cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value := Import_Hours_SR;

if mf.ShowModal = mrok then

begin // 2

if MSystemServices.ExchangeData(Create_UMK_By_ID_SD

,CreateVarAr([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)

, VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value)

, VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value)])

, 'Не смогли добавить методический комплекс.')

then

begin // 3

FSqlData_TableView.Read_Data;

i := FindGridRecordIndex(tv_com_spec, [tv_com_spec_id_spec_div],

VarArrayOf([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)]));

if i >= 0 then

begin

cW_Import.wrappers[PopupEdit_Import_UMK].Value := VarToStr

(tv_com_spec.DataController.Values[i, tv_com_spec_id_met_complex.Index]);

cW_Import.wrappers[PopupEdit_Import_UMK].ValueDisplay := VarToStr

(tv_com_spec.DataController.Values[i, tv_com_spec_hours.Index])

+ ', ' + VarToStr(VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_sam.Index])

+ ', ' + VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_name_spec.Index])

+ ', ' + tv_com_spec.DataController.Values[i, tv_com_spec_name_div.Index])

+ ', ' + VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_kind_training.Index])

end;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

end; // 1

end;

{ Выбрали журнал - узнаем рег.номер}

procedure TForm_Event.ButtonEdit_New_CertPropertiesEditValueChanged(

Sender: TObject);

var i: integer; data: olevariant;

begin

if ((Sender = ButtonEdit_New_Cert) or (Sender = PopupEdit_New_Cert_Kind_Doc))

and (Cont_Make_Cert <> nil)

and (VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value) <> '')

then begin

data := MSystemServices.SelectData(Get_Reg_Number_By_ID_Paragraph

, CreateVarAr([VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value)

, VarToStr(Cont_Make_Cert.Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)])

, i, 'Не смогли узнать регистрационный номер в журнале.');

if VarIsArray(data)

then

begin

if VarToStr(data[0][0]) = ''

then Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value := 1

else Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value := VarToStr(data[0][0] + 1);

if VarToStr(data[0][1]) = ''

then Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value := 1

else Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value := VarToStr(data[0][1] + 1);

end;

end;

end;

procedure TForm_Event.cxButtonEdit_PC_Create_DirectionClick(Sender: TObject);

begin

Action_Insert_New_DirectionExecute(self);

end;

procedure TForm_Event.

cxDateEdit_New_Listener_Contract_D_EndPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value;

end;

procedure TForm_Event.

cxDateEdit_New_Listener_Contract_D_StartPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value;

end;

procedure TForm_Event.cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;

end;

procedure TForm_Event.cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;

end;

procedure TForm_Event.cxPageControl_StudentPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

begin

if NewPage = cxTabSheet_Orders then

Fill_tv_ordersExecute(self);

if NewPage = cxTabSheet_Anketa then

Fill_AnketaExecute(self);

if NewPage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

if NewPage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;

end;

procedure TForm_Event.cxPopupEdit_KBA_EndPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_kba_endExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_DirectionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_directionExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Contract_Source_FinansingPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_source_finansingExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Ed_GroupPropertiesEditValueChanged(Sender: TObject);

begin

if VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group]

.Value) <> '' then

begin // 1

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr

(tv_r_c_groups.DataController.Values

[tv_r_c_groups.DataController.FocusedRecordIndex,

tv_r_c_groups_d_start.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr

(tv_r_c_groups.DataController.Values

[tv_r_c_groups.DataController.FocusedRecordIndex,

tv_r_c_groups_d_end.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;

end // 1

else

begin // 2

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := '';

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := '';

end; // 2

end;

procedure TForm_Event.cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_r_c_groupsExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Kind_Basis_ActionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kba_startExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_orderExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged

(Sender: TObject);

begin

if not cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order].IsClear then

begin // 1

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

VarToStr(tv_contracts.DataController.Values

[tv_contracts.DataController.FocusedRecordIndex,

tv_contracts_d_start.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

VarToStr(tv_contracts.DataController.Values

[tv_contracts.DataController.FocusedRecordIndex,

tv_contracts_d_end.Index]);

end; // 1

end;

procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_contractsExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_ed_groupExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_com_specExecute(Sender);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_spec_div_popupExecute(self);

end;

procedure TForm_Event.cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_directionExecute(self);

end;

procedure TForm_Event.cxPopupEdit_PC_PostPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_postsExecute(self);

end;

procedure TForm_Event.cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_planExecute(self);

end;

procedure TForm_Event.DoChanged_cW_New_R_C_Plan(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_R_C_Plan, cW_New_R_C_Plan.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_New_R_C_Group(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_R_C_Group,

cW_New_R_C_Group.IsNotEmptyMandatory);

end;

{ Заполнение полей ввода при импорте из файла}

procedure TForm_Event.Action_After_Show_New_AnketaExecute(Sender: TObject);

begin

with Form_Anketa_For_New do

begin

if curr_sex = '1'

then SEX.ItemIndex := 0

else SEX.ItemIndex := 1;

SURNAME.Text := curr_surname;

ENAME.Text := curr_name;

PATRONYMIC.Text := curr_patronymic;

cxTextEditPhone_.Text := curr_phone;

cxTextEditEmail_.Text := curr_email;

DATE_OF_BIRTH.Date := StrToDate(curr_birthday);

CIT_D_START.Date := StrToDate(curr_birthday);

AnyPersEditValueChanged(DATE_OF_BIRTH);

if ID_E <> ''

then Form_Anketa_For_New.ModalResult := mryes;

end;

end;

{ Выставление новых начислений}

procedure TForm_Event.Action_Create_NachExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'

, TabSheet_New_Nach.Caption

, Add_Path + TabSheet_New_Nach.Caption, Panel_New_Nach, tdb_Apply);

{ Устанавливаем значение по умолчанию }

new_form.Position := poScreenCenter;

new_form.PanelButtons.auto_cxOkButton.Action := Cont_New_Nach.ActionEnter;

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

{ Выставление новых начислений по выделенным договорам}

procedure TForm_Event.Action_Create_Nach_AllExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'

, TabSheet_Create_Nach_All.Caption

, Add_Path + TabSheet_Create_Nach_All.Caption, Panel_Create_Nach_All, tdb_Apply);

{ Устанавливаем значение по умолчанию }

new_form.Position := poScreenCenter;

new_form.PanelButtons.auto_cxOkButton.Action := Cont_New_Nach_All.ActionEnter;

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

{ Выставление новых начислений по выделенным участникам }

procedure TForm_Event.Action_Go_Nach_AllExecute(Sender: TObject);

var L: TIntegerList; i: integer;

begin

with Get_SqlData_cxGrid(tv_listeners), Cont_New_Nach_All do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

for i := 0 to L.Count - 1 do

MSystemServices.ExchangeData(Create_New_Nach

, CreateVarAr([VarToStr(GridTableView.DataController.

Values[L.Items[i], tv_listeners_id_contract.Index])

, VarToStr(Wrappers[DateEdit_Create_Nach_All].Value)

, VarToStr(Wrappers[ButtonEdit_Create_Nach_All].Value)]));

MSystemServices.EndSequenceActions;

Read_Data;

HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат работы', 'Начисления сформированы.');

end;

end;

procedure TForm_Event.Action_Add_ContractExecute(Sender: TObject);

const

Name = 'Участники';

var

mf: TSForm;

id_o, id_p, def_Ann, def_Basis, def_Note, def_Ass, NewContextIndex, IDk_List,

k_List_Name, ko_ID_Metaterm, kind_order, def_Ident, def_IdenDate,

ID_Period_Nubbering, id_NewSeries, NewSeries: WideString;

ks: TStringList;

ok: Boolean;

DC: TcxDataController;

FRI: Integer;

begin

ok := False;

try // 1

mf := CreateSForm(self, 'fNew_Listeners', 'Договор', Add_Path + Name,

Panel_New_Listener, tdb_Apply);

StudentElementsEnabled(False);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]

.Value := VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_source.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]

.ValueDisplay := VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_source.Index]);

DC := tv_listeners.DataController;

FRI := tv_listeners.DataController.FocusedRecordIndex;

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].Value := VarToStr

(DC.Values[FRI, tv_listeners_id_e.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].ValueDisplay :=

VarToStr(DC.Values[FRI, tv_listeners_fio.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value :=

VarToStr(DC.Values[FRI, tv_listeners_id_ed_group.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].ValueDisplay :=

VarToStr(DC.Values[FRI, tv_listeners_ed_group.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr

(DC.Values[FRI, tv_listeners_d_start.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr

(DC.Values[FRI, tv_listeners_d_end_plan.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

.Value := VarToStr(DC.Values[FRI,

tv_listeners_idkba_transfer.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

.ValueDisplay := VarToStr(DC.Values[FRI,

tv_listeners_kind_basis_action.Index]);

cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start].Value :=

VarToStr(DC.Values[FRI, tv_listeners_id_paragraph_start.Index]);

cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start]

.ValueDisplay := VarToStr(DC.Values[FRI,

tv_listeners_status_text_order_start.Index]);

cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]

.Value := VarToStr(tv_r_c_plan.DataController.GetValue

(tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_money.Index));

cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]

.ValueDisplay := tv_r_c_plan.DataController.GetDisplayText

(tv_r_c_plan.DataController.FocusedRecordIndex, tv_r_c_plan_money.Index);

cW_New_Listener.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

if (VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]

.Value) <> '') and (cxPopupEdit_New_Listener_Order.Enabled) and

(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]

.Value) = '') then

begin // 3

kind_order := VarToStr(cW_New_Listener.wrappers

[cxPopupEdit_New_Listener_Kind_Order].Value);

ks := TStringList.Create;

ks.Add(kind_order);

id_o := vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,

def_Ass, NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm, '',

False);

if id_o = EmptyWideStr then

begin // 4

ks.Free;

exit;

end; // 4

id_p := vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,

def_Ass, NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm,

id_o, False);

ks.Free;

if id_p = EmptyWideStr then

exit;

// отправить на подпись.

vnListAgent.LA_Send_Signature(id_o, '', datetostr(now), True);

vnListAgent.LA_SetIdentifier(id_o, def_Ident, ID_Period_Nubbering,

id_NewSeries, NewSeries, def_IdenDate, True, False,

'Регистрация договора');

ok := MSystemServices.ExchangeData(Add_Contract,

VarArrayOf([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]

.Value, cW_New_Listener.wrappers[

cxPopupEdit_New_Listener_Contract_Organization].Value,

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value,

id_p, cW_New_Listener.wrappers[

cxPopupEdit_New_Listener_Contract_Source_Finansing].Value,

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_spec_div.Index]),

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value,

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

.Value, cW_New_Listener.wrappers

[cxButtonEdit_New_Listener_Order_Start].Value,

VarToStr(cxCurrencyEdit_New_Listener_Contract_Money.EditValue),

VarToStr(DC.Values[FRI, tv_listeners_id_student.Index]),

cW_New_Listener.wrappers[cxTextEdit_New_Listener_Basis].Value,

cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO].Value,

cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO_R].Value,

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Post].Value]));

end; // 3

if ok then

begin // 6

Get_SqlData_cxGrid(tv_listeners).Read_Data;

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

end; // 6

end; // 2

finally // 1

if assigned(mf) then

begin // 7

FreeAndNil(mf);

StudentElementsEnabled(True);

end; // 7

end; // 1

end;

{ Забрать удостоверение}

procedure TForm_Event.Action_Delete_CertificateExecute(Sender: TObject);

Var L: tintegerlist; i: integer;

begin

if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Подтверждение удаления'

, 'Удалить выделенные удостоверения ('

+ IntToStr(tv_listeners.Controller.SelectedRowCount) + ')?')

then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

for i := 0 to L.Count - 1 do

if MSystemServices.ExchangeData(Delete_Certificate

, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_ID_Certificate.Index])])

, 'Не смогли удалить сертификат '

+ VarToStr(Values[L.Items[i], tv_listeners_certificate.Index]))

then

begin

Values[L.Items[i], tv_listeners_certificate.Index] := null;

Values[L.Items[i], tv_listeners_Cert_Date.Index] := null;

Values[L.Items[i], tv_listeners_Reg_Number.Index] := null;

Values[L.Items[i], tv_listeners_Kind_Cert.Index] := null;

Values[L.Items[i], tv_listeners_ID_Kind_Cert.Index] := null;

Values[L.Items[i], tv_listeners_ID_Certificate.Index] := null;

Values[L.Items[i], tv_listeners_ID_Doc_Cert.Index] := null;

Values[L.Items[i], tv_listeners_ID_Reg.Index] := null;

Values[L.Items[i], tv_listeners_hours.Index] := null;

end;

MSystemServices.EndSequenceActions;

end;

end;

procedure TForm_Event.Action_Delete_ContractExecute(Sender: TObject);

var

ID_C: string;

DC: TcxDataController;

ok: Boolean;

List: TIntegerList;

i: Integer;

begin

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,

'Удаление договоров',

'Вы действительно хотите удалить договора у выбранных студентов (' +

IntToStr(List.Count) + ')?') then

begin // 1

MSystemServices.StartSequenceActions(False, True);

DC := tv_listeners.DataController;

for i := 0 to (List.Count - 1) do

begin // 2

ID_C := VarToStr(DC.Values[List.Items[i],

tv_listeners_id_contract.Index]);

ok := MSystemServices.ExchangeData(Delete_Contract, VarArrayOf([ID_C]));

if ok then

begin // 3

DC.Values[List.Items[i], tv_listeners_id_contract.Index] := null;

DC.Values[List.Items[i],

tv_listeners_id_paragraph_contract.Index] := null;

DC.Values[List.Items[i], tv_listeners_org.Index] := null;

DC.Values[List.Items[i], tv_listeners_money.Index] := null;

DC.Values[List.Items[i], tv_listeners_NDS.Index] := null;

DC.Values[List.Items[i],

tv_listeners_status_text_contract.Index] := null;

end; // 3

end; // 2

MSystemServices.EndSequenceActions;

if ok then

cW_Contract_Params.ClearWrappers;

end; // 1

end;

{ Удалить выставленные начисления}

procedure TForm_Event.Action_Delete_NachExecute(Sender: TObject);

var i: integer; L: TIntegerlist;

begin

if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление начислений'

, 'Удалить выставленные начисления у выделенных договоров?')

then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

for i := 0 to L.Count - 1 do

if MSystemServices.ExchangeData(Delete_Nach_By_ID_Dog

, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])])

, 'Не смогли удалить начисления')

then begin

Values[L.Items[i], tv_listeners_money.Index] := null;

Values[L.Items[i], tv_listeners_NDS.Index] := null;

end;

MSystemServices.EndSequenceActions;

if cxPageControl_Student.ActivePage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data

else Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;

end;

end;

{ Удалить окончание}

procedure TForm_Event.Action_Delete_Order_EndExecute(Sender: TObject);

var

L: TIntegerList;

i: Integer;

begin

with Get_SqlData_cxGrid(tv_listeners) do

begin

GetSelectedRecordIndexList(L);

if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление приказа об окончании'

, 'Удалить приказы об окончании у выделенных слушателей ' + '(' + IntToStr(L.Count) + ')' +'?')

then with tv_listeners.DataController do

begin

MSystemServices.StartSequenceActions(False, True);

For i := 0 to L.Count - 1 do

if MSystemServices.DeleteData(d_P_ORDERS_STUDENTS

, CreateVarAr(['0', '1'])

, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_student.Index])

, VarToStr(Values[L.Items[i], tv_listeners_ID_Paragraph_End.Index])])

, 'Не смогли удалить приказ об окончании.')

then begin

Values[L.Items[i], tv_listeners_ID_Paragraph_End.Index] := null;

Values[L.Items[i], tv_listeners_ID_Status_End.Index] := null;

Values[L.Items[i], tv_listeners_ID_ERP_End.Index] := null;

Values[L.Items[i], tv_listeners_status_text_order_end.Index] := null;

Get_SqlData_cxGrid(tv_listeners).IsFirstRead := True;

end;

MSystemServices.EndSequenceActions;

if cxPageControl_Student.ActivePage = cxTabSheet_Orders

then Fill_tv_ordersExecute(self);

end;

end;

end;

procedure TForm_Event.Action_End_EducationExecute(Sender: TObject);

const

Name = 'Окончание обучения';

var

mf: TSForm;

id: Integer;

List: TIntegerList;

i: Integer;

begin

try // 1

id := -1;

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

mf := CreateSForm(self, 'fEnd_Education', Name, Add_Path + Name,

Panel_End_Education, tdb_Apply);

cW_End_Education.wrappers[cxDateEdit_End_Education].Value := VarToStr

(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_d_end_plan.Index]);

cW_End_Education.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,

'Окончание обучения',

'Вы действительно хотите закончить обучение выбранных студентов (' +

IntToStr(List.Count) + ')?') then

begin // 3

MSystemServices.StartSequenceActions(False, True);

for i := 0 to (List.Count - 1) do

begin // 4

id := MSystemServices.InsertData(d_P_ORDERS_STUDENTS,

VarArrayOf([0, 1, 2, 3]),

VarArrayOf([tv_listeners.DataController.Values[List.Items[i],

tv_listeners_id_student.Index],

cW_End_Education.wrappers[cxButtonEdit_End_Education].Value,

cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value,

cW_End_Education.wrappers[cxDateEdit_End_Education].Value]),

'Окончание обучения.');

if id >= 0 then

begin // 5

tv_listeners.DataController.Values[List.Items[i],

tv_listeners_d_end.Index] := VarToStr

(cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value);

tv_listeners.DataController.Values[List.Items[i],

tv_listeners_status_text_order_end.Index] := VarToStr

(cW_End_Education.wrappers[cxButtonEdit_End_Education]

.ValueDisplay);

end; // 5

end; // 4

MSystemServices.EndSequenceActions;

if id >= 0 then

TButtonOrderEditWrapper(cW_End_Education.wrappers

[cxButtonEdit_End_Education]).IsEmpty := False;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

{ Выдать сертификат}

procedure TForm_Event.Action_Go_New_CertExecute(Sender: TObject);

var i, j: integer;

begin

with Get_SqlData_cxGrid(tv_listeners), GridTableView.Controller, Cont_Make_Cert do

begin

j := 0;

for i := 0 to SelectedRowCount - 1 do

if MSystemServices.ExchangeData(Make_New_Cert_By_Params

, CreateVarAr([VarToStr(SelectedRows[i].Values[tv_listeners_id_student.Index])

,VarToStr(Wrappers[ButtonEdit_New_Cert].Value)

,VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value)

,VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)

,VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value)

,VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value)])

, 'Не смогли выдать удостоверение.')

then

begin

j := j + 1;

{Values[L.Items[i], tv_listeners_Kind_Cert.Index] :=

VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].ValueDisplay);

Values[L.Items[i], tv_listeners_ID_Kind_Cert.Index] :=

VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value);

Values[L.Items[i], tv_listeners_Reg_Number.Index] :=

VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value);

Values[L.Items[i], tv_listeners_certificate.Index] :=

VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value);

Values[L.Items[i], tv_listeners_hours.Index] :=

VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value);}

Wrappers[SpinEdit_New_Cert_Reg].Value := Wrappers[SpinEdit_New_Cert_Reg].Value + 1;

Wrappers[SpinEdit_New_Cert_Number].Value := Wrappers[SpinEdit_New_Cert_Number].Value + 1;

end;

// А что толку-то? Все равно id сертификатов неизвестны - придется перечитывать!

Read_Data;

HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат работы'

, 'Выдано удостоверений: ' + IntToStr(j));

end;

end;

{ Установить новую стоимость выделенных договоров}

procedure TForm_Event.Action_Go_New_MoneyExecute(Sender: TObject);

var i, j: integer; L: TIntegerlist;

begin

cw_New_Money.ChangesAcceptWrappers;

with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

CurrencyEdit_New_Money.Properties.EditFormat := '0.00';

CurrencyEdit_New_Money.Properties.UseThousandSeparator := False;

j := 0;

for i := 0 to L.Count - 1 do

if MSystemServices.ExchangeData(Update_PC

, VarArrayOf(['4'

, VarToStr(tv_listeners.DataController.Values

[L.Items[i], tv_listeners_id_contract.Index])

,''

,''

,''

,''

,''

,//VarToStr(cw_New_Money.Wrappers[CurrencyEdit_New_Money].Value) //

VarToStr(CurrencyEdit_New_Money.EditValue)

,''

,''

,''

,''

,''

,''

,''

,''])

, 'Не смогли изменить стоимость договора.')

then j := j + 1;

CurrencyEdit_New_Money.Properties.EditFormat := ',0.00';

CurrencyEdit_New_Money.Properties.UseThousandSeparator := True;

MSystemServices.EndSequenceActions;

if j > 0

then HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат операции'

, 'Стоимость изменена в ' + IntToStr(j) + 'договорах.')

else HandymanFunctions.ShowVNDialog(vnd_Error, 'Результат операции'

, 'Не смогли изменить стоимость договоров');

end;

end;

{ Сформировать начисления}

procedure TForm_Event.Action_Go_New_NachExecute(Sender: TObject);

begin

Cont_New_Nach.ChangesAcceptWrappers;

with Cont_New_Nach, Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

if MSystemServices.ExchangeData(Create_New_Nach

, CreateVarAr([VarToStr(Values[LastChoiceIndex, tv_listeners_id_contract.Index])

, VarToStr(Wrappers[DateEdit_New_Nach].Value)

, VarToStr(Wrappers[ButtonEdit_New_Nach].Value)]))

then

begin

Get_SqlData_cxGrid(TTree_Nach).Read_Data;

GetParentForm(Panel_New_Nach).ModalResult := mrok;

end;

end;

{ Уcтановить рамочный договор }

procedure TForm_Event.Action_Go_Set_Main_ContractExecute(Sender: TObject);

var

L: TIntegerList;

i: Integer;

begin

with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

for i := 0 to L.Count - 1 do

if MSystemServices.UpdateData(d_P_CONTRACTS, CreateVarAr(['8']),

CreateVarAr([VarToStr(cW_Set_Main_Contract.wrappers

[PopupEdit_Set_Main_Contract].Value)]), CreateVarAr(['0']),

CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])])) then

begin

Values[L.Items[i], tv_listeners_ID_Contract_Main.Index] := VarToStr

(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract].Value);

Values[L.Items[i], tv_listeners_Main_Contract.Index] := VarToStr

(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract]

.ValueDisplay);

Values[L.Items[i], tv_listeners_Org_Contract_Main.Index] := VarToStr

(TTree_Main_Contracts.DataController.Values

[TTree_Main_Contracts.DataController.FocusedRecordIndex,

Tree_Main_Contracts_Org_Name.Index]);

end;

MSystemServices.EndSequenceActions;

end;

end;

{ Дата поиска рамочных договоров }

procedure TForm_Event.Filter_MC_Changed(

Sender: TObject);

begin

if (Get_SqlData_cxGrid(TTree_MC) <> nil)

//and (PageControl_Main.ActivePageIndex = 3)

then

with cw_Filter_Contracts_Main, Get_SqlData_cxGrid(TTree_MC) do

if (Parameters[1] <> VarToStr(Wrappers[DateEdit_Filter_Start].Value))

or (Parameters[2] <> VarToStr(Wrappers[DateEdit_Filter_End].Value))

or (Parameters[3] <> VarToStr(Wrappers[PopupEdit_Filter_Org].Value))

then

begin

Parameters[1] := VarToStr(Wrappers[DateEdit_Filter_Start].Value);

Parameters[2] := VarToStr(Wrappers[DateEdit_Filter_End].Value);

Parameters[3] := VarToStr(Wrappers[PopupEdit_Filter_Org].Value);

Read_Data;

end

else Read_Data_First;

end;

procedure TForm_Event.DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged

(Sender: TObject);

begin

if cW_Set_Main_Contract <> nil then

if Get_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1] <> VarToStr

(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value)

then

begin

Get_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1] := VarToStr

(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value);

Get_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead := True;

end;

end;

procedure TForm_Event.Delete_tv_listenersExecute(Sender: TObject);

var

c: Boolean;

ok: Boolean;

List: TIntegerList;

i: Integer;

begin

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,

'Удаление студентов',

'Вы действительно хотите удалить выбранных студентов вместе с договором ('

+ IntToStr(List.Count) + ')?') then

begin // 1

MSystemServices.StartSequenceActions(False, True);

for i := 0 to (List.Count - 1) do

begin // 2

c := VarToStr(tv_listeners.DataController.Values[List.Items[i],

tv_listeners_id_contract.Index]) <> '';

ok := MSystemServices.ExchangeData(Delete_Student,

VarArrayOf([VarToStr(tv_listeners.DataController.Values[List.Items[i],

tv_listeners_id_contract.Index]),

VarToStr(tv_listeners.DataController.Values[List.Items[i],

tv_listeners_id_student.Index])]), 'Удаление студента.');

{if ok and c then

MSystemServices.ExchangeData(Delete_Contract,

VarArrayOf

([VarToStr(tv_listeners.DataController.Values[List.Items[i],

tv_listeners_id_contract.Index])]), 'Удаление договора.');}

end; // 2

MSystemServices.EndSequenceActions;

if ok then

Get_SqlData_cxGrid(tv_listeners).Read_Data;

end; // 1

end;

procedure TForm_Event.DoChanged_cW_Contract_Params

(AWrapper: TCustomEditWrapper);

var

PEnabled, REnabled: Boolean;

begin

if AWrapper = cW_Contract_Params.wrappers[cxPopupEdit_PC_Org] then

begin // 1

REnabled := (cxPopupEdit_PC_Org.Text <> '') and REdit_Event;

ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);

end; // 1

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then

begin // 2

PEnabled := (cxButtonEdit_PC_Contract.Text <> '') and REdit_Event;

REnabled := PEnabled and (cxPopupEdit_PC_Org.Text <> '');

ContractParamsEnabled(cxGroupBox_Contract_Params, PEnabled);

ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);

end; // 2

cxButton_PC_Autorepresentative.Enabled := cxGroupBox_Contract_Params.Enabled;

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then

cxPopupEdit_PC_Kind_Order.Enabled := not AWrapper.IsClear;

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction] then

cxPopupEdit_PC_Kind_Direction.Enabled := not AWrapper.IsClear;

end;

procedure TForm_Event.DoChanged_cW_New_Direction(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Direction,

cW_New_Direction.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_End_Education(AWrapper: TCustomEditWrapper);

begin

cxPopupEdit_KBA_End.Enabled := not cW_End_Education.wrappers

[cxButtonEdit_End_Education].IsClear;

MakeEnable_OkButton(Panel_End_Education,

cW_End_Education.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_Plan_Filters(AWrapper: TCustomEditWrapper);

begin

{ Если изменили план }

if AWrapper = cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan] then

begin // 1

{ Заполняем примечание и аннотацию плана }

if VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)

<> '' then

begin // 2

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := VarToStr

(tv_plan.DataController.Values

[tv_plan.DataController.FocusedRecordIndex, tv_plan_note.Index]);

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value :=

VarToStr(tv_plan.DataController.Values

[tv_plan.DataController.FocusedRecordIndex, tv_plan_summary.Index]);

end // 2

else

begin // 3

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := '';

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value := '';

end; // 3

{ Перечитаем позиции плана (если требуется) }

Fill_tv_r_c_planExecute(self);

end; // 1

end;

procedure TForm_Event.DoChanged_cW_New_Listener(AWrapper: TCustomEditWrapper);

var

c, PE, R: Boolean;

begin

{ Ссылка на договор доступна, если введен вид договора }

c := VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]

.Value) <> '';

cxLabel16.Enabled := c;

cxPopupEdit_New_Listener_Order.Enabled := c;

{ Параметры договора доступны, введен вид договора и ссылка на договор пуста }

PE := c and (VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]

.Value) = '');

ContractParamsEnabled(cxGroupBox_New_Listener_Contract_Params, PE);

cW_New_Listener.MakeObligatory([cxDateEdit_New_Listener_Contract_D_Start,

cxDateEdit_New_Listener_Contract_D_End,

cxPopupEdit_New_Listener_Contract_Source_Finansing,

cxCurrencyEdit_New_Listener_Contract_Money], PE);

{ Представитель организации доступен, если доступны параметры договора и выбрана организация }

R := PE and (VarToStr(cW_New_Listener.wrappers[

cxPopupEdit_New_Listener_Contract_Organization].Value) <> '');

ContractParamsEnabled(cxGroupBox_New_Listener_Representative, R);

MakeEnable_OkButton(Panel_New_Listener, cW_New_Listener.IsNotEmptyMandatory);

end;

{ Выбор записи в списке}

procedure TForm_Event.ChoiceGridRecord(Sender: TSqlData_cxGridTableView;

AGridRecord: TcxGridDataRow);

begin

if (Sender.GridTableView = tv_r_c_plan) then

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount) then

begin // 1

{ Сменим дату начала и дату окончания в сроках проведения }

cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value :=

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_d_start.Index]);

cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value :=

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_d_end.Index]);

{ Обновим списки в зависимости от активной страницы }

if PageControl_Main.ActivePage = cxTabSheet_R_C_Groups then

Fill_tv_r_c_groupsExecute(self);

if PageControl_Main.ActivePage = cxTabSheet_Listeners then

Fill_tv_listenersExecute(self);

end; // 1

// Выбор текущей учебной группы для обновления списка кураторов

if (Sender.GridTableView = tv_r_c_groups) then

with Get_SqlData_cxGrid(TTree_Curator) do

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount) then

begin

Action_New_Curator.Enabled := REdit_Event;

if Parameters[1] <> VarToStr

(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,

tv_r_c_groups_id_ed_group.Index]) then

begin

Parameters[1] := VarToStr

(Sender.GridTableView.DataController.Values

[Sender.LastChoiceIndex, tv_r_c_groups_id_ed_group.Index]);

Read_Data;

end

else

Read_Data_First;

end

else

begin

Parameters[1] := '';

ClearData;

Action_New_Curator.Enabled := False;

end;

end;

procedure TForm_Event.OnChoiceGridRecord_tv_listeners

(Sender: TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);

begin

if (Sender <> nil) then

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount)

then with Sender.GridTableView.DataController do

begin // 1

if cxPageControl_Student.ActivePage = cxTabSheet_Orders then

Fill_tv_ordersExecute(self);

if cxPageControl_Student.ActivePage = cxTabSheet_Anketa then

Fill_AnketaExecute(self);

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

if Get_SqlData_cxGrid(TTree_Nach).Parameters[1] <>

VarToStr(Values[Sender.LastChoiceIndex, tv_listeners_id_contract.Index])

then begin

Get_SqlData_cxGrid(TTree_Nach).Parameters[1] :=

VarToStr(Values[Sender.LastChoiceIndex, tv_listeners_id_contract.Index]);

Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;

if cxPageControl_Student.ActivePage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;

end;

Label_FIO.Caption := VarToStr

(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,

tv_listeners_fio.Index]);

end // 1

else

begin

Label_FIO.Caption := Choice_Listener;

case cxPageControl_Student.ActivePageIndex of

0:begin

Get_SqlData_cxGrid(tv_orders).Params[0] := '';

Get_SqlData_cxGrid(tv_orders).ClearData;

end;

1:Current_Form_Anketa.ID_E := '';

2:Clear_Contract.Execute;

3:begin

Get_SqlData_cxGrid(TTree_Nach).Parameters[1] := '';

Get_SqlData_cxGrid(TTree_Nach).ClearData;

end;

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-файлы представлены только в архивах.
Рекомендуем скачать работу.