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