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

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

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

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

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

var ExchangeParameters: OleVariant);

public

{ Public declarations }

// Настройка списков

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

AForm_Find_Org: TForm_Find_Org = nil;

AForm_Anketa: TFUnivQuestionare = nil;

AForm_Anketa_For_New: TFUnivQuestionare = nil);

// Обновить роли

procedure Refresh_Roles;

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

class function IsRoleAccessible: Boolean;

end;

var

Form_Event: TForm_Event;

implementation

{$R *.dfm}

uses SysServices, Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;

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

procedure TForm_Event.Save_Restore_Params(RReg_Path: String = Reg_Path;

PIs_Load: Boolean = True);

begin

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

if PIs_Load then

begin

cxPropertiesStore1.RestoreFrom;

end

else

if VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value) <> ''

then cxPopupEdit_Plan_Filters_Plan.Tag := cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value;

cxPropertiesStore1.StoreTo(True);

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

Restore_cxGridTableView(tv_r_c_plan, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_r_c_plan).Table_Name);

Restore_cxGridTableView(tv_r_c_groups, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_r_c_groups).Table_Name);

Restore_cxGridTableView(tv_listeners, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_listeners).Table_Name);

Restore_cxGridTableView(tv_orders, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_orders).Table_Name);

Restore_cxGridTableView(tv_spec_div_popup, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_spec_div_popup).Table_Name);

Restore_cxGridTableView(tv_ed_group, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_ed_group).Table_Name);

Restore_cxGridTableView(tv_com_spec, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_com_spec).Table_Name);

Restore_cxGridTableView(tv_kba_start, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_kba_start).Table_Name);

Restore_cxGridTableView(tv_kind_order, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_kind_order).Table_Name);

Restore_cxGridTableView(tv_contracts, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_contracts).Table_Name);

Restore_cxGridTableView(tv_Source_Financing, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_Source_Financing)

.Table_Name);

Restore_cxGridTableView(tv_kind_direction, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_kind_direction).Table_Name);

Restore_cxGridTableView(tv_kba_end, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_kba_end).Table_Name);

Restore_cxGridTableView(tv_posts, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_posts).Table_Name);

Restore_cxGridTableView(tv_plan, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(tv_plan).Table_Name);

Restore_cxGridTableView(TTree_Curator, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Curator).Table_Name);

Restore_cxGridTableView(TTree_Main_Contracts, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Main_Contracts).Table_Name);

Restore_cxGridTableView(TTree_Nach, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Nach).Table_Name);

Restore_cxGridTableView(TTree_Stat, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Stat).Table_Name);

Restore_cxGridTableView(TTree_Kind_Doc_Cert, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_Kind_Doc_Cert).Table_Name);

Restore_cxGridTableView(TTree_MC, PIs_Load,

RReg_Path + Grid_Path + Get_SqlData_cxGrid(TTree_MC).Table_Name);

end;

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

class function TForm_Event.IsRoleAccessible: Boolean;

begin

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

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

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

Action_Q_View_Event) or vnSessionAgent.IsDBA;

end;

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

procedure TForm_Event.Refresh_Roles;

var

DBA: Boolean;

begin

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

DBA := vnSessionAgent.IsDBA;

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

REdit_Event := DBA or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Event);

Action_Import.Enabled := DBA or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Event);

{ Проверка ролей для анкеты }

Current_Form_Anketa.RefreshRoles(False);

Action_New_SE.Enabled := DBA

or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Event);

Get_SqlData_cxGrid(Current_Form_SE.cxGrid_FIO).ActionInsert.Enabled := Action_New_SE.Enabled;

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

DoChanged_cW_Contract_Params(cW_Contract_Params.wrappers

[cxButtonEdit_PC_Contract]);

tv_r_c_planSelectionChanged(tv_r_c_plan);

// Доступность добавления рамочного договора

Action_New_MC.Enabled := vnSessionAgent.IsDBA

or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Event);

end;

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

procedure TForm_Event.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_Event.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_Event.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_Event.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;

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

procedure TForm_Event.Allow_Delete(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

Allow := False;

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

Allow := Allow or Roles[i];

FSqlData_TableView.ActionDelete.Enabled :=

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

end; // 1

end;

{ Включить/выключить параметры договора }

procedure TForm_Event.Clear_ContractExecute(Sender: TObject);

begin

cW_Contract_Params.ClearWrappers;

end;

procedure TForm_Event.ContractParamsEnabled(GB: TcxGroupBox; Enabled: Boolean);

var

i: Integer;

begin

GB.Enabled := Enabled;

for i := 0 to GB.ControlCount - 1 do

begin

if GB.Controls[i] is TcxLabel then (GB.Controls[i] as TcxLabel)

.Enabled := Enabled;

if GB.Controls[i] is TcxDateEdit then (GB.Controls[i] as TcxDateEdit)

.Enabled := Enabled;

if GB.Controls[i] is TcxPopupEdit then (GB.Controls[i] as TcxPopupEdit)

.Enabled := Enabled;

if GB.Controls[i] is TcxSpinEdit then (GB.Controls[i] as TcxSpinEdit)

.Enabled := Enabled;

if GB.Controls[i] is TcxButtonEdit then (GB.Controls[i] as TcxButtonEdit)

.Enabled := Enabled;

if GB.Controls[i] is TcxCurrencyEdit then

(GB.Controls[i] as TcxCurrencyEdit)

.Enabled := Enabled;

if GB.Controls[i] is TcxTextEdit then (GB.Controls[i] as TcxTextEdit)

.Enabled := Enabled;

end;

end;

procedure TForm_Event.StudentElementsEnabled(Enabled: Boolean);

begin

cxLabel5.Enabled := Enabled;

cxLabel6.Enabled := Enabled;

cxLabel8.Enabled := Enabled;

cxLabel9.Enabled := Enabled;

cxLabel11.Enabled := Enabled;

cxLabel12.Enabled := Enabled;

cxPopupEdit_New_Listener_FIO.Enabled := Enabled;

cxPopupEdit_New_Listener_Ed_Group.Enabled := Enabled;

cxDateEdit_New_Listener_D_Start.Enabled := Enabled;

cxDateEdit_New_Listener_D_End.Enabled := Enabled;

cxPopupEdit_New_Listener_Kind_Basis_Action.Enabled := Enabled;

cxButtonEdit_New_Listener_Order_Start.Enabled := Enabled;

end;

procedure TForm_Event.tv_listenersEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

var

status, id_erp: string;

begin

{ Доступность редактирования столбцов: ФИО, Учебная группа, Дата начала,

Основание зачисления }

if (AItem = tv_listeners_fio) or (AItem = tv_listeners_ed_group) or

(AItem = tv_listeners_d_start) or (AItem = tv_listeners_kind_basis_action)

then

begin // 1

status := VarToStr(Sender.DataController.Values

[Sender.DataController.FocusedRecordIndex, tv_listeners_status_order_start.Index]);

id_erp := VarToStr(Sender.DataController.Values

[Sender.DataController.FocusedRecordIndex, tv_listeners_id_erp_user.Index]);

AAllow := (status = '2') and (id_erp = vnSessionAgent.ID_ERP_User)

and REdit_Event;

end // 1

else

{ Доступность сертификата}

if ((AItem = tv_listeners_certificate) or (AItem = tv_listeners_hours)

or (AItem = tv_listeners_Reg_Number) or (AItem = tv_listeners_Kind_Cert)

or (AItem = tv_listeners_Cert_Date))

then AAllow := not VarIsNull(tv_listeners.DataController.Values

[Sender.DataController.FocusedRecordIndex, tv_listeners_certificate.Index])

and REdit_Event

else

{ Доступность редактирования Даты окончания }

if (AItem = tv_listeners_d_end)

then AAllow := not VarIsNull(tv_listeners.DataController.Values

[Sender.DataController.FocusedRecordIndex, tv_listeners_status_text_order_end.Index])

and REdit_Event

else AAllow := False;

end;

procedure TForm_Event.tv_listenersKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_INSERT then

Allow_Insert(tv_listeners, [REdit_Event])

else if Key = VK_DELETE then

Allow_Delete(tv_listeners, tv_listeners_status_order_start,

tv_listeners_id_erp_user, [REdit_Event]);

end;

procedure TForm_Event.tv_listenersMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight then

begin // 1

Allow_Insert(tv_listeners, [REdit_Event]);

tv_listenersSelectionChanged(tv_listeners);

end; // 1

end;

{ Доступность действий на выделении}

procedure TForm_Event.tv_listenersSelectionChanged

(Sender: TcxCustomGridTableView);

var L: TIntegerList; i: integer;

begin

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

Allow_Delete(Sender, tv_listeners_status_order_start,

tv_listeners_id_erp_user, [REdit_Event]);

if (Sender.Controller.SelectedRecordCount > 0) then

begin // 1

{ Установим доступность добавления договора }

Action_Add_Contract.Enabled := VarIsNull

(Sender.DataController.Values

[Sender.DataController.FocusedRecordIndex,

tv_listeners_id_contract.Index]) and REdit_Event;

{ Установим доступность удаления договоров }

Action_Delete_Contract.Enabled := (not Is_Value(tv_listeners_id_contract,

'', True)) and REdit_Event;

// Рамочный договор

Action_Main_Contract.Enabled := Action_Delete_Contract.Enabled;

{ Установим доступность действия окончания обучения }

Action_End_Education.Enabled := Is_Value

(tv_listeners_status_text_order_end, '', False) and REdit_Event;

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

Action_Delete_Order_End.Enabled := not Is_Value

(tv_listeners_status_text_order_end, '', True) and REdit_Event;

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

Action_Make_Certificate.Enabled := Is_Value(tv_listeners_certificate, '', True)

and (not Is_Value(tv_listeners_status_text_order_end, '', False))

and REdit_Event;

Action_View_Certificate.Enabled := not Is_Value(tv_listeners_certificate, '', True);

{ Установим доступность удаления удостоверения}

Action_Delete_Certificate.Enabled := not Is_Value(tv_listeners_certificate, '', True)

and REdit_Event;

{ Установим доступность выставления начислений}

Action_Create_Nach_All.Enabled := REdit_Event

and Action_Delete_Contract.Enabled;

{ Установим доступность изменения стоимости договоров}

Action_New_Money.Enabled := Action_Create_Nach_All.Enabled;

{ Установим доступность удаления начислений}

Action_Delete_Nach.Enabled := REdit_Event

and Action_Delete_Contract.Enabled;

{ Установим доступность удаления приказа об окончании}

if Action_Delete_Order_End.Enabled

then with Sender.DataController do

begin

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(L);

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

Action_Delete_Order_End.Enabled := Action_Delete_Order_End.Enabled

and (VarToStr(Values[L.Items[i], tv_listeners_ID_Status_End.Index]) = '2')

and (vnSessionAgent.IsDBA

or (VarToStr(Values[L.Items[i], tv_listeners_ID_ERP_End.Index]) = vnSessionAgent.ID_ERP_User));

end;

end

else

begin // 2

Action_Add_Contract.Enabled := False;

Action_Delete_Contract.Enabled := False;

Action_End_Education.Enabled := False;

Action_Delete_Order_End.Enabled := False;

Action_Make_Certificate.Enabled := False;

Action_View_Certificate.Enabled := False;

Action_Main_Contract.Enabled := False;

Action_Delete_Certificate.Enabled := False;

end; // 2

end;

procedure TForm_Event.tv_listeners_d_startPropertiesEditValueChanged

(Sender: TObject);

begin

cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start].Value := VarToStr

(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_d_start.Index]);

end;

procedure TForm_Event.tv_listeners_ed_groupPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_r_c_groupsExecute(self);

end;

procedure TForm_Event.tv_listeners_kind_basis_actionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kba_startExecute(self);

end;

procedure TForm_Event.tv_r_c_groupsEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

AAllow := Allow_Editing(Sender, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_groupsKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_INSERT then

Allow_Insert(tv_r_c_groups, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_groupsMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight then

Allow_Insert(tv_r_c_groups, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_groupsSelectionChanged

(Sender: TcxCustomGridTableView);

begin

if Sender = TTree_MC

then with TTree_MC.Controller do

Get_SqlData_cxGrid(TTree_MC).ActionDelete.Enabled :=

(SelectedRowCount > 0)

and Get_SqlData_cxGrid(TTree_MC).ActionInsert.Enabled

And Is_Value(Tree_MC_ID_Status, '2', False)

and (vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '', '902'

, [VarToStr(SelectedRows[0].Values[Tree_MC_ID_MT.Index])]

, [VarToStr(SelectedRows[0].Values[Tree_MC_ID_MO.Index])]

, [VarToStr(SelectedRows[0].Values[Tree_MC_ID_ERP.Index])]))

else Allow_Delete(Sender, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_groups_namePropertiesInitPopup(Sender: TObject);

begin

Fill_tv_ed_groupExecute(self);

end;

procedure TForm_Event.tv_r_c_planEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

AAllow := Allow_Editing(Sender, tv_r_c_plan_status_order,

tv_r_c_plan_id_erp_user, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_planKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_INSERT then

Allow_Insert(tv_r_c_plan, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_planMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight then

Allow_Insert(tv_r_c_plan, [REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_planSelectionChanged

(Sender: TcxCustomGridTableView);

begin

Allow_Delete(Sender, tv_r_c_plan_status_order, tv_r_c_plan_id_erp_user,

[REdit_Groups, REdit_Event]);

end;

procedure TForm_Event.tv_r_c_plan_name_specPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_spec_div_popupExecute(self);

end;

{ Добавить-таки человека!}

procedure TForm_Event.OkNewEmp;

var db: variant;

begin

if Form_Anketa_For_New.DATE_OF_BIRTH.text = ''

then dB := NULL

else dB := StrToDate(Form_Anketa_For_New.DATE_OF_BIRTH.text);

Current_Form_SE.SetNewFIO(1, VarArrayOf([StrToInt(Form_Anketa_For_New.ID_E)

, Form_Anketa_For_New.SURNAME.Text

, Form_Anketa_For_New.ENAME.Text

, Form_Anketa_For_New.PATRONYMIC.Text

, dB

, StrToInt(Form_Anketa_For_New.ID_CONTRACTOR)]));

end;

{ Выбрать старого!}

procedure TForm_Event.OkOldEmp;

var db: variant;

begin

with {Cont_New_PA_Single,} Form_Anketa_For_New, cxTableViewSimilar.DataController do

begin

if VarToStr(Values[FocusedRecordIndex, cxTableViewSimilarDATEOFBIRTH.index]) = ''

then dB := NULL

else dB := Values[FocusedRecordIndex, cxTableViewSimilarDATEOFBIRTH.index];

Current_Form_SE.SetNewFIO(1, VarArrayOf([

Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarID_E.index]

, Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarSurname.index]

, Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarName.index]

, Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarPatronymic.index]

, dB

, Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarIDContractor.index]]));

end;

end;

{ После удаления}

procedure TForm_Event.After_Delete(Sender: TSqlData_cxGridTableView);

begin

if Sender.GridTableView = TTree_Nach

then Sender.Read_Data;

end;

{ Параметры удаления}

procedure TForm_Event.Delete_Main_Contract(Sender: TSqlData_cxGridTableView; ARecordIndex: Integer;

var ExchangeParameters: OleVariant);

begin

if Sender.GridTableView = TTree_MC then

with TTree_MC.DataController do

ExchangeParameters := CreateVarAr([VarToStr(Values[ARecordIndex, Tree_MC_ID_Contract.Index])]);

end;

{ Импорт участников из внешнего файла }

procedure TForm_Event.Action_ImportExecute(Sender: TObject);

var

i, j, k, LCID, res: Integer;

curr_id_e, curr_id_contractor, last_dog, curr_day: String;

data: OleVariant;

new_form: TSForm;

need_find: boolean;

begin

// Если открыли файл

if Import_File.Execute then

try

ea := TExcelApplication.Create(self);

ea.ConnectKind := ckNewInstance;

ea.Connect;

ew := ea.Workbooks.Open(Import_File.FileName, EmptyParam, EmptyParam,

EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,

EmptyParam, EmptyParam, EmptyParam, EmptyParam, LCID);

wsh := ew.Worksheets.Item[1] as _Worksheet;

i := 1;

while VarToStr(wsh.Cells.Item[i, 1]) = '' do

begin

i := i + 1;

end;

id_d_import := '';

id_d_kaf := '';

idk_training := '';

Import_EG_Name := VarToStr(wsh.Cells.Item[i + 4, 2]);

Import_FIO_Curator := VarToStr(wsh.Cells.Item[i + 4, 4]);

data := MSystemServices.SelectData(Get_ID_Spec_By_Name,

CreateVarAr([VarToStr(wsh.Cells.Item[i + 1, 2])

, VarToStr(wsh.Cells.Item[i, 2])

, VarToStr(wsh.Cells.Item[i + 2, 2])

, VarToStr(wsh.Cells.Item[i + 2, 3])

, VarToStr(wsh.Cells.Item[i + 5, 2])

, Import_EG_Name

, Import_FIO_Curator

, VarToStr(wsh.Cells.Item[i + 5, 4])

, VarToStr(wsh.Cells.Item[i, 4])])

, j, 'Не смогли найти программу');

// Если нет еще контейнера - создадим!

if cW_Import = nil then

begin

cW_Import := TContainerWrappers.Create;

cW_Import.AddCustomEdit(DateEdit_Import_Start, True, False, '');

cW_Import.AddCustomEdit(DateEdit_Import_End, True, False, '');

cW_Import.AddCustomEdit(DateEdit_Import_Start_Otrjv, False, False, '');

cW_Import.AddCustomEdit(DateEdit_Import_End_Otrjv, False, False, '');

cW_Import.AddCustomEdit(CurrencyEdit_Import_Money, False, False, '');

cW_Import.AddCustomEdit(CurrencyEdit_Import_NDS, False, False, '');

cW_Import.AddCustomEdit(DateEdit_Import_Reference, True, False, '');

cW_Import.AddPopupEdit(PopupEdit_Import_Spec, True, False, nil, nil,

tv_Spec_ID, [tv_Spec_Name], '');

cW_Import.AddPopupEdit(PopupEdit_Import_Spec_Div, True, False, nil, nil

, tv_spec_div_popup_id_spec_div

, [tv_spec_div_popup_institute, tv_spec_div_popup_name_div, tv_spec_div_popup_name_spec, tv_spec_div_popup_kind_training], '');

cW_Import.AddPopupEdit(PopupEdit_Import_UMK, True, False

, cxGrid_Com_Spec, tv_com_spec, tv_com_spec_id_met_complex

, [tv_com_spec_hours, tv_com_spec_sam, tv_com_spec_name_spec, tv_com_spec_name_div, tv_com_spec_kind_training], '');

cW_Import.AddPopupEdit(PopupEdit_Import_Plan, True, False

, cxGrid_R_C_Plan, tv_r_c_plan, tv_r_c_plan_id_r_c_plan

, [tv_r_c_plan_institute, tv_r_c_plan_name_spec, tv_r_c_plan_kind_training], '');

cW_Import.AddPopupEdit(PopupEdit_Import_EG, True, False

, cxGrid_Ed_Group, tv_ed_group, tv_ed_group_id_ed_group, [tv_ed_group_name], '');

PopupEdit_Import_Curator.Properties.PopupControl := Current_Form_SE;

cW_Import.AddPopupEdit(PopupEdit_Import_Curator, False, False,

Current_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO,

Current_Form_SE.cxGrid_FIO_ID_E, [Current_Form_SE.cxGrid_FIO_Full], '');

cW_Import.AddButtonOrderEdit(ButtonEdit_Import_Order, True, False, ''

, ['200']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

cW_Import.AddButtonOrderEdit(ButtonEdit_Import_Nach, True, False, ''

, ['436']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

//cW_Import.ActionEnter := Action_Go_Import;

end;

cW_Import.ClearWrappers;

cW_Import.Wrappers[DateEdit_Import_Reference].Value := DateToStr(Date);

// Нашли программу?

if VarIsArray(data) then

begin

cW_Import.wrappers[DateEdit_Import_Start].Value := VarToStr(data[0][0]);

cW_Import.wrappers[DateEdit_Import_End].Value := VarToStr(data[0][1]);

cW_Import.Wrappers[DateEdit_Import_Start_Otrjv].Value := VarToStr(wsh.Cells.Item[i + 3, 2]);

cW_Import.Wrappers[DateEdit_Import_End_Otrjv].Value := VarToStr(wsh.Cells.Item[i + 3, 3]);

cW_Import.Wrappers[CurrencyEdit_Import_Money].Value := VarToStr(wsh.Cells.Item[i + 6, 2]);

cW_Import.Wrappers[CurrencyEdit_Import_NDS].Value := VarToStr(wsh.Cells.Item[i + 7, 2]);

if VarToStr(data[0][3]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_Spec].Value := VarToStr(data[0][3]);

cW_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay := VarToStr(data[0][2]);

end;

// Специальность подразделения (Организатор)

if VarToStr(data[0][5]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value := VarToStr(data[0][5]);

// А если он пустой еще?

Get_SqlData_cxGrid(tv_spec_div_popup).Read_Data_First;

i := FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]

, CreateVarAr([VarToStr(data[0][5])]));

if i >= 0

then 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;

// План

if VarToStr(data[0][6]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_Plan].Value := VarToStr(data[0][6]);

cW_Import.wrappers[PopupEdit_Import_Plan].ValueDisplay :=

cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;

end

// Нет плана - заполним поля для добавления!

else begin

cW_Import.Wrappers[PopupEdit_Import_Plan].Clear;

cW_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].Value :=

cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value;

cW_New_R_C_Plan.Wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].ValueDisplay :=

cW_Import.Wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;

cW_New_R_C_Plan.Wrappers[cxDateEdit_New_R_C_Plan_D_Start].ValueDisplay :=

cW_Import.Wrappers[DateEdit_Import_Start].ValueDisplay;

cW_New_R_C_Plan.Wrappers[cxDateEdit_New_R_C_Plan_D_End].ValueDisplay :=

cW_Import.Wrappers[DateEdit_Import_End].ValueDisplay;

if VarToStr(data[0][10]) <> ''

then begin

cW_New_R_C_Plan.Wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Value := VarToStr(data[0][10]);

cW_New_R_C_Plan.Wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].ValueDisplay := VarToStr(data[0][11]);

end;

end;

// УМК

if VarToStr(data[0][8]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_UMK].Value := VarToStr(data[0][8]);

i := FindGridRecordIndex(tv_com_spec, [tv_com_spec_id_met_complex]

, CreateVarAr([VarToStr(data[0][8])]));

if i >= 0

then 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;

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

if VarToStr(data[0][12]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_EG].Value := VarToStr(data[0][12]);

cW_Import.wrappers[PopupEdit_Import_EG].ValueDisplay := Import_EG_Name;

end

else cW_Import.Wrappers[PopupEdit_Import_EG].Clear;

// Куратор

if VarToStr(data[0][14]) <> ''

then

begin

cW_Import.wrappers[PopupEdit_Import_Curator].Value := VarToStr(data[0][14]);

cW_Import.wrappers[PopupEdit_Import_Curator].ValueDisplay := Import_FIO_Curator;

end

else cW_Import.Wrappers[PopupEdit_Import_Curator].Clear;

Import_Name_Spec := VarToStr(data[0][2]);

id_d_import := VarToStr(data[0][7]);

Import_Hours := VarToStr(data[0][9]);

Import_Hours_SR := VarToStr(data[0][15]);

Import_ID_EG := VarToStr(data[0][13]);

id_d_kaf := VarToStr(data[0][16]);

//id_d_import := VarToStr(data[0][17]);

end

else

begin

cW_Import.ClearWrappers;

cW_Import.wrappers[DateEdit_Import_Start].Value := VarToStr

(wsh.Cells.Item[i + 2, 2]);

cW_Import.wrappers[DateEdit_Import_End].Value := VarToStr

(wsh.Cells.Item[i + 2, 3]);

Import_Name_Spec := VarToStr(wsh.Cells.Item[i + 1, 2]);

end;

try

new_form := CreateSForm(self, 'fImport', TabSheet_Import.Caption,

Add_Path + TabSheet_Import.Caption, Panel_Import, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

{ Импортируем наконец-то...}

Self.Enabled := False;

if new_form.ModalResult = mrok then

begin

// Поиск договоров

i := 10;

res := 0;

last_dog := '';

while (VarToStr(wsh.Cells.Item[i, 2]) <> '') do

begin

// А зачем проверять его еще раз?

if ((last_dog = '') or (last_dog <> VarToStr(wsh.Cells.Item[i, 7])))

and (VarToStr(wsh.Cells.Item[i, 7]) <> '')

then

begin

last_dog := VarToStr(wsh.Cells.Item[i, 7]);

data := MSystemServices.SelectData(Find_Contract_By_Number

, CreateVarAr([VarToStr(wsh.Cells.Item[i, 7])

, VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)])

, j);

// Нет такого договора - создадим!

if not VarIsArray(data) then

begin

cw_New_Contract_Main.ClearWrappers;

cw_New_Contract_Main.Wrappers[TextEdit_New_Contract_Main].Value

:= VarToStr(wsh.Cells.Item[i, 7]);

cw_New_Contract_Main.Wrappers[DateEdit_New_Contract_Main_Start].Value

:= '01.01.' + VarToStr(YearOf(StrToDate(VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value))));

cw_New_Contract_Main.Wrappers[DateEdit_New_Contract_Main_End].Value

:= '31.12.' + VarToStr(YearOf(StrToDate(VarToStr(cW_Import.Wrappers[DateEdit_Import_End].Value))));

// Добавить договор

Action_New_Contract_Main.Execute;

end;

end;

i := i + 1;

end;

ProgressBar_Import.Properties.Min := 1;

ProgressBar_Import.Properties.Max := i - 10;

ProgressBar_Import.Visible := True;

ProgressBar_Import.Position := 0;

i := 10;

while VarToStr(wsh.Cells.Item[i, 2]) <> '' do

begin

ProgressBar_Import.Position := i - 9;

ProgressBar_Import.Refresh;

if Trim(VarToStr(wsh.Cells.Item[i, 6])) = '31.12.1899'

then curr_day := '01.01.1900'

else curr_day := Trim(VarToStr(wsh.Cells.Item[i, 6]));

{j := ord(Copy(VarToStr(wsh.Cells.Item[i, 3]), 10, 1));

HandymanFunctions.ShowVNDialog(vnd_Information

, IntToStr(ord(Copy(VarToStr(wsh.Cells.Item[i, 2]), 8, 1)))

, IntToStr(j));}

Label_FIO.Caption := //IntToStr(ord(Copy(VarToStr(wsh.Cells.Item[i, 3]), 10, 1)))

//+

Trim(VarToStr(wsh.Cells.Item[i, 2]))

+ ' ' + Trim(VarToStr(wsh.Cells.Item[i, 3]))

+ ' ' + Trim(VarToStr(wsh.Cells.Item[i, 4]))

+ ', ' + Trim(VarToStr(wsh.Cells.Item[i, 5]))

+ ', ' + curr_day;

Label_FIO.Refresh;

Application.ProcessMessages;

curr_id_e := '';

curr_id_contractor := '';

need_find := RadioGroup_Import_Mode.ItemIndex <> 2;

if not need_find

then

begin

need_find := not (FindGridRecord(tv_listeners, [tv_listeners_fio]

, CreateVarAr([VarToStr(Trim(VarToStr(wsh.Cells.Item[i, 2])))

+ ' ' + Trim(VarToStr(wsh.Cells.Item[i, 3]))

+ ' ' + Trim(VarToStr(wsh.Cells.Item[i, 4]))])) <> nil);

end;

// А надо ли искать человека?

if need_find then

begin

// Сначала поищем человека скрытно

with Get_SqlData_cxGrid(Form_Anketa_For_New.cxTableViewSimilar),

GridTableView.DataController do

begin

Parameters[1] := Trim(VarToStr(wsh.Cells.Item[i, 2]));

Parameters[2] := Trim(VarToStr(wsh.Cells.Item[i, 3]));

Parameters[3] := Trim(VarToStr(wsh.Cells.Item[i, 4]));

Parameters[4] := '';

Read_Data;

if RecordCount > 0

then begin

For k := 0 to RecordCount - 1 do

// 100% совпадение

if (VarToStr(Values[k, Form_Anketa_For_New.cxTableViewSimilarSimDegree.Index]) = '100')

// вплоть до дня рождения

and (StrToDate(VarToStr(Values[k, Form_Anketa_For_New.cxTableViewSimilarDATEOFBIRTH.Index]))

= (StrToDate(curr_day)))

then begin

curr_id_e := VarToStr(Values[k, Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);

curr_id_contractor := VarToStr(Values[k, Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);

end

end;

end;

// Все-таки не нашли однозначное соответствие, моделируем ввод новой анкеты!

if (curr_id_e = '') and (RadioGroup_Import_Mode.ItemIndex <> 1)

then

begin

Form_Anketa_For_New.ClearForm;

Form_Anketa_For_New.ModalResult := 0;

if (trim(VarToStr(wsh.Cells.Item[i, 5])) = 'ж')

or (trim(VarToStr(wsh.Cells.Item[i, 5])) = 'Ж')

then curr_sex := '2'

else curr_sex := '1';

curr_surname := Trim(VarToStr(wsh.Cells.Item[i, 2]));

curr_name := Trim(VarToStr(wsh.Cells.Item[i, 3]));

curr_patronymic := Trim(VarToStr(wsh.Cells.Item[i, 4]));

curr_birthday := curr_day;

curr_email := VarToStr(wsh.Cells.Item[i, 12]);

curr_phone := VarToStr(wsh.Cells.Item[i, 13]);

// Заполним поля - там откроется поиск, если надо с выбором

Action_After_Show_New_Anketa.Execute;

// Откроем поиск подобных без самой анкеты!

//curr_id_e := Form_Anketa_For_New.ShowSimilaryDialog(1, False);

if Form_Anketa_For_New.id_e <> ''

then with Form_Anketa_For_New.cxTableViewSimilar.DataController do

begin

curr_id_e := VarToStr(Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);

curr_id_contractor := VarToStr(Values[FocusedRecordIndex, Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);

end

else

// Если никого не выбрали, то откроем окно ввода нового человека

begin

Form_Anketa_For_New.Not_Clear_On_Show := True;

Case Form_Anketa_For_New.ShowNewEmpForm of

QRInserted:

begin

curr_id_e := Form_Anketa_For_New.ID_E;

curr_id_contractor := Form_Anketa_For_New.ID_CONTRACTOR;

end;

QRSimChecked: with Form_Anketa_For_New.cxTableViewSimilar.DataController do

begin

curr_id_e := VarToStr(Values[FocusedRecordIndex

, Form_Anketa_For_New.cxTableViewSimilarID_E.Index]);

curr_id_contractor := VarToStr(Values[FocusedRecordIndex

, Form_Anketa_For_New.cxTableViewSimilarIDContractor.Index]);

end;

end;

Form_Anketa_For_New.Not_Clear_On_Show := False;

end;

end;

// Есть человек - Добавим все необходимое для слушателя!

if curr_id_e <> ''

then with cW_Import do

begin

// Сначала проверим наличие этого слушателя в группе

data := MSystemServices.SelectData(Get_ID_Student_By_ID_E_ID_EG

, CreateVarAr([curr_id_e

, VarToStr(cW_Import.Wrappers[PopupEdit_Import_EG].Value)

, VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)])

, j, 'Не смогли найти слушателя в группе');

// Нет слушателя - добавим!

if not VarIsArray(data)

then

if MSystemServices.ExchangeData(Create_Slushatel

, CreateVarAr([curr_id_e

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

, VarToStr(wsh.Cells.Item[i, 7])

, VarToStr(cW_Import.Wrappers[DateEdit_Import_Start].Value)

, VarToStr(cW_Import.Wrappers[DateEdit_Import_End].Value)

, VarToStr(cW_Import.Wrappers[ButtonEdit_Import_Order].Value)

, VarToStr(cW_Import.Wrappers[PopupEdit_Import_EG].Value)

, VarToStr(wsh.Cells.Item[i, 11])

, VarToStr(wsh.Cells.Item[i, 9])

, VarToStr(wsh.Cells.Item[i, 10])

, VarToStr(wsh.Cells.Item[i, 8])

, VarToStr(cW_Import.Wrappers[DateEdit_Import_Start_Otrjv].Value)

, VarToStr(cW_Import.Wrappers[DateEdit_Import_End_Otrjv].Value)

, VarToStr(cW_Import.Wrappers[CurrencyEdit_Import_Money].Value)

, VarToStr(cW_Import.Wrappers[CurrencyEdit_Import_NDS].Value)

, VarToStr(cW_Import.Wrappers[ButtonEdit_Import_Nach].Value)

, VarToStr(cW_Import.Wrappers[DateEdit_Import_Reference].Value)

, VarToStr(cW_Import.Wrappers[PopupEdit_Import_Curator].Value)]))

then

begin

res := res + 1;

// Обновим им данные, пусть порадуются, что ли?

Get_SqlData_cxGrid(tv_listeners).Read_Data;

cxGrid_Listeners.Refresh;

TButtonOrderEditWrapper(cW_Import.Wrappers[ButtonEdit_Import_Order]).IsEmpty := False;

TButtonOrderEditWrapper(cW_Import.Wrappers[ButtonEdit_Import_Nach]).IsEmpty := False;

end

end;

end; // Надо искать?

i := i + 1;

end; // Цикл по людям в файле

HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат обработки файла'

, 'Добавлено слушателей: ' + IntToStr(res));

if res > 0

then Get_SqlData_cxGrid(tv_listeners).Read_Data;

if tv_listeners.Controller.FocusedRecord <> nil

then OnChoiceGridRecord_tv_listeners(Get_SqlData_cxGrid(tv_listeners)

, TcxGridDataRow(tv_listeners.Controller.FocusedRecord))

else OnChoiceGridRecord_tv_listeners(Get_SqlData_cxGrid(tv_listeners)

, nil);

end; // Закрыли окно импорта

finally

if assigned(new_form)

then FreeAndNil(new_form);

ProgressBar_Import.Visible := False;

Self.Enabled := True;

end;

finally

ew.Close(False, EmptyParam, EmptyParam, LCID);

ea.Disconnect;

ea.Free;

Fill_tv_listenersExecute(self);

ProgressBar_Import.Visible := False;

end;

end;

{ Добавить новый договор }

procedure TForm_Event.Action_Insert_Contract_MainExecute(Sender: TObject);

begin

cw_New_Contract_Main.ChangesAcceptWrappers;

with cw_New_Contract_Main do

if MSystemServices.ExchangeData(Create_New_Contract_Main

, CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Contract_Main].Value)

, VarToStr(Wrappers[PopupEdit_New_Contract_Main].Value)

, VarToStr(Wrappers[DateEdit_New_Contract_Main_Start].Value)

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

then

begin

TButtonOrderEditWrapper(cw_New_Contract_Main.Wrappers[ButtonEdit_New_Contract_Main]).IsEmpty := False;

cw_New_Contract_Main.Wrappers[ButtonEdit_New_Contract_Main].Clear;

Get_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead := True;

GetParentForm(Panel_New_Contract_Main).ModalResult := mrok;

end;

end;

{ Добавление куратора в БД }

procedure TForm_Event.Action_Insert_CuratorExecute(Sender: TObject);

begin

cW_New_Curator.ChangesAcceptWrappers;

if Get_SqlData_cxGrid(TTree_Curator).Insert_New

(CreateVarAr([VarToStr(cW_New_Curator.wrappers[DateEdit_New_Curator]

.Value),

VarToStr(cW_New_Curator.wrappers[PopupEdit_New_Curator_FIO].Value),

VarToStr(Get_SqlData_cxGrid(TTree_Curator).Parameters[1])])) then

begin

GetParentForm(Panel_New_Curator).ModalResult := mrok;

SetForegroundWindow(GetParentForm(Panel_Import).Handle);

end;

end;

procedure TForm_Event.Action_Insert_New_DirectionExecute(Sender: TObject);

const

Name = 'Направление на оплату';

var

mf: TSForm;

ok: Boolean;

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;

begin

try // 1

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

Panel_New_Direction, tdb_Apply);

cW_New_Direction.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

kind_order := VarToStr

(cW_New_Direction.wrappers

[cxPopupEdit_New_Direction].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 // 3

ks.Free;

exit;

end; // 3

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_Direction,

VarArrayOf([id_p,

VarToStr(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_id_contract.Index])

]));

if ok then

Fill_Contract_ParamsExecute(self);

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

procedure TForm_Event.Action_Insert_tv_listenersExecute(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;

begin

ok := False;

try // 1

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

Panel_New_Listener, tdb_Apply);

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]);

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

FSqlData_TableView := Get_SqlData_cxGrid(tv_listeners);

if ((FSqlData_TableView <> nil) and (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,

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

cxCurrencyEdit_New_Listener_Contract_Money.Properties.EditFormat :=

'0.00';

cxCurrencyEdit_New_Listener_Contract_Money.Properties.

UseThousandSeparator := 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),

'', 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]));

cxCurrencyEdit_New_Listener_Contract_Money.Properties.EditFormat :=

',0.00';

cxCurrencyEdit_New_Listener_Contract_Money.Properties.

UseThousandSeparator := True;

if ok then

ok := FSqlData_TableView.Insert_New

(CreateVarAr

([cW_New_Listener.wrappers

[cxPopupEdit_New_Listener_FIO].Value,

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, cW_New_Listener.wrappers

[cxDateEdit_New_Listener_D_Start].Value, id_p]));

end // 3

else

begin // 5

ok := FSqlData_TableView.Insert_New

(CreateVarAr([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]

.Value, 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,

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,

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

end; // 5

if ok then

begin // 6

FSqlData_TableView.Read_Data;

TButtonOrderEditWrapper(cW_New_Listener.wrappers

[cxButtonEdit_New_Listener_Order_Start]).IsEmpty := False;

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

end; // 6

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

procedure TForm_Event.Action_Insert_tv_r_c_groupExecute(Sender: TObject);

const

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

var

mf: TSForm;

begin

try // 1

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

Panel_New_R_C_Group, tdb_Apply);

cW_New_R_C_Group.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_r_c_groups);

if FSqlData_TableView <> nil then

begin // 3

if FSqlData_TableView.Insert_New(CreateVarAr

([cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value,

cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value,

cW_New_R_C_Group.wrappers[cxPopupEdit_New_R_C_Group_Ed_Group]

.Value, cW_New_R_C_Group.wrappers

[cxPopupEdit_New_R_C_Group_Met_Complex].Value,

FSqlData_TableView.Params[0]

{tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_r_c_plan.Index]}])) then

FSqlData_TableView.Read_Data;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

procedure TForm_Event.Action_Insert_tv_r_c_planExecute(Sender: TObject);

const

Name = 'План повышения квалификации';

var

mf: TSForm;

FRI: Integer;

begin

try // 1

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

Panel_New_R_C_Plan, tdb_Apply);

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

if VarToStr(cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start]

.Value) = '' then

cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start].Value :=

datetostr(Date);

cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup(cxPopupEdit_Plan_Filters_Plan);

if ((VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan]

.Value) <> '') and

(tv_plan.DataController.FocusedRecordIndex <> -1)) then

begin // 5

FRI := tv_plan.DataController.FocusedRecordIndex;

TButtonOrderEditWrapper(cW_New_R_C_Plan.wrappers

[cxButtonEdit_New_R_C_Plan_Paragraph]).SetListProperties

(VarToStr(tv_plan.DataController.Values[FRI, tv_plan_id_paragraph.Index]),

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_idk_order.Index]), '', '',

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_id_order.Index]), '', '',

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_hisdate.Index]),

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_status_order.Index]),

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_status_text.Index]),

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_d_creation.Index]),

VarToStr(tv_plan.DataController.Values[FRI, tv_plan_id_erp_user.Index]), '');

end // 5

else

cW_New_R_C_Plan.wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Clear;

cW_New_R_C_Plan.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_r_c_plan);

if FSqlData_TableView <> nil then

begin // 3

if FSqlData_TableView.Insert_New(CreateVarAr

([cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_End].Value,

cW_New_R_C_Plan.wrappers[cxDateEdit_New_R_C_Plan_D_Start].Value,

cW_New_R_C_Plan.wrappers[cxPopupEdit_New_R_C_Plan_Spec_Div].Value,

cW_New_R_C_Plan.wrappers[cxButtonEdit_New_R_C_Plan_Paragraph].Value]

)) then

begin // 4

FSqlData_TableView.Read_Data;

TButtonOrderEditWrapper(cW_New_R_C_Plan.wrappers

[cxButtonEdit_New_R_C_Plan_Paragraph]).IsEmpty := False;

end; // 4

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

{ Выбор рамочного договора }

procedure TForm_Event.Action_Main_ContractExecute(Sender: TObject);

var

new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fSet_Main_Contract',

TabSheet_Set_Main_Contract.Caption,

Add_Path + TabSheet_Set_Main_Contract.Caption, Panel_Set_Main_Contract,

tdb_Apply);

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

if VarToStr(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find]

.Value) = '' then

cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value :=

datetostr(Date);

new_form.Position := poScreenCenter;

new_form.PanelButtons.auto_cxOkButton.Action :=

cW_Set_Main_Contract.ActionEnter;

new_form.ShowModal;

finally // 1

if assigned(new_form) then

FreeAndNil(new_form);

end; // 1

end;

{ Выдача удостоверений}

procedure TForm_Event.Action_Make_CertificateExecute(Sender: TObject);

var new_form: TSForm; i: integer; data: olevariant;

begin

try // 1

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

, TabSheet_New_Cert.Caption

, Add_Path + TabSheet_New_Cert.Caption, Panel_New_Cert, tdb_Apply);

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

new_form.Position := poScreenCenter;

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

with tv_listeners.DataController do

Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Hours].Value :=

VarToStr(Values[FocusedRecordIndex, tv_listeners_hours_plan.Index]);

if VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value) = ''

then begin

data := MSystemServices.SelectData(Find_Magazine_Reg_Dip

,CreateVarAr(['']), i, 'Не смогли найти журнал выдачи.');

if VarIsArray(data)

then begin

TButtonOrderEditWrapper(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert]).

SetListProperties(VarToStr(data[0][0])

, VarToStr(data[0][1])

, VarToStr(data[0][2])

, VarToStr(data[0][3])

, VarToStr(data[0][4])

, VarToStr(data[0][5])

, VarToStr(data[0][6])

, VarToStr(data[0][7])

, VarToStr(data[0][8])

, VarToStr(data[0][9])

, VarToStr(data[0][10])

, VarToStr(data[0][11])

, VarToStr(data[0][12]));

Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value := data[0][0];

//Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].ValueDisplay := data[0][1];

end;

end

// Обновим начальные цифры в журнале

else ButtonEdit_New_CertPropertiesEditValueChanged(ButtonEdit_New_Cert);

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

{ Ввод нового рамочного договора }

procedure TForm_Event.Action_New_Contract_MainExecute(Sender: TObject);

var

new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_Contract_Main', TabSheet_New_Contract_Main.Caption,

Add_Path + TabSheet_New_Contract_Main.Caption, Panel_New_Contract_Main, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form) then

FreeAndNil(new_form);

end; // 1

end;

{ Выберите рамочный договор }

procedure TForm_Event.Action_New_CuratorExecute(Sender: TObject);

var

new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_Curator', TabSheet_New_Curator.Caption,

Add_Path + TabSheet_New_Curator.Caption, Panel_New_Curator, tdb_Apply);

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

if VarToStr(cW_New_Curator.wrappers[DateEdit_New_Curator].Value) = '' then

cW_New_Curator.wrappers[DateEdit_New_Curator].Value := datetostr(Date);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form) then

FreeAndNil(new_form);

end; // 1

end;

{ Ввод нового рамочного договора}

procedure TForm_Event.Action_New_MCExecute(Sender: TObject);

var

new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_MC', TabSheet_New_Contract_Main.Caption,

Add_Path + TabSheet_New_Contract_Main.Caption, Panel_New_Contract_Main, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

if new_form.ModalResult = mrok

then Get_SqlData_cxGrid(ttree_mc).Read_Data;

finally // 1

if assigned(new_form) then

FreeAndNil(new_form);

end; // 1

end;

{ Задайте новую стоимость договора}

procedure TForm_Event.Action_New_MoneyExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_Money', TabSheet_New_Money.Caption,

Add_Path + TabSheet_New_Money.Caption, Panel_New_Money, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;


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

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

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