Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив / Denisov_S_I_UAI-511_Diplom_Versia_FINAL_NAYa.doc
Скачиваний:
78
Добавлен:
09.06.2015
Размер:
8.36 Mб
Скачать

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

program pk

uses

Forms,

Windows,

SysUtils,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{$R *.res}

const

KB_LANG_RUSSIAN = (SUBLANG_DEFAULT shl 10) or LANG_RUSSIAN;

begin

if not MSystemServices.Connect(True, True)

then Exit;

if System.DebugHook >0

then MSystemServices.IsDebugMode:=True;

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

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

Application.Initialize;

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

LoadLocalizerOnce;

vnSessionAgent.RefreshLoginInfo;

vnSessionAgent.RefreshRolesInfo;

ShowWindow(Application.Handle, SW_HIDE);

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

Application.CreateForm(TForm_Main, Form_Main);

Application.Run;

end.

unit Main

interface

uses

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

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

cxPropertiesStore, About_cx, Plan, Event, Dictionaries;

const

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

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

type

TForm_Main = class(TForm)

cxPropertiesStore1: TcxPropertiesStore;

cxPropertiesStore2: TcxPropertiesStore;

ImageList_Aple: TImageList;

ImageList16: TImageList;

ActionList1: TActionList;

Action_Plan: TAction;

Action_Exit: TAction;

ActionList2: TActionList;

Action_Options: TAction;

dxBarManager1: TdxBarManager;

dxBarManager1Bar1: TdxBar;

MAbout: TdxBarSubItem;

dxBarLargeButton5: TdxBarLargeButton;

MNastr: TdxBarSubItem;

dxBarLargeButton6: TdxBarLargeButton;

dxBarLargeButton4: TdxBarLargeButton;

dxBarLargeButton1: TdxBarLargeButton;

Panel_Main: TPanel;

Panel1: TPanel;

Action_Message: TAction;

dxBarButton1: TdxBarButton;

Action_Change_User: TAction;

Action_Refresh_Roles: TAction;

dxBarButton2: TdxBarButton;

dxBarLargeButton2: TdxBarLargeButton;

Action_Event: TAction;

dxBarLargeButton3: TdxBarLargeButton;

Action_Dictionaries: TAction;

procedure Action_MessageExecute(Sender: TObject);

procedure Action_Change_UserExecute(Sender: TObject);

procedure Action_Refresh_RolesExecute(Sender: TObject);

procedure Action_ExitExecute(Sender: TObject);

procedure Action_AboutExecute(Sender: TObject);

procedure Action_PlanExecute(Sender: TObject);

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

procedure FormCreate(Sender: TObject);

procedure Action_EventExecute(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Action_DictionariesExecute(Sender: TObject);

private

{ Private declarations }

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

F_About: TForm_About;

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

F_Plan: TForm_Plan;

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

F_Event: TForm_Event;

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

F_Disctionaries: TForm_Dictionaries;

public

{ Public declarations }

ERP_NAME: string;

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

procedure Refresh_Roles;

{ Скрыть все }

procedure Hide_All;

end;

var

Form_Main: TForm_Main;

implementation

{$R *.dfm}

uses SysServices, LP_u_MA_Interface, grideditclass, standart_new, Get_PK_PPS_Data;

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

procedure TForm_Main.Action_MessageExecute(Sender: TObject);

begin

(vnListAgent as IvnMessageAgent).MA_MessageWindow;

end;

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

procedure TForm_Main.Action_Change_UserExecute(Sender: TObject);

begin

if not MSystemServices.Connect(True)

then Close

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

else Action_Refresh_Roles.Execute;

end;

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

procedure TForm_Main.Action_DictionariesExecute(Sender: TObject);

begin

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

Hide_All;

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

if F_Disctionaries = nil

then begin

F_Disctionaries := TForm_Dictionaries.Create(Self);

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

F_Disctionaries.Refresh_Roles;

F_Disctionaries.ManualDock(Panel1, nil, alClient);

end;

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

F_Disctionaries.Realign;

F_Disctionaries.PageControl_Main.Realign;

F_Disctionaries.Panel_Main.Realign;

F_Disctionaries.Panel_Filter.Realign;

F_Disctionaries.PopupEdit_Filter_Org.Realign;

if Self.Caption <> ''

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

else Self.Caption := F_Disctionaries.Caption;

Application.Title := Self.Caption;

F_Disctionaries.Show;

end;

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

procedure TForm_Main.Hide_All;

begin

if F_Plan <> nil

then

if F_Plan.Visible

then F_Plan.Hide;

if F_Event <> nil

then

if F_Event.Visible

then F_Event.Hide;

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

Self.Caption := ERP_NAME;

Application.Title := Self.Caption;

end;

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

procedure TForm_Main.Refresh_Roles;

var data: olevariant; i: integer;

begin

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

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

if VarIsArray(data)

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

else ERP_NAME := '';

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

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

if VarIsArray(data)

then

begin

if ERP_NAME <> ''

then ERP_NAME := ERP_NAME + '. ';

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

end;

Self.Caption := ERP_NAME;

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

Action_Plan.Enabled := TForm_Plan.IsRoleAccessible;

if (F_Plan <> nil)

then begin

if F_Plan.Visible and not Action_Plan.Enabled

then Hide_All

else F_Plan.Refresh_Roles;

if F_Plan.Visible

then if Self.Caption <> ''

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

else Self.Caption := F_Plan.Caption;

end;

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

Action_Event.Enabled := TForm_Event.IsRoleAccessible;

if (F_Event <> nil)

then begin

if F_Event.Visible and not Action_Event.Enabled

then Hide_All

else F_Event.Refresh_Roles;

if F_Event.Visible

then

if Self.Caption <> ''

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

else Self.Caption := F_Event.Caption;

end;

Action_Dictionaries.Enabled := TForm_Dictionaries.IsRoleAccessible;

if (F_Disctionaries <> nil)

then begin

if F_Disctionaries.Visible and not Action_Event.Enabled

then Hide_All

else F_Disctionaries.Refresh_Roles;

if F_Disctionaries.Visible

then

if Self.Caption <> ''

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

else Self.Caption := F_Disctionaries.Caption;

end;

Application.Title := Self.Caption;

end;

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

procedure TForm_Main.Action_Refresh_RolesExecute(Sender: TObject);

begin

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

if F_About <> nil

then Get_SqlData_cxGrid(F_About.Tree_Roles_User).Read_Data

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

else begin

vnSessionAgent.RefreshLoginInfo;

vnSessionAgent.RefreshRolesInfo;

Refresh_Roles;

end;

end;

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

procedure TForm_Main.Action_EventExecute(Sender: TObject);

begin

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

Hide_All;

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

if F_Event = nil

then begin

F_Event := TForm_Event.Create(Self);

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

F_Event.Refresh_Roles;

F_Event.ManualDock(Panel1, nil, alClient);

end;

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

F_Event.Realign;

F_Event.PageControl_Main.Realign;

F_Event.Panel_Main.Realign;

if Self.Caption <> ''

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

else Self.Caption := F_Event.Caption;

Application.Title := Self.Caption;

F_Event.Show;

end;

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

procedure TForm_Main.Action_ExitExecute(Sender: TObject);

begin

Close;

end;

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

procedure TForm_Main.Action_AboutExecute(Sender: TObject);

begin

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

if F_About = nil

then begin

F_About := TForm_About.Create(Self);

F_About.Refresh_Roles := Refresh_Roles;

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

end;

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

F_About.ShowModal;

end;

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

procedure TForm_Main.Action_PlanExecute(Sender: TObject);

begin

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

Hide_All;

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

if F_Plan = nil

then begin

F_Plan := TForm_Plan.Create(Self);

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

F_Plan.Refresh_Roles;

F_Plan.ManualDock(Panel1, nil, alClient);

end;

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

F_Plan.Realign;

F_Plan.PageControl_Main.Realign;

F_Plan.Panel_Main.Realign;

F_Plan.Panel_Filter.Realign;

F_Plan.PopupEdit_Filter_Org.Realign;

if Self.Caption <> ''

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

else Self.Caption := F_Plan.Caption;

F_Plan.Show;

end;

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

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

begin

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

cxPropertiesStore1.StoreTo(False);

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

if WindowState = wsNormal

then cxPropertiesStore2.StoreTo(False);

end;

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

procedure TForm_Main.FormCreate(Sender: TObject);

begin

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

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

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

Position:=poDesigned;

cxPropertiesStore1.RestoreFrom;

cxPropertiesStore2.RestoreFrom;

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

end;

procedure TForm_Main.FormShow(Sender: TObject);

begin

Refresh_Roles;

{ Скроем все }

Hide_All;

end;

end.

unit Dictionaries

interface

uses

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

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

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

cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,

cxGridCustomView, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,

cxContainer, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,

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

cxCalendar, GridEditClass, cxButtonEdit, cxTimeEdit, SE;

const

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

Action_Q_Edit_Spec = '1401';

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

Action_Q_Edit_Groups = '1402';

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

IDK_Level_Spec = '70';

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

IDK_Discipline = '59454';

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

IDK_Level_Formation = '70508';

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

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

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

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

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

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

type

TForm_Dictionaries = class(TForm)

Panel_Main: TPanel;

cxEditStyleController1: TcxEditStyleController;

cxStyleRepository3: TcxStyleRepository;

st_Group: TcxStyle;

sf_s_ContentEVEN: TcxStyle;

st_Filter_Box: TcxStyle;

st_Footer: TcxStyle;

st_Inactive: TcxStyle;

st_Indicator: TcxStyle;

st_Preview: TcxStyle;

st_Selection: TcxStyle;

st_ContentOdd: TcxStyle;

st_Content_TEXT: TcxStyle;

st_Content_POPUP: TcxStyle;

st_Content_DATE: TcxStyle;

st_Content_QUALIFIER: TcxStyle;

st_Footer_Column: TcxStyle;

st_Content_ID: TcxStyle;

st_Content_Memo: TcxStyle;

st_Content_Project: TcxStyle;

st_Content_Cancel: TcxStyle;

st_Content_ProjectSend: TcxStyle;

st_Content_Owner: TcxStyle;

st_Content_NotOwner: TcxStyle;

st_Content_Hot_Track: TcxStyle;

st_Inc_Search: TcxStyle;

st_Group_By_Box: TcxStyle;

st_Header: TcxStyle;

cxTreeList_Style_1: TcxTreeListStyleSheet;

cxGrid_Style_1: TcxGridBandedTableViewStyleSheet;

cxEditRepository1: TcxEditRepository;

cxER_Date_None_Blank: TcxEditRepositoryDateItem;

cxER_Date_With_Blank: TcxEditRepositoryDateItem;

cxER_Spin_ID: TcxEditRepositorySpinItem;

cxER_Text_RO: TcxEditRepositoryTextItem;

cxER_Memo_RO: TcxEditRepositoryMemoItem;

cxER_Date_RO: TcxEditRepositoryDateItem;

cxPropertiesStore1: TcxPropertiesStore;

Panel_Filter: TPanel;

cxSplitter1: TcxSplitter;

cxLabel1: TcxLabel;

PopupEdit_Filter_Org: TcxPopupEdit;

cxER_Text: TcxEditRepositoryTextItem;

ActionList1: TActionList;

Action_Insert_Spec_Div: TAction;

Action_Insert_Spec: TAction;

Fill_tv_spec: TAction;

Fill_tv_spec_div: TAction;

Fill_tv_intitutes: TAction;

Fill_tv_kind_training: TAction;

Fill_tv_k_l_f: TAction;

Fill_tv_org_div: TAction;

Fill_tv_source_finansing: TAction;

Action_Insert_Ed_Group: TAction;

PageControl_Main: TcxPageControl;

cxTabSheet_Spec: TcxTabSheet;

cxGrid_Spec: TcxGrid;

tv_Spec: TcxGridBandedTableView;

tv_Spec_Name: TcxGridBandedColumn;

tv_Spec_Q: TcxGridBandedColumn;

tv_Spec_ID: TcxGridBandedColumn;

tv_Spec_IDK_Level_Spec: TcxGridBandedColumn;

tv_Spec_id_discipline: TcxGridBandedColumn;

tv_Spec_idk_discipline: TcxGridBandedColumn;

cxGrid_Spec_Level1: TcxGridLevel;

cxTabSheet_Org: TcxTabSheet;

cxGrid_Spec_Div: TcxGrid;

tv_spec_div: TcxGridBandedTableView;

tv_spec_div_name_spec: TcxGridBandedColumn;

tv_spec_div_name_div: TcxGridBandedColumn;

tv_spec_div_kind_training: TcxGridBandedColumn;

tv_spec_div_institute: TcxGridBandedColumn;

tv_spec_div_source: TcxGridBandedColumn;

tv_spec_div_d_start: TcxGridBandedColumn;

tv_spec_div_d_end: TcxGridBandedColumn;

tv_spec_div_id_spec_div: TcxGridBandedColumn;

tv_spec_div_id_spec: TcxGridBandedColumn;

tv_spec_div_id_d: TcxGridBandedColumn;

tv_spec_div_idk_training: TcxGridBandedColumn;

tv_spec_div_id_d_institute: TcxGridBandedColumn;

tv_spec_div_id_source: TcxGridBandedColumn;

tv_spec_div_idk_level_formation: TcxGridBandedColumn;

cxGridLevel1: TcxGridLevel;

cxGrid_Ed_Group: TcxGrid;

tv_ed_group: TcxGridBandedTableView;

tv_ed_group_name: TcxGridBandedColumn;

tv_ed_group_kind_group: TcxGridBandedColumn;

tv_ed_group_d_start: TcxGridBandedColumn;

tv_ed_group_d_end: TcxGridBandedColumn;

tv_ed_group_id_ed_group: TcxGridBandedColumn;

tv_ed_group_id_spec_div: TcxGridBandedColumn;

tv_ed_group_idk_group: TcxGridBandedColumn;

tv_ed_group_level_group: TcxGridBandedColumn;

cxGridLevel6: TcxGridLevel;

cxSplitter3: TcxSplitter;

cxTabSheet_Editing: TcxTabSheet;

cxPageControl1: TcxPageControl;

cxTabSheet_Division: TcxTabSheet;

cxGrid_Org_Division: TcxGrid;

tv_Org_Division: TcxGridBandedTableView;

tv_Org_Division_Abbr: TcxGridBandedColumn;

tv_Org_Division_Name: TcxGridBandedColumn;

tv_Org_Division_ID: TcxGridBandedColumn;

cxGrid_Org_Division_Level1: TcxGridLevel;

cxTabSheet_Institutes: TcxTabSheet;

cxGrid_Institutes: TcxGrid;

tv_institutes: TcxGridBandedTableView;

tv_institutes_Abbr: TcxGridBandedColumn;

tv_institutes_Name: TcxGridBandedColumn;

tv_institutes_ID: TcxGridBandedColumn;

cxGridLevel2: TcxGridLevel;

cxTabSheet_Kind_Training: TcxTabSheet;

cxGrid_Kind_Training: TcxGrid;

tv_Kind_Training: TcxGridBandedTableView;

tv_Kind_Training_Name: TcxGridBandedColumn;

tv_Kind_Training_IDK_TRAINING: TcxGridBandedColumn;

cxGridLevel4: TcxGridLevel;

cxTabSheet_K_L_F: TcxTabSheet;

cxGrid_K_L_F: TcxGrid;

tv_klf: TcxGridBandedTableView;

tv_klf_idk_lf: TcxGridBandedColumn;

tv_klf_name: TcxGridBandedColumn;

tv_klf_qualifer: TcxGridBandedColumn;

cxGridLevel3: TcxGridLevel;

cxTabSheet_SF: TcxTabSheet;

cxGrid_Source_Financing: TcxGrid;

tv_Source_Financing: TcxGridBandedTableView;

tv_Source_Financing_Abbreviation: TcxGridBandedColumn;

tv_Source_Financing_Name: TcxGridBandedColumn;

tv_Source_Financing_Abbr_Div: TcxGridBandedColumn;

tv_Source_Financing_Division: TcxGridBandedColumn;

tv_Source_Financing_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_Activity: TcxGridBandedColumn;

tv_Source_Financing_Date_Close: TcxGridBandedColumn;

tv_Source_Financing_ID: TcxGridBandedColumn;

tv_Source_Financing_ID_D: TcxGridBandedColumn;

tv_Source_Financing_ID_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_ID_Activity: TcxGridBandedColumn;

cxGridLevel7: TcxGridLevel;

cxTabSheet_Add: TcxTabSheet;

cxPageControl2: TcxPageControl;

cxTabSheet_Add_Spec: TcxTabSheet;

Panel_New_Spec: TPanel;

cxLabel22: TcxLabel;

cxTextEditNew_Spec_Name: TcxTextEdit;

cxTextEditNew_Spec_Quality: TcxTextEdit;

cxLabel6: TcxLabel;

cxTabSheet_New_Spec_Div: TcxTabSheet;

Panel_New_Spec_Div: TPanel;

cxLabel2: TcxLabel;

cxLabel24: TcxLabel;

cxLabel25: TcxLabel;

cxLabel4: TcxLabel;

cxLabel5: TcxLabel;

cxDateEditNew_Spec_Div_D_Start: TcxDateEdit;

cxDateEditNew_Spec_Div_D_End: TcxDateEdit;

cxPopupEditNew_Spec_Div_Institute: TcxPopupEdit;

cxLabel3: TcxLabel;

cxPopupEditNew_Spec_Div_Div: TcxPopupEdit;

cxPopupEditNew_Spec_Div_Spec: TcxPopupEdit;

cxPopupEditNew_Spec_Div_KT: TcxPopupEdit;

cxLabel8: TcxLabel;

cxPopupEditNew_Spec_Div_SF: TcxPopupEdit;

cxTabSheet_Ed_Group: TcxTabSheet;

Panel_New_Ed_Group: TPanel;

cxLabel12: TcxLabel;

cxTextEdit_New_Ed_Group_Name: TcxTextEdit;

cxLabel14: TcxLabel;

cxDateEdit_New_Ed_Group_D_End: TcxDateEdit;

cxDateEdit_New_Ed_Group_D_Start: TcxDateEdit;

cxLabel15: TcxLabel;

Panel_SD_Params: TPanel;

cxPageControl3: TcxPageControl;

cxTabSheet1: TcxTabSheet;

cxTabSheet2: TcxTabSheet;

cxGrid_Commission: TcxGrid;

TTree_Commission: TcxGridBandedTableView;

Tree_Commission_Order: TcxGridBandedColumn;

Tree_Commission_Kind: TcxGridBandedColumn;

Tree_Commission_Start: TcxGridBandedColumn;

Tree_Commission_End: TcxGridBandedColumn;

Tree_Commission_ID_Paragraph: TcxGridBandedColumn;

Tree_Commission_ID_Spec: TcxGridBandedColumn;

Tree_Commission_ID_D: TcxGridBandedColumn;

Tree_Commission_ID_Order: TcxGridBandedColumn;

cxGrid_Commission_Level5: TcxGridLevel;

cxTabSheet_New_Sommission: TcxTabSheet;

Panel_New_Commission: TPanel;

cxLabel7: TcxLabel;

cxLabel9: TcxLabel;

DateEdit_New_Commission_End: TcxDateEdit;

DateEdit_New_Commission_Start: TcxDateEdit;

cxLabel10: TcxLabel;

ButtonEdit_New_Commission: TcxButtonEdit;

Tree_Commission_IDK_Order: TcxGridBandedColumn;

Tree_Commission_Status_Order: TcxGridBandedColumn;

Tree_Commission_ID_MT: TcxGridBandedColumn;

Tree_Commission_ID_MO: TcxGridBandedColumn;

Tree_Commission_ID_ERP: TcxGridBandedColumn;

Tree_Commission_User: TcxGridBandedColumn;

Action_New_Commission: TAction;

Action_Insert_New_Commission: TAction;

Tree_Commission_ID: TcxGridBandedColumn;

Tree_Commission_ID_Kind: TcxGridBandedColumn;

cxGrid_Members: TcxGrid;

TTree_Members: TcxGridBandedTableView;

Tree_Members_Order: TcxGridBandedColumn;

Tree_Members_Kind: TcxGridBandedColumn;

Tree_Members_Start: TcxGridBandedColumn;

Tree_Members_End: TcxGridBandedColumn;

Tree_Members_User: TcxGridBandedColumn;

Tree_Members_ID_Paragraph: TcxGridBandedColumn;

Tree_Members_ID_Order: TcxGridBandedColumn;

Tree_Members_IDK_Order: TcxGridBandedColumn;

Tree_Members_Status_Order: TcxGridBandedColumn;

Tree_Members_ID_MT: TcxGridBandedColumn;

Tree_Members_ID_MO: TcxGridBandedColumn;

Tree_Members_ID_ERP: TcxGridBandedColumn;

Tree_Members_ID_Commission: TcxGridBandedColumn;

cxGrid_Members_Level1: TcxGridLevel;

Tree_Members_Post: TcxGridBandedColumn;

Tree_Members_FIO: TcxGridBandedColumn;

Tree_Members_ID_Post: TcxGridBandedColumn;

Tree_Members_ID_E: TcxGridBandedColumn;

cxSplitter2: TcxSplitter;

cxTabSheet_New_Member: TcxTabSheet;

Panel_New_Member: TPanel;

cxLabel11: TcxLabel;

cxLabel13: TcxLabel;

DateEdit_New_Member_End: TcxDateEdit;

DateEdit_New_Member_Start: TcxDateEdit;

cxLabel16: TcxLabel;

ButtonEdit_New_Member: TcxButtonEdit;

cxLabel17: TcxLabel;

cxGrid_Post: TcxGrid;

TTree_Post: TcxGridBandedTableView;

Tree_Post_Name: TcxGridBandedColumn;

Tree_Post_ID: TcxGridBandedColumn;

cxGrid_Post_Level1: TcxGridLevel;

PopupEdit_New_Member_Post: TcxPopupEdit;

Action_New_Member: TAction;

Tree_Members_ID: TcxGridBandedColumn;

cxLabel18: TcxLabel;

PopupEdit_New_Member_FIO: TcxPopupEdit;

Action_Insert_New_Member: TAction;

procedure FormDestroy(Sender: TObject);

procedure Action_Insert_Spec_DivExecute(Sender: TObject);

procedure Action_Insert_SpecExecute(Sender: TObject);

procedure Fill_tv_specExecute(Sender: TObject);

procedure PageControl_MainPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

procedure Fill_tv_spec_divExecute(Sender: TObject);

procedure Fill_tv_intitutesExecute(Sender: TObject);

procedure Fill_tv_kind_trainingExecute(Sender: TObject);

procedure Fill_tv_k_l_fExecute(Sender: TObject);

procedure Fill_tv_org_divExecute(Sender: TObject);

procedure Fill_tv_source_finansingExecute(Sender: TObject);

procedure tv_spec_div_institutePropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_name_divPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_name_specPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_kind_trainingPropertiesInitPopup(Sender: TObject);

procedure tv_spec_div_sourcePropertiesInitPopup(Sender: TObject);

procedure PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(Sender: TObject);

procedure Action_Insert_Ed_GroupExecute(Sender: TObject);

procedure cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(

Sender: TObject);

procedure tv_SpecSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_SpecEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_spec_divSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_spec_divEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_ed_groupSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_ed_groupEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure FormShow(Sender: TObject);

procedure tv_SpecMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

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

Shift: TShiftState);

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

Shift: TShiftState);

procedure tv_ed_groupMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

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

Shift: TShiftState);

procedure tv_spec_divMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure PopupEdit_Filter_OrgPropertiesEditValueChanged(Sender: TObject);

procedure Action_New_CommissionExecute(Sender: TObject);

procedure cxPageControl3Change(Sender: TObject);

procedure Action_Insert_New_CommissionExecute(Sender: TObject);

procedure Action_New_MemberExecute(Sender: TObject);

procedure Action_Insert_New_MemberExecute(Sender: TObject);

private

{ Private declarations }

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

REdit_Spec: boolean;

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

REdit_Groups: boolean;

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

FSqlData_TableView: TSqlData_cxGridTableView;

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

Curr_Reg_Path: String;

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

cW_Institute_Filter, cW_New_Spec, cW_New_Ed_Group, cW_New_Spec_Div

, cW_New_Commission, cw_New_Member: TContainerWrappers;

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

Current_Form_SE: TForm_SE;

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

procedure DoChanged_cW_New_Spec(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Spec_Div(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Ed_Group(AWrapper: TCustomEditWrapper);

procedure Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;

ARecordIndex: Integer; var ExchangeParameters: OleVariant);

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

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

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

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

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

function Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

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

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

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

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

procedure Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

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

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

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

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

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

public

{ Public declarations }

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

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

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

procedure Refresh_Roles;

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

class function IsRoleAccessible: Boolean;

end;

var

Form_Dictionaries: TForm_Dictionaries;

implementation

{$R *.dfm}

uses SysServices, Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;

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

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

begin

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

if PIs_Load

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

then begin // 1

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

cxPropertiesStore1.RestoreFrom;

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

if PopupEdit_Filter_Org.Tag <> 0

then begin // 2

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

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

end // 2

else begin // 3

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

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

end; // 3

end // 1

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

else begin // 4

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

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

then begin // 5

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

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

end // 5

else begin // 6

PopupEdit_Filter_Org.Tag := 0;

PopupEdit_Filter_Org.Text := '';

end; // 6

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

cxPropertiesStore1.StoreTo(True);

end; // 4

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

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

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

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

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

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

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

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

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

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

end;

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

class function TForm_Dictionaries.IsRoleAccessible: Boolean;

begin

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

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

or vnSessionAgent.IsDBA;

end;

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

procedure TForm_Dictionaries.Refresh_Roles;

var DBA: boolean;

begin

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

DBA := vnSessionAgent.IsDBA;

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

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

if PageControl_Main.ActivePageIndex = 1

then cxPageControl3Change(cxPageControl3);

end;

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

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

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

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

then begin // 1

if not FSqlData_TableView.IsFirstRead

then begin // 2

Allow := False;

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

do Allow := Allow or Roles[i];

FSqlData_TableView.ActionInsert.Enabled := Allow;

end // 2

else FSqlData_TableView.ActionInsert.Enabled := False;

end; // 1

end;

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

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

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

var status, id_erp: string;

i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

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

then begin // 1

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

then begin // 2

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

,Status_Column.Index]);

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

,ID_ERP_Column.Index]);

Allow := False;

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

do Allow := Allow or Roles[i];

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

end // 2

else Result := False;

end; // 1

end;

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

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

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

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

then begin // 1

Allow := False;

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

do Allow := Allow or Roles[i];

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

end // 1

else Result := False;

end;

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

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

ID_ERP_Column: TcxGridColumn; Roles: array of boolean);

var i: integer;

Allow: boolean;

begin

FSqlData_TableView := Get_SqlData_cxGrid(TV);

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

then begin // 1

Allow := False;

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

do Allow := Allow or Roles[i];

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

and Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User, false)

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

end; // 1

end;

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

procedure TForm_Dictionaries.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_Dictionaries.Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;

ARecordIndex: Integer; var ExchangeParameters: OleVariant);

begin

if Sender.GridTableView = tv_spec

then with Sender.GridTableView.DataController do

ExchangeParameters := CreateVarAr([Values[FocusedRecordIndex, tv_Spec_ID.Index]]);

end;

procedure TForm_Dictionaries.tv_ed_groupEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

Allow_Editing(Sender, [REdit_Groups]);

end;

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

Shift: TShiftState);

begin

if Key = VK_INSERT

then Allow_Insert(tv_ed_group, [REdit_Groups]);

end;

procedure TForm_Dictionaries.tv_ed_groupMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight

then Allow_Insert(tv_ed_group, [REdit_Groups]);

end;

procedure TForm_Dictionaries.tv_ed_groupSelectionChanged(

Sender: TcxCustomGridTableView);

begin

if Sender = TTree_Commission

then with TTree_Commission.Controller do

Get_SqlData_cxGrid(TTree_Commission).ActionDelete.Enabled :=

(SelectedRowCount > 0)

and Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled

And Is_Value(Tree_Commission_Status_Order, '2', False)

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

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

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

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

else

if Sender = TTree_Members

then with TTree_Members.Controller do

Get_SqlData_cxGrid(TTree_Members).ActionDelete.Enabled :=

(SelectedRowCount > 0)

and Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled

And Is_Value(Tree_Members_Start, '2', False)

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

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

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

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

else Allow_Delete(Sender, [REdit_Groups]);

end;

procedure TForm_Dictionaries.tv_SpecEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

Allow_Editing(Sender,[REdit_Spec]);

end;

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

Shift: TShiftState);

begin

if Key = VK_INSERT

then Allow_Insert(tv_spec, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_SpecMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight

then Allow_Insert(tv_spec, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_SpecSelectionChanged(Sender: TcxCustomGridTableView);

begin

Allow_Delete(Sender, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_spec_divEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

Allow_Editing(Sender, [REdit_Spec]);

end;

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

Shift: TShiftState);

begin

if Key = VK_INSERT

then Allow_Insert(tv_spec_div, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_spec_divMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight

then Allow_Insert(tv_spec_div, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_spec_divSelectionChanged(

Sender: TcxCustomGridTableView);

begin

Allow_Delete(Sender, [REdit_Spec]);

end;

procedure TForm_Dictionaries.tv_spec_div_institutePropertiesInitPopup(Sender: TObject);

begin

Fill_tv_intitutesExecute(self);

end;

procedure TForm_Dictionaries.tv_spec_div_kind_trainingPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_kind_trainingExecute(self);

end;

procedure TForm_Dictionaries.tv_spec_div_name_divPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_org_divExecute(self);

end;

procedure TForm_Dictionaries.tv_spec_div_name_specPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_specExecute(self);

end;

procedure TForm_Dictionaries.tv_spec_div_sourcePropertiesInitPopup(Sender: TObject);

begin

Fill_tv_source_finansingExecute(self);

end;

{ Настройка списков }

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

begin

DateEdit_New_Commission_Start.Date := Date;

DateEdit_New_Member_Start.Date := Date;

if AForm_SE <> nil then

Current_Form_SE := AForm_SE;

if not assigned(Current_Form_SE) then

Current_Form_SE := TForm_SE.Create(self);

Curr_Reg_Path := AReg_Path;

{ Описание для различных оберток }

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

cW_Institute_Filter := TContainerWrappers.Create;

cW_Institute_Filter.AddPopupEdit(PopupEdit_Filter_Org, false, false, cxGrid_Institutes,

tv_institutes ,tv_institutes_ID, [tv_institutes_Abbr, tv_institutes_Name], '');

cW_Institute_Filter.OnChangedValueWrapper := DoChanged_cW_Intitute_Filter;;

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

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

cW_New_Spec := TContainerWrappers.Create;

cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name, true, false, '');

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

cW_New_Spec.OnChangeWrapper := DoChanged_cW_New_Spec;

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

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

cW_New_Ed_Group := TContainerWrappers.Create;

cW_New_Ed_Group.AddCustomEdit(cxTextEdit_New_Ed_Group_Name, true, false, '');

cW_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_Start, true, false, '');

cW_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_End, false, false, '');

cW_New_Ed_Group.OnChangeWrapper := DoChanged_cW_New_Ed_Group;

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

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

cW_New_Spec_Div := TContainerWrappers.Create;

cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Institute, true, false, cxGrid_Institutes,

tv_institutes, tv_institutes_ID, [tv_institutes_Abbr, tv_institutes_Name], '');

cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Div, true, false, cxGrid_Org_Division,

tv_Org_Division, tv_Org_Division_ID, [tv_Org_Division_Abbr, tv_Org_Division_Name], '');

cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Spec, true, false, cxGrid_Spec,

tv_spec, tv_Spec_ID, [tv_Spec_Name], '');

cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_KT, true, false, cxGrid_Kind_Training,

tv_Kind_Training, tv_Kind_Training_IDK_TRAINING, [tv_Kind_Training_Name], '');

cW_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_Start, true, false, '');

cW_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_End, false, false, '');

cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_SF, false, false, cxGrid_Source_Financing,

tv_Source_Financing, tv_Source_Financing_ID, [tv_Source_Financing_Name], '');

cW_New_Spec_Div.OnChangeWrapper := DoChanged_cW_New_Spec_Div;

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

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

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

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

if Get_SqlData_cxGrid(tv_Org_Division) = nil

then with TSqlData_cxGridTableView.Create(tv_Org_Division)

do begin

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

Editing := false;

GUID_Select := Get_List_Divisions;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec]);

Select_Columns.Add(tv_Org_Division_Abbr);

Select_Columns.Add(tv_Org_Division_Name);

Select_Columns.Add(tv_Org_Division_ID);

Key_Columns.Add(tv_Org_Division_ID);

Stat_Column := tv_Org_Division_Abbr;

NameColumnsForPopupEdit.Add(tv_Org_Division_Abbr);

NameColumnsForPopupEdit.Add(tv_Org_Division_Name);

end;

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

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

// добавление институтов

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

if Get_SqlData_cxGrid(tv_institutes) = nil

then with TSqlData_cxGridTableView.Create(tv_institutes)

do begin

Editing := false;

Table_Name := 'Институты';

GUID_Select := Get_List_Institutes;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec]);

Select_Columns.Add(tv_institutes_Abbr);

Select_Columns.Add(tv_institutes_Name);

Select_Columns.Add(tv_institutes_ID);

Key_Columns.Add(tv_institutes_ID);

Stat_Column := tv_institutes_Abbr;

NameColumnsForPopupEdit.Add(tv_institutes_Abbr);

NameColumnsForPopupEdit.Add(tv_institutes_Name);

end;

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

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

// добавление специальностей

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

if Get_SqlData_cxGrid(tv_Spec) = nil

then with TSqlData_cxGridTableView.Create(tv_Spec)

do begin

Editing := true;

Table_Name := 'Специальности';

GUID_Select := Get_List_Spec_By_Params;

GUID_Update := d_P_SPECIALITY;

GUID_Delete := Delete_Spec;

StepOnTopDataRecordMode := True;

OnBefore_Delete_Exchange := Before_Delete_Exchange;

Params := CreateVarAr([IDK_Level_Spec,'']);

Select_Columns.Add(tv_Spec_Name, 2);

Select_Columns.Add(tv_Spec_Q, 1);

Select_Columns.Add(tv_Spec_ID, 0);

Select_Columns.Add(tv_Spec_IDK_Level_Spec, 6);

Select_Columns.Add(tv_Spec_id_discipline);

Select_Columns.Add(tv_Spec_idk_discipline);

Key_Columns.Add(tv_Spec_ID, 0);

Stat_Column := tv_Spec_Name;

NameColumnsForPopupEdit.Add(tv_Spec_Name);

ActionInsert.OnExecute := Action_Insert_Spec.OnExecute;

end;

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

// добавление организаторов обучения (специальности подразделений)

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

if Get_SqlData_cxGrid(tv_spec_div) = nil

then with TSqlData_cxGridTableView.Create(tv_spec_div)

do begin

Editing := true;

Single := false;

Table_Name := 'Специальности подразделений';

GUID_Select := Spec_div;

GUID_Update := d_P_SPECIALITIES_DIVISION;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec,'']);

Stat_Column := tv_spec_div_institute;

NameColumnForPopupEdit := tv_spec_div_institute;

with Select_Columns

do begin

Add(tv_spec_div_name_spec,1);

Add(tv_spec_div_name_div,2);

Add(tv_spec_div_kind_training,3);

Add(tv_spec_div_institute,6);

Add(tv_spec_div_source,12);

Add(tv_spec_div_d_start,4);

Add(tv_spec_div_d_end,5);

Add(tv_spec_div_id_spec_div,0);

Add(tv_spec_div_id_spec,1);

Add(tv_spec_div_id_d,2);

Add(tv_spec_div_idk_training,3);

Add(tv_spec_div_id_d_institute,6);

Add(tv_spec_div_id_source,12);

Add(tv_spec_div_idk_level_formation,8);

end;

Key_Columns.Add(tv_spec_div_id_spec_div,0);

Clear_Columns.Add(tv_spec_div_source,12);

with PopupColumnsList.Add(tv_spec_div_institute)

do begin

SelfKeyColumn := tv_spec_div_id_d_institute;

PopupKeyColumn := tv_institutes_ID;

PopupNameColumn := tv_institutes_Name;

end;

with PopupColumnsList.Add(tv_spec_div_name_div)

do begin

SelfKeyColumn := tv_spec_div_id_d;

PopupKeyColumn := tv_Org_Division_ID;

PopupNameColumn := tv_Org_Division_Name;

end;

with PopupColumnsList.Add(tv_spec_div_name_spec)

do begin

SelfKeyColumn := tv_spec_div_id_spec;

PopupKeyColumn := tv_Spec_ID;

PopupNameColumn := tv_Spec_Name;

end;

with PopupColumnsList.Add(tv_spec_div_kind_training)

do begin

SelfKeyColumn := tv_spec_div_idk_training;

PopupKeyColumn := tv_Kind_Training_IDK_TRAINING;

PopupNameColumn := tv_Kind_Training_Name;

end;

with PopupColumnsList.Add(tv_spec_div_source)

do begin

SelfKeyColumn := tv_spec_div_id_source;

PopupKeyColumn := tv_Source_Financing_ID;

PopupNameColumn := tv_Source_Financing_Name;

end;

with Insert_Columns

do begin

Add(tv_spec_div_id_spec,1);

Add(tv_spec_div_id_d,2);

Add(tv_spec_div_idk_training,3);

Add(tv_spec_div_d_start,4);

Add(tv_spec_div_d_end,5);

Add(tv_spec_div_id_d_institute,6);

Add(tv_spec_div_idk_level_formation,8);

Add(tv_spec_div_id_source,12);

end;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_Insert_Spec_Div.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(Clear_Columns.ClearActions[tv_spec_div_source]);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

LogicMode := lmLastChoice;

OnChoiceGridRecord := OnChoiceGridRecord_tv_spec_div;

end;

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

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

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

with TSqlData_cxGridTableView.Create(tv_Kind_Training)

do begin

Editing:=False;

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

GUID_Select:=Kind_Training;

StepOnTopDataRecordMode := True;

Single:=False;

with Select_Columns

do begin

Add(tv_Kind_Training_IDK_TRAINING);

Add(tv_Kind_Training_Name);

end;

Key_Columns.Add(tv_Kind_Training_IDK_TRAINING);

Stat_Column:=tv_Kind_Training_Name;

NameColumnForPopupEdit:=tv_Kind_Training_Name;

end;

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

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

//Вид уровня образования

with TSqlData_cxGridTableView.Create(tv_klf)

do begin

Editing:=False;

Table_Name:='Виды уровня образования';

GUID_Select:=K_L_F;

StepOnTopDataRecordMode := True;

Single:=False;

with Select_Columns

do begin

Add(tv_klf_name);

Add(tv_klf_idk_lf);

Add(tv_klf_qualifer);

end;

Key_Columns.Add(tv_klf_idk_lf);

Stat_Column := tv_klf_name;

NameColumnForPopupEdit := tv_klf_name;

end;

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

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

//Источник финансирования

if Get_SqlData_cxGrid(tv_Source_Financing) = nil

then with TSqlData_cxGridTableView.Create(tv_Source_Financing)

do begin

Table_Name:='Источники финансирования';

GUID_Select:=S_F;

StepOnTopDataRecordMode := True;

Editing := false;

ParametersCount := 1;

Select_Columns.Add(tv_Source_Financing_Abbreviation);

Select_Columns.Add(tv_Source_Financing_Name);

Select_Columns.Add(tv_Source_Financing_Abbr_Div);

Select_Columns.Add(tv_Source_Financing_Division);

Select_Columns.Add(tv_Source_Financing_Kind_Source);

Select_Columns.Add(tv_Source_Financing_Activity);

Select_Columns.Add(tv_Source_Financing_Date_Close);

Select_Columns.Add(tv_Source_Financing_ID);

Select_Columns.Add(tv_Source_Financing_ID_D);

Select_Columns.Add(tv_Source_Financing_ID_Kind_Source);

Select_Columns.Add(tv_Source_Financing_ID_Activity);

Key_Columns.Add(tv_Source_Financing_ID);

PopupActions.Add(ActionUpdate);

Stat_Column:=tv_Source_Financing_Abbreviation;

NameColumnForPopupEdit:=tv_Source_Financing_Name;

end;

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

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

//Учебные группы

with TSqlData_cxGridTableView.Create(tv_ed_group)

do begin

Editing:=True;

Table_Name:='Учебные группы';

Params := CreateVarAr(['']);

GUID_Select := Ed_Groups;

GUID_Update := d_P_EDUCATIONAL_GROUP;

StepOnTopDataRecordMode := True;

Single:=False;

with Select_Columns

do begin

Add(tv_ed_group_name,1);

Add(tv_ed_group_kind_group,8);

Add(tv_ed_group_d_start,4);

Add(tv_ed_group_d_end,5);

Add(tv_ed_group_id_ed_group,0);

Add(tv_ed_group_id_spec_div,2);

Add(tv_ed_group_idk_group,8);

Add(tv_ed_group_level_group,3);

end;

with Insert_Columns

do begin

Add(tv_ed_group_name,1);

Add(tv_ed_group_id_spec_div,2);

Add(tv_ed_group_level_group,3);

Add(tv_ed_group_d_start,4);

Add(tv_ed_group_d_end,5);

Add(tv_ed_group_idk_group,8);

end;

Key_Columns.Add(tv_ed_group_id_ed_group,0);

ActionInsert.OnExecute := Action_Insert_Ed_Group.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

Stat_Column := tv_ed_group_name;

NameColumnForPopupEdit := tv_ed_group_name;

end;

// Комиссии

if Get_SqlData_cxGrid(TTree_Commission) = nil

then with TSqlData_cxGridTableView.Create(TTree_Commission)

do begin

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

GUID_Select := Get_List_Commissions_By_ID_D_And_ID_Spec;

GUID_Update := d_P_COMMISSION;

StepOnTopDataRecordMode := True;

LogicMode := lmLastChoice;

OnChoiceGridRecord := OnChoiceGridRecord_tv_spec_div;

ParametersCount := 2;

RequiredParemeters.Add([1, 2]);

Select_Columns.Add(Tree_Commission_Order);

Select_Columns.Add(Tree_Commission_Kind);

Select_Columns.Add(Tree_Commission_User);

Select_Columns.Add(Tree_Commission_Start, 4);

Select_Columns.Add(Tree_Commission_End, 5);

Select_Columns.Add(Tree_Commission_ID_Paragraph, 2);

Select_Columns.Add(Tree_Commission_ID_Order, 2);

Select_Columns.Add(Tree_Commission_IDK_Order, 2);

Select_Columns.Add(Tree_Commission_Status_Order, 2);

Select_Columns.Add(Tree_Commission_ID_ERP, 2);

Select_Columns.Add(Tree_Commission_ID_MT, 2);

Select_Columns.Add(Tree_Commission_ID_MO, 2);

Select_Columns.Add(Tree_Commission_ID_Spec, 8);

Select_Columns.Add(Tree_Commission_ID_D, 9);

Select_Columns.Add(Tree_Commission_ID, 1);

Select_Columns.Add(Tree_Commission_ID_Kind, 3);

Key_Columns.Add(Tree_Commission_ID, 1);

Insert_Columns.Add(Tree_Commission_ID_Paragraph, 2);

Insert_Columns.Add(Tree_Commission_ID_Spec, 8);

Insert_Columns.Add(Tree_Commission_ID_D, 9);

Insert_Columns.Add(Tree_Commission_ID_Kind, 3);

Insert_Columns.Add(Tree_Commission_Start, 4);

Insert_Columns.Add(Tree_Commission_End, 5);

OptionsOrder.Column_ID_order := Tree_Commission_ID_Order;

OptionsOrder.Column_ID_paragraph := Tree_Commission_ID_Paragraph;

OptionsOrder.Column_IDk_order := Tree_Commission_IDK_Order;

OptionsOrder.Column_ID_erp_user := Tree_Commission_ID_ERP;

OptionsOrder.Column_Status_Order := Tree_Commission_Status_Order;

OptionsOrder.Column_User_Name := Tree_Commission_User;

OptionsOrder.Column_Status_Text := Tree_Commission_Order;

OptionsOrder.Column_name_Kind_paragraph := Tree_Commission_Kind;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

Stat_Column := Tree_Commission_Order;

NameColumnForPopupEdit := Tree_Commission_Order;

ActionInsert.OnExecute := Action_New_Commission.OnExecute;

cW_New_Commission := TContainerWrappers.Create;

cW_New_Commission.AddButtonOrderEdit(ButtonEdit_New_Commission, True, False, ''

, ['306']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

cW_New_Commission.AddCustomEdit(DateEdit_New_Commission_Start, true, false, '');

cW_New_Commission.AddCustomEdit(DateEdit_New_Commission_End, false, false, '');

cW_New_Commission.ActionEnter := Action_Insert_New_Commission;

end;

// Должности в комиссиях

if Get_SqlData_cxGrid(TTree_Post) = nil

then with TSqlData_cxGridTableView.Create(TTree_Post)

do begin

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

GUID_Select := Get_Posts_For_Members;

StepOnTopDataRecordMode := True;

Editing := false;

Select_Columns.Add(Tree_Post_Name);

Select_Columns.Add(Tree_Post_ID);

Key_Columns.Add(Tree_Post_ID);

PopupActions.Add(ActionUpdate);

Stat_Column := Tree_Post_Name;

NameColumnForPopupEdit := Tree_Post_Name;

end;

// Члены Комиссии

if Get_SqlData_cxGrid(TTree_Members) = nil

then with TSqlData_cxGridTableView.Create(TTree_Members)

do begin

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

GUID_Select := Get_Members_Commission_By_ID;

GUID_Update := d_P_COMMISSION_MEMBERS;

StepOnTopDataRecordMode := True;

ParametersCount := 1;

RequiredParemeters.Add([1]);

Select_Columns.Add(Tree_Members_Order);

Select_Columns.Add(Tree_Members_Kind);

Select_Columns.Add(Tree_Members_Post, 7);

Select_Columns.Add(Tree_Members_FIO, 1);

Select_Columns.Add(Tree_Members_User, 3);

Select_Columns.Add(Tree_Members_Start, 4);

Select_Columns.Add(Tree_Members_End, 6);

Select_Columns.Add(Tree_Members_ID_Paragraph, 3);

Select_Columns.Add(Tree_Members_ID_Order, 3);

Select_Columns.Add(Tree_Members_IDK_Order, 3);

Select_Columns.Add(Tree_Members_Status_Order, 3);

Select_Columns.Add(Tree_Members_ID_ERP, 3);

Select_Columns.Add(Tree_Members_ID_MT, 3);

Select_Columns.Add(Tree_Members_ID_MO, 3);

Select_Columns.Add(Tree_Members_ID_Post, 7);

Select_Columns.Add(Tree_Members_ID_Commission, 2);

Select_Columns.Add(Tree_Members_ID_E, 1);

Select_Columns.Add(Tree_Members_ID, 0);

Key_Columns.Add(Tree_Members_ID, 0);

Insert_Columns.Add(Tree_Members_ID_Paragraph, 3);

Insert_Columns.Add(Tree_Members_ID_Commission, 2);

Insert_Columns.Add(Tree_Members_ID_Post, 7);

Insert_Columns.Add(Tree_Members_ID_E, 1);

Insert_Columns.Add(Tree_Members_Start, 4);

Insert_Columns.Add(Tree_Members_End, 6);

OptionsOrder.Column_ID_order := Tree_Members_ID_Order;

OptionsOrder.Column_ID_paragraph := Tree_Members_ID_Paragraph;

OptionsOrder.Column_IDk_order := Tree_Members_IDK_Order;

OptionsOrder.Column_ID_erp_user := Tree_Members_ID_ERP;

OptionsOrder.Column_Status_Order := Tree_Members_Status_Order;

OptionsOrder.Column_User_Name := Tree_Members_User;

OptionsOrder.Column_Status_Text := Tree_Members_Order;

OptionsOrder.Column_name_Kind_paragraph := Tree_Members_Kind;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

with PopupColumnsList.Add(Tree_Members_Post) do

begin

SelfKeyColumn := Tree_Members_ID_Post;

PopupKeyColumn := Tree_Post_ID;

PopupNameColumn := Tree_Post_Name;

end;

with PopupColumnsList.Add(Tree_Members_FIO) do

begin

SelfKeyColumn := Tree_Members_ID_E;

PopupKeyColumn := Current_Form_SE.cxGrid_FIO_ID_E;

PopupNameColumn := Current_Form_SE.cxGrid_FIO_Full;

end;

Stat_Column := Tree_Members_Post;

ActionInsert.OnExecute := Action_New_Member.OnExecute;

TcxPopupEditProperties(Tree_Members_FIO.Properties).PopupControl :=

Current_Form_SE;

PopupEdit_New_Member_FIO.Properties.PopupControl := Current_Form_SE;

cw_New_Member := TContainerWrappers.Create;

cw_New_Member.AddButtonOrderEdit(ButtonEdit_New_Member, True, False, ''

, ['306']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

cw_New_Member.AddPopupEdit(PopupEdit_New_Member_FIO, True, False

, Current_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO

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

cw_New_Member.AddPopupEdit(PopupEdit_New_Member_Post, True, False

, nil, nil, Tree_Post_ID, [Tree_Post_Name], '');

cw_New_Member.AddCustomEdit(DateEdit_New_Member_Start, true, false, '');

cw_New_Member.AddCustomEdit(DateEdit_New_Member_End, false, false, '');

cw_New_Member.ActionEnter := Action_Insert_New_Member;

end;

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

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

cxTabSheet_Editing.TabVisible := False;

cxTabSheet_Add.TabVisible := False;

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

Save_Restore_Params(Curr_Reg_Path, True);

end;

procedure TForm_Dictionaries.Action_Insert_Ed_GroupExecute(Sender: TObject);

//const Name = 'Учебные группы';

var

mf: TSForm;

begin

try // 1

mf := CreateSForm(self, 'fNew_Ed_Group'

, cxTabSheet_Ed_Group.Caption

, Add_Path + cxTabSheet_Ed_Group.Caption, Panel_New_Ed_Group, tdb_Apply);

if VarToStr(cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value) = ''

then cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value :=

DateToStr(Date);

cW_New_Ed_Group.OnChangeWrapper(nil);

mf.Position := poScreenCenter;

if mf.ShowModal = mrOk

then begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_ed_group);

if FSqlData_TableView <> nil

then begin // 3

FSqlData_TableView.Insert_New(

CreateVarAr([

cW_New_Ed_Group.Wrappers[cxTextEdit_New_Ed_Group_Name].Value

,tv_spec_div.DataController.Values[tv_spec_div.DataController.FocusedRecordIndex

,tv_spec_div_id_spec_div.Index]

,'1'

,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value

,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_End].Value

,'5'

]))

end; // 3

end; // 2

finally // 1

if assigned(mf)

then FreeAndNil(mf);

end; // 1

end;

{ Добавить новую комиссию}

procedure TForm_Dictionaries.Action_Insert_New_CommissionExecute(

Sender: TObject);

begin

cW_New_Commission.ChangesAcceptWrappers;

with cW_New_Commission, Get_SqlData_cxGrid(TTree_Commission) do

if Insert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Commission].Value)

, VarToStr(Parameters[2])

, VarToStr(Parameters[1])

, '3'

, VarToStr(Wrappers[DateEdit_New_Commission_Start].Value)

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

then

begin

GetParentForm(Panel_New_Commission).ModalResult := mrok;

TButtonOrderEditWrapper(cW_New_Commission.Wrappers[ButtonEdit_New_Commission]).IsEmpty := False;

Read_Data;

end;

end;

{ Добавить члена комиссии}

procedure TForm_Dictionaries.Action_Insert_New_MemberExecute(Sender: TObject);

begin

cw_New_Member.ChangesAcceptWrappers;

with cw_New_Member, Get_SqlData_cxGrid(TTree_Members) do

if Insert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Member].Value)

, VarToStr(Parameters[1])

, VarToStr(Wrappers[PopupEdit_New_Member_Post].Value)

, VarToStr(Wrappers[PopupEdit_New_Member_FIO].Value)

, VarToStr(Wrappers[DateEdit_New_Member_Start].Value)

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

then

begin

GetParentForm(Panel_New_Member).ModalResult := mrok;

TButtonOrderEditWrapper(cw_New_Member.Wrappers[ButtonEdit_New_Member]).IsEmpty := False;

Read_Data;

end;

end;

procedure TForm_Dictionaries.Action_Insert_SpecExecute(Sender: TObject);

//const Name = 'Программа обучения';

var

mf: TSForm;

begin

try // 1

mf := CreateSForm(self, 'fNew_Spec', cxTabSheet_Add_Spec.Caption

, Add_Path + cxTabSheet_Add_Spec.Caption, Panel_New_Spec, tdb_Apply);

cW_New_Spec.OnChangeWrapper(nil);

mf.Position := poScreenCenter;

if mf.ShowModal = mrOk

then begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_Spec);

if FSqlData_TableView <> nil

then begin // 3

if MSystemServices.ExchangeData(Add_Spec,

CreateVarAr([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value

,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value

,IDK_Level_Spec

,IDK_Discipline

])

,'Добавление программы обучения.')

then begin // 4

FSqlData_TableView.Read_Data;

FindGridRecord(tv_spec,[tv_Spec_Name,tv_Spec_Q]

,VarArrayOf([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value

,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value])

,true);

end; // 4

end; // 3

end; // 2

finally // 1

if assigned(mf)

then FreeAndNil(mf);

end; // 1

end;

procedure TForm_Dictionaries.Action_Insert_Spec_DivExecute(Sender: TObject);

//const Name = 'Организаторы обучения';

var

mf: TSForm;

begin

try // 1

mf := CreateSForm(self, 'fNew_Spec_Div'

, cxTabSheet_New_Spec_Div.Caption

, Add_Path + cxTabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div, tdb_Apply);

if VarToStr(cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value) = ''

then cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value := DateToStr(Date);

cW_New_Spec_Div.OnChangeWrapper(nil);

mf.Position := poScreenCenter;

if mf.ShowModal = mrOk

then begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div);

if FSqlData_TableView <> nil

then begin // 3

FSqlData_TableView.Insert_New(

CreateVarAr([

cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Spec].Value

,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Div].Value

,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_KT].Value

,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value

,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_End].Value

,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Institute].Value

,IDK_Level_Formation

,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_SF].Value

]))

end; // 3

end; // 2

finally // 1

if assigned(mf)

then FreeAndNil(mf);

end; // 1

end;

{ Добавление новой комиссии}

procedure TForm_Dictionaries.Action_New_CommissionExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_Commission'

, cxTabSheet_New_Sommission.Caption

, Add_Path + cxTabSheet_New_Sommission.Caption, Panel_New_Commission, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

{ Добавление члена комиссии}

procedure TForm_Dictionaries.Action_New_MemberExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

new_form := CreateSForm(self, 'fNew_Member'

, cxTabSheet_New_Member.Caption

, Add_Path + cxTabSheet_New_Member.Caption, Panel_New_Member, tdb_Apply);

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

{ Обновим нужные данные}

procedure TForm_Dictionaries.cxPageControl3Change(Sender: TObject);

begin

if Get_SqlData_cxGrid(tv_ed_group) <> nil

then

if Sender = cxPageControl3

then

if cxPageControl3.ActivePageIndex = 0

then Get_SqlData_cxGrid(tv_ed_group).Read_Data_First

else Get_SqlData_cxGrid(TTree_Commission).Read_Data_First;

end;

procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_org_divExecute(self);

end;

procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_intitutesExecute(self);

end;

procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_kind_trainingExecute(self);

end;

procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_source_finansingExecute(self);

end;

procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_specExecute(self);

end;

procedure TForm_Dictionaries.Fill_tv_intitutesExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_institutes);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Dictionaries.Fill_tv_kind_trainingExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_Kind_Training);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Dictionaries.Fill_tv_k_l_fExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_klf);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Dictionaries.Fill_tv_org_divExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_Org_Division);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Dictionaries.Fill_tv_source_finansingExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_Source_Financing);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Dictionaries.Fill_tv_specExecute(Sender: TObject);

var Param1: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_Spec);

if (FSqlData_TableView <> nil)

then begin // 1

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

if VarToStr(FSqlData_TableView.Params[1]) <> Param1

then begin // 2

FSqlData_TableView.Params[1] := Param1;

FSqlData_TableView.Read_Data;

end // 2

else

if FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end; // 1

end;

procedure TForm_Dictionaries.Fill_tv_spec_divExecute(Sender: TObject);

var Param1: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div);

if (FSqlData_TableView <> nil)

then begin // 1

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

if VarToStr(FSqlData_TableView.Params[1]) <> Param1

then begin // 2

FSqlData_TableView.Params[1] := Param1;

FSqlData_TableView.Read_Data;

end // 2

else

if FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end; // 1

end;

procedure TForm_Dictionaries.FormDestroy(Sender: TObject);

begin

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

Save_Restore_Params(Curr_Reg_Path, False);

end;

procedure TForm_Dictionaries.FormShow(Sender: TObject);

begin

{ Перечитываем списки }

if PageControl_Main.ActivePage = cxTabSheet_Spec

then Fill_tv_specExecute(self);

if PageControl_Main.ActivePage = cxTabSheet_Org

then Fill_tv_spec_divExecute(self);

end;

{ Изменили фильтр!}

procedure TForm_Dictionaries.PageControl_MainPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

begin

if NewPage = cxTabSheet_Spec

then Fill_tv_specExecute(self);

if NewPage = cxTabSheet_Org

then Fill_tv_spec_divExecute(self);

end;

{ Подразделение}

procedure TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesEditValueChanged(

Sender: TObject);

begin

if cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org] <> nil then

if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1]

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

then

begin

Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] :=

VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);

Get_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;

end;

end;

procedure TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_intitutesExecute(self);

end;

procedure TForm_Dictionaries.DoChanged_cW_New_Spec(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Spec, cW_New_Spec.IsNotEmptyMandatory);

end;

procedure TForm_Dictionaries.DoChanged_cW_New_Spec_Div(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Spec_Div, cW_New_Spec_Div.IsNotEmptyMandatory);

end;

procedure TForm_Dictionaries.DoChanged_cW_New_Ed_Group(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Ed_Group, cW_New_Ed_Group.IsNotEmptyMandatory);

end;

procedure TForm_Dictionaries.DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);

begin

if PageControl_Main.ActivePage = cxTabSheet_Spec

then Fill_tv_specExecute(self);

if PageControl_Main.ActivePage = cxTabSheet_Org

then Fill_tv_spec_divExecute(self);

end;

{ Выбрали новую специальность подразделения}

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

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_ed_group);

if (FSqlData_TableView <> nil) and (Sender <> nil)

then

if Sender.GridTableView = tv_spec_div

then

begin

with Sender, GridTableView.DataController do

if (LastChoiceIndex >= 0)

and (LastChoiceIndex < GridTableView.DataController.RecordCount)

then

begin // 1

FSqlData_TableView.Params[0] :=

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

FSqlData_TableView.IsFirstRead := True;

FSqlData_TableView.ActionInsert.Enabled := Sender.ActionDelete.Enabled;

Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled := Sender.ActionDelete.Enabled;

Get_SqlData_cxGrid(TTree_Commission).Parameters[1] :=

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

if Get_SqlData_cxGrid(TTree_Commission).Parameters[2] <>

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

then

begin

Get_SqlData_cxGrid(TTree_Commission).Parameters[2] :=

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

Get_SqlData_cxGrid(TTree_Commission).IsFirstRead := True;

end;

end // 1

else

begin

FSqlData_TableView.Params[0] := '';

FSqlData_TableView.ClearData;

FSqlData_TableView.ActionInsert.Enabled := False;

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

Get_SqlData_cxGrid(TTree_Commission).Parameters[2] := '';

Get_SqlData_cxGrid(TTree_Commission).ClearData;

Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled := False;

end;

cxPageControl3Change(cxPageControl3);

end

else

if Sender.GridTableView = TTree_Commission

then

begin

with Sender.GridTableView.DataController do

if (Sender.LastChoiceIndex >= 0)

and (Sender.LastChoiceIndex < RecordCount)

then

begin

Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled := Sender.ActionDelete.Enabled;

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

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

then

begin

Get_SqlData_cxGrid(TTree_Members).Parameters[1] :=

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

Get_SqlData_cxGrid(TTree_Members).Read_Data;

end

else Get_SqlData_cxGrid(TTree_Members).Read_Data_First

end

else

begin

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

Get_SqlData_cxGrid(TTree_Members).ClearData;

Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled := False;

end;

end;

end;

end.

unit Plan

interface

uses

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

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

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

cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,

cxGridCustomView, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,

cxContainer, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,

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

cxCalendar, GridEditClass,cxButtonEdit, cxTimeEdit;

const

{ Роль на редактирование специальностей мет. комплекса, специальностей,

организаторов обучения }

Action_Q_Edit_Spec = '1401';

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

Action_Q_Edit_Groups = '1402';

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

IDK_Level_Spec = '70';

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

IDK_Discipline = '59454';

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

IDK_Level_Formation = '70508';

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

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

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

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

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

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

type

TForm_Plan = class(TForm)

Panel_Main: TPanel;

PageControl_Main: TcxPageControl;

cxEditStyleController1: TcxEditStyleController;

cxStyleRepository3: TcxStyleRepository;

st_Group: TcxStyle;

sf_s_ContentEVEN: TcxStyle;

st_Filter_Box: TcxStyle;

st_Footer: TcxStyle;

st_Inactive: TcxStyle;

st_Indicator: TcxStyle;

st_Preview: TcxStyle;

st_Selection: TcxStyle;

st_ContentOdd: TcxStyle;

st_Content_TEXT: TcxStyle;

st_Content_POPUP: TcxStyle;

st_Content_DATE: TcxStyle;

st_Content_QUALIFIER: TcxStyle;

st_Footer_Column: TcxStyle;

st_Content_ID: TcxStyle;

st_Content_Memo: TcxStyle;

st_Content_Project: TcxStyle;

st_Content_Cancel: TcxStyle;

st_Content_ProjectSend: TcxStyle;

st_Content_Owner: TcxStyle;

st_Content_NotOwner: TcxStyle;

st_Content_Hot_Track: TcxStyle;

st_Inc_Search: TcxStyle;

st_Group_By_Box: TcxStyle;

st_Header: TcxStyle;

cxTreeList_Style_1: TcxTreeListStyleSheet;

cxGrid_Style_1: TcxGridBandedTableViewStyleSheet;

cxEditRepository1: TcxEditRepository;

cxER_Date_None_Blank: TcxEditRepositoryDateItem;

cxER_Date_With_Blank: TcxEditRepositoryDateItem;

cxER_Spin_ID: TcxEditRepositorySpinItem;

cxER_Text_RO: TcxEditRepositoryTextItem;

cxER_Memo_RO: TcxEditRepositoryMemoItem;

cxER_Date_RO: TcxEditRepositoryDateItem;

cxPropertiesStore1: TcxPropertiesStore;

Panel_Filter: TPanel;

cxLabel1: TcxLabel;

PopupEdit_Filter_Org: TcxPopupEdit;

cxER_Text: TcxEditRepositoryTextItem;

ActionList1: TActionList;

cxTabSheet_Editing: TcxTabSheet;

cxPageControl1: TcxPageControl;

cxTabSheet_Institutes: TcxTabSheet;

cxGrid_Institutes: TcxGrid;

tv_institutes: TcxGridBandedTableView;

tv_institutes_Abbr: TcxGridBandedColumn;

tv_institutes_Name: TcxGridBandedColumn;

tv_institutes_ID: TcxGridBandedColumn;

cxGridLevel2: TcxGridLevel;

cxTabSheet_Add: TcxTabSheet;

cxPageControl2: TcxPageControl;

Fill_tv_intitutes: TAction;

cxGrid_Com_Spec: TcxGrid;

tv_com_spec: TcxGridBandedTableView;

tv_com_spec_name_spec: TcxGridBandedColumn;

tv_com_spec_name_div: TcxGridBandedColumn;

tv_com_spec_kind_training: TcxGridBandedColumn;

tv_com_spec_id_spec_div: TcxGridBandedColumn;

tv_com_spec_id_spec: TcxGridBandedColumn;

tv_com_spec_id_d_spec_div: TcxGridBandedColumn;

tv_com_spec_idk_training: TcxGridBandedColumn;

cxGridLevel5: TcxGridLevel;

tv_com_spec_id_p_dp: TcxGridBandedColumn;

tv_com_spec_id_order: TcxGridBandedColumn;

tv_com_spec_idk_order: TcxGridBandedColumn;

tv_com_spec_status_text: TcxGridBandedColumn;

tv_com_spec_status_order: TcxGridBandedColumn;

tv_com_spec_id_met_complex: TcxGridBandedColumn;

Fill_tv_com_spec: TAction;

Action_Insert_Com_Spec: TAction;

cxTabSheet_New_Com_Spec: TcxTabSheet;

Panel_New_Com_Spec: TPanel;

cxLabel7: TcxLabel;

cxLabel9: TcxLabel;

cxLabel10: TcxLabel;

cxLabel11: TcxLabel;

cxPopupEdit_New_Com_Spec: TcxPopupEdit;

cxLabel13: TcxLabel;

cxPopupEdit_New_Com_Spec_Kind_Training: TcxPopupEdit;

cxPopupEdit_New_Com_Spec_Div: TcxPopupEdit;

cxButtonEdit_New_Com_Spec_Paragraph: TcxButtonEdit;

cxSpinEdit_New_Com_Spec_Hours: TcxSpinEdit;

tv_com_spec_hours: TcxGridBandedColumn;

tv_com_spec_id_e_l_umk: TcxGridBandedColumn;

cxTabSheet_Spec_Div: TcxTabSheet;

cxGrid_Spec_Div_Popup: TcxGrid;

tv_spec_div_popup: TcxGridBandedTableView;

tv_spec_div_popup_name_spec: TcxGridBandedColumn;

tv_spec_div_popup_name_div: TcxGridBandedColumn;

tv_spec_div_popup_kind_training: TcxGridBandedColumn;

tv_spec_div_popup_institute: TcxGridBandedColumn;

tv_spec_div_popup_source: TcxGridBandedColumn;

tv_spec_div_popup_d_start: TcxGridBandedColumn;

tv_spec_div_popup_d_end: TcxGridBandedColumn;

tv_spec_div_popup_id_spec_div: TcxGridBandedColumn;

tv_spec_div_popup_id_spec: TcxGridBandedColumn;

tv_spec_div_popup_id_d: TcxGridBandedColumn;

tv_spec_div_popup_idk_training: TcxGridBandedColumn;

tv_spec_div_popup_id_d_institute: TcxGridBandedColumn;

tv_spec_div_popup_id_source: TcxGridBandedColumn;

tv_spec_div_popup_idk_level_formation: TcxGridBandedColumn;

cxGridLevel8: TcxGridLevel;

Fill_tv_spec_div: TAction;

tv_com_spec_id_erp_user: TcxGridBandedColumn;

cxLabel85: TcxLabel;

cxSpinEdit_New_Com_Spec_Hours_SR: TcxSpinEdit;

procedure FormDestroy(Sender: TObject);

procedure Fill_tv_intitutesExecute(Sender: TObject);

procedure Fill_tv_com_specExecute(Sender: TObject);

procedure Action_Insert_Com_SpecExecute(Sender: TObject);

procedure tv_com_specEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_com_specSelectionChanged(Sender: TcxCustomGridTableView);

procedure FormShow(Sender: TObject);

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

Shift: TShiftState);

procedure tv_com_specMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Fill_tv_spec_divExecute(Sender: TObject);

procedure PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);

procedure cxPopupEdit_New_Com_SpecPropertiesInitPopup(Sender: TObject);

private

{ Private declarations }

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

REdit_Spec: boolean;

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

REdit_Groups: boolean;

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

FSqlData_TableView: TSqlData_cxGridTableView;

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

Curr_Reg_Path: String;

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

cW_Institute_Filter: TContainerWrappers;

cW_New_Com_Spec: TContainerWrappers;

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

procedure DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Com_Spec(AWrapper: TCustomEditWrapper);

procedure Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;

ARecordIndex: Integer; var ExchangeParameters: OleVariant);

{ Действие перед изменением данных в tv_com_spec }

procedure Before_Update_Exchange(Sender: TSqlData_cxGridTableView;

UpdateValue: Variant; AItem: TcxCustomGridTableItem; ARecordIndex: Integer;

var ExchangeParameters: OleVariant; var Allow: Boolean);

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

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

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

function Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

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

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

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

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

procedure Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;

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

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

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

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

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

public

{ Public declarations }

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

procedure Init(AReg_Path: String = Reg_Path);

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

procedure Refresh_Roles;

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

class function IsRoleAccessible: Boolean;

end;

var

Form_Plan: TForm_Plan;

implementation

{$R *.dfm}

uses SysServices, Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;

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

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

begin

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

if PIs_Load

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

then begin // 1

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

cxPropertiesStore1.RestoreFrom;

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

if PopupEdit_Filter_Org.Tag <> 0

then begin // 2

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

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

end // 2

else begin // 3

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

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

end; // 3

end // 1

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

else begin // 4

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

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

then begin // 5

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

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

end // 5

else begin // 6

PopupEdit_Filter_Org.Tag := 0;

PopupEdit_Filter_Org.Text := '';

end; // 6

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

cxPropertiesStore1.StoreTo(True);

end; // 4

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

Restore_cxGridTableView(tv_com_spec, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_com_spec).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_institutes, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_institutes).Table_Name);

end;

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

class function TForm_Plan.IsRoleAccessible: Boolean;

begin

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

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

or vnSessionAgent.IsDBA;

end;

procedure TForm_Plan.PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_intitutesExecute(self);

end;

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

procedure TForm_Plan.Refresh_Roles;

var DBA: boolean;

begin

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

DBA := vnSessionAgent.IsDBA;

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

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

end;

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

procedure TForm_Plan.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_Plan.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_Plan.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_Plan.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_Plan.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_Plan.tv_com_specEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

begin

Allow_Editing(Sender, tv_com_spec_status_order, tv_com_spec_id_erp_user, [REdit_Spec]);

end;

procedure TForm_Plan.tv_com_specKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_INSERT

then Allow_Insert(tv_com_spec, [REdit_Spec]);

end;

procedure TForm_Plan.tv_com_specMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight

then Allow_Insert(tv_com_spec, [REdit_Spec]);

end;

procedure TForm_Plan.tv_com_specSelectionChanged(

Sender: TcxCustomGridTableView);

begin

Allow_Delete(Sender, tv_com_spec_status_order, tv_com_spec_id_erp_user, [REdit_Spec]);

end;

{ Настройка списков }

procedure TForm_Plan.Init(AReg_Path: String = Reg_Path);

begin

Curr_Reg_Path := AReg_Path;

{ Описание для различных оберток }

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

cW_Institute_Filter := TContainerWrappers.Create;

cW_Institute_Filter.AddPopupEdit(PopupEdit_Filter_Org, false, false, cxGrid_Institutes,

tv_institutes ,tv_institutes_ID, [tv_institutes_Abbr, tv_institutes_Name], '');

cW_Institute_Filter.OnChangedValueWrapper := DoChanged_cW_Intitute_Filter;;

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

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

cW_New_Com_Spec := TContainerWrappers.Create;

cW_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec, true, false, cxGrid_Spec_Div_Popup,

tv_spec_div_popup, tv_spec_div_popup_id_spec_div, [tv_spec_div_popup_name_spec, tv_spec_div_popup_name_div, tv_spec_div_popup_kind_training], '');

cW_New_Com_Spec.AddButtonOrderEdit(cxButtonEdit_New_Com_Spec_Paragraph, True,

False, '', ['901'],[OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW], [nil,nil,nil,nil]);

cW_New_Com_Spec.AddCustomEdit(cxSpinEdit_New_Com_Spec_Hours, true, false, '');

cW_New_Com_Spec.AddCustomEdit(cxSpinEdit_New_Com_Spec_Hours_SR, true, false, '');

cW_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec_Div, true, false, cxGrid_Spec_Div_Popup, tv_spec_div_popup, tv_spec_div_popup_id_d, [tv_spec_div_popup_name_div], '');

cW_New_Com_Spec.AddPopupEdit(cxPopupEdit_New_Com_Spec_Kind_Training, true, false, cxGrid_Spec_Div_Popup, tv_spec_div_popup, tv_spec_div_popup_idk_training, [tv_spec_div_popup_kind_training], '');

cW_New_Com_Spec.OnChangeWrapper := DoChanged_cW_New_Com_Spec;

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

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

// добавление институтов

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

if Get_SqlData_cxGrid(tv_institutes) = nil

then with TSqlData_cxGridTableView.Create(tv_institutes)

do begin

Editing := false;

Table_Name := 'Институты';

GUID_Select := Get_List_Institutes;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec]);

Select_Columns.Add(tv_institutes_Abbr);

Select_Columns.Add(tv_institutes_Name);

Select_Columns.Add(tv_institutes_ID);

Key_Columns.Add(tv_institutes_ID);

Stat_Column := tv_institutes_Abbr;

NameColumnsForPopupEdit.Add(tv_institutes_Abbr);

NameColumnsForPopupEdit.Add(tv_institutes_Name);

end;

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

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

// добавление обучаемых специальностей (специальности подразделений)

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

if Get_SqlData_cxGrid(tv_spec_div_popup) = nil

then with TSqlData_cxGridTableView.Create(tv_spec_div_popup)

do begin

Editing := false;

Single := false;

Table_Name := 'Обучаемые специальности';

GUID_Select := Spec_div;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec,'']);

Stat_Column := tv_spec_div_popup_institute;

NameColumnForPopupEdit := tv_spec_div_popup_institute;

with Select_Columns

do begin

Add(tv_spec_div_popup_name_spec,1);

Add(tv_spec_div_popup_name_div,2);

Add(tv_spec_div_popup_kind_training,3);

Add(tv_spec_div_popup_institute,6);

Add(tv_spec_div_popup_source,12);

Add(tv_spec_div_popup_d_start,4);

Add(tv_spec_div_popup_d_end,5);

Add(tv_spec_div_popup_id_spec_div,0);

Add(tv_spec_div_popup_id_spec,1);

Add(tv_spec_div_popup_id_d,2);

Add(tv_spec_div_popup_idk_training,3);

Add(tv_spec_div_popup_id_d_institute,6);

Add(tv_spec_div_popup_id_source,12);

Add(tv_spec_div_popup_idk_level_formation,8);

end;

Key_Columns.Add(tv_spec_div_popup_id_spec_div,0);

PopupActions.Add(ActionUpdate);

end;

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

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

// добавление специальностей комплекса

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

if Get_SqlData_cxGrid(tv_com_spec) = nil

then with TSqlData_cxGridTableView.Create(tv_com_spec)

do begin

Editing := true;

Single := false;

Table_Name := 'Специальности комплекса';

GUID_Select := Com_Spec;

GUID_Delete := Delete_Com_Spec;

GUID_Update_Exchange := Update_Com_Spec;

StepOnTopDataRecordMode := True;

Params := CreateVarAr(['']);

Stat_Column := tv_com_spec_name_div;

NameColumnForPopupEdit := tv_com_spec_name_div;

OnBefore_Delete_Exchange := Before_Delete_Exchange;

OnBefore_Update_Exchange := Before_Update_Exchange;

with Select_Columns

do begin

Add(tv_com_spec_name_spec);

Add(tv_com_spec_name_div);

Add(tv_com_spec_kind_training);

Add(tv_com_spec_status_text);

Add(tv_com_spec_hours,5);

Add(tv_com_spec_id_spec_div);

Add(tv_com_spec_id_spec);

Add(tv_com_spec_id_d_spec_div);

Add(tv_com_spec_idk_training);

Add(tv_com_spec_status_order);

Add(tv_com_spec_id_p_dp);

Add(tv_com_spec_id_order);

Add(tv_com_spec_idk_order);

Add(tv_com_spec_id_met_complex);

Add(tv_com_spec_id_e_l_umk);

Add(tv_com_spec_id_erp_user);

end;

with IndividualEditInfoList.Add

do begin

GUID_Update := d_P_EDUCATIONAL_LOAD_UMK;

KeyColumns.Add(tv_com_spec_id_met_complex,1);

EditColumns.Add(tv_com_spec_hours,5);

end;

with PopupColumnsList.Add(tv_com_spec_name_spec)

do begin

SelfKeyColumn := tv_com_spec_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_name_spec;

end;

with PopupColumnsList.Add(tv_com_spec_name_div)

do begin

SelfKeyColumn := tv_com_spec_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_name_div;

end;

with PopupColumnsList.Add(tv_com_spec_kind_training)

do begin

SelfKeyColumn := tv_com_spec_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_kind_training;

end;

OptionsOrder.Column_Status_Text := tv_com_spec_status_text;

OptionsOrder.Column_ID_order := tv_com_spec_id_order;

OptionsOrder.Column_ID_paragraph := tv_com_spec_id_p_dp;

OptionsOrder.Column_IDk_order := tv_com_spec_idk_order;

ActionInsert.Visible:=True;

ActionInsert.OnExecute:=Action_Insert_Com_Spec.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

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

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

cxTabSheet_Editing.TabVisible := False;

cxTabSheet_Add.TabVisible := False;

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

Save_Restore_Params(Curr_Reg_Path, True);

end;

procedure TForm_Plan.Action_Insert_Com_SpecExecute(Sender: TObject);

//const Name = 'Содержание методического комплекса';

var

mf: TSForm;

begin

try // 1

mf := CreateSForm(self, 'fNew_Com_Spec'

, cxTabSheet_New_Com_Spec.Caption

, Add_Path + cxTabSheet_New_Com_Spec.Caption

, Panel_New_Com_Spec, tdb_Apply);

cW_New_Com_Spec.OnChangeWrapper(nil);

mf.Position := poScreenCenter;

if mf.ShowModal = mrOk

then begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_com_spec);

if FSqlData_TableView <> nil

then begin // 3

if MSystemServices.ExchangeData(Add_Com_Spec,

CreateVarAr([

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value

,cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].Value

,cW_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph].Value

,cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value

,cW_New_Com_Spec.Wrappers[cxSpinEdit_New_Com_Spec_Hours].Value

,IDK_Discipline

,cW_New_Com_Spec.Wrappers[cxSpinEdit_New_Com_Spec_Hours_SR].Value

])

,'Добавление программы методического комплекса.')

then begin // 4

TButtonOrderEditWrapper(cW_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph]).IsEmpty := false;

FSqlData_TableView.Read_Data;

FindGridRecord(tv_com_spec, [tv_com_spec_id_spec_div, tv_com_spec_id_p_dp],

VarArrayOf([cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].Value,

cW_New_Com_Spec.Wrappers[cxButtonEdit_New_Com_Spec_Paragraph].Value]), true);

end; // 4

end; // 3

end; // 2

finally // 1

if assigned(mf)

then FreeAndNil(mf);

end; // 1

end;

procedure TForm_Plan.Fill_tv_com_specExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_com_spec);

if (FSqlData_TableView <> nil)

then begin // 1

if PopupEdit_Filter_Org.Text <> ''

then Get_SqlData_cxGrid(tv_com_spec).Params[0] :=

VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value)

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

if FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First

else FSqlData_TableView.Read_Data;

end; // 1

end;

procedure TForm_Plan.Fill_tv_intitutesExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_institutes);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Plan.Fill_tv_spec_divExecute(Sender: TObject);

var Param1: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div_popup);

if (FSqlData_TableView <> nil)

then begin // 1

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

if VarToStr(FSqlData_TableView.Params[1]) <> Param1

then begin // 2

FSqlData_TableView.Params[1] := Param1;

FSqlData_TableView.Read_Data;

end // 2

else

if FSqlData_TableView.IsFirstRead

then FSqlData_TableView.Read_Data_First;

end; // 1

end;

procedure TForm_Plan.FormDestroy(Sender: TObject);

begin

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

Save_Restore_Params(Curr_Reg_Path, False);

end;

procedure TForm_Plan.FormShow(Sender: TObject);

begin

{ Перечитываем списки }

Fill_tv_com_specExecute(self);

end;

procedure TForm_Plan.DoChanged_cW_New_Com_Spec(AWrapper: TCustomEditWrapper);

begin

if AWrapper = cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec]

then begin // 1

if not cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec].IsClear

then begin // 2

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value :=

VarToStr(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_idk_training.Index]);

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].ValueDisplay :=

VarToStr(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_kind_training.Index]);

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value :=

VarToStr(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_id_d.Index]);

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].ValueDisplay :=

VarToStr(tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_name_div.Index]);

end // 2

else begin // 3

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].Value := '';

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Div].ValueDisplay := '';

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].Value := '';

cW_New_Com_Spec.Wrappers[cxPopupEdit_New_Com_Spec_Kind_Training].ValueDisplay := '';

end; // 3

end; // 1

MakeEnable_OkButton(Panel_New_Com_Spec, cW_New_Com_Spec.IsNotEmptyMandatory);

end;

procedure TForm_Plan.DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);

begin

Fill_tv_com_specExecute(self);

end;

procedure TForm_Plan.Before_Delete_Exchange(Sender: TSqlData_cxGridTableView; ARecordIndex: Integer; var ExchangeParameters: OleVariant);

begin

if Sender.GridTableView = tv_com_spec

then with Sender.GridTableView.DataController do

ExchangeParameters := CreateVarAr([Values[FocusedRecordIndex, tv_com_spec_id_met_complex.Index]

,Values[FocusedRecordIndex, tv_com_spec_id_spec_div.Index]

,Values[FocusedRecordIndex, tv_com_spec_id_p_dp.Index]

]);

end;

procedure TForm_Plan.Before_Update_Exchange(Sender: TSqlData_cxGridTableView;

UpdateValue: Variant; AItem: TcxCustomGridTableItem; ARecordIndex: Integer;

var ExchangeParameters: OleVariant; var Allow: Boolean);

begin

if (Sender.GridTableView = tv_com_spec)

and (Sender.GridTableView.Controller.FocusedColumn <> tv_com_spec_hours)

then with Sender.GridTableView.DataController do

ExchangeParameters :=

CreateVarAr([Values[FocusedRecordIndex, tv_com_spec_id_met_complex.Index]

,Values[FocusedRecordIndex, tv_com_spec_id_spec_div.Index]

,Values[FocusedRecordIndex, tv_com_spec_id_p_dp.Index]

,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_id_spec_div.Index]

,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_idk_training.Index]

,tv_spec_div_popup.DataController.Values[tv_spec_div_popup.DataController.FocusedRecordIndex

,tv_spec_div_popup_id_d.Index]

]);

end;

procedure TForm_Plan.cxPopupEdit_New_Com_SpecPropertiesInitPopup(

Sender: TObject);

begin

Fill_tv_spec_divExecute(self);

end;

unit Event

interface

uses

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

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

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

cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,

cxGridCustomView, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,

cxContainer, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,

cxLabel, wrappers, ActnList, cxLookAndFeels, cxLookAndFeelPainters,

cxSpinEdit,

cxCalendar, GridEditClass, cxButtonEdit, SE, cxGroupBox, Find_Org,

LP_u_MA_Interface,

UnivQuestionnaire, Menus, StdCtrls, cxButtons, cxCurrencyEdit, DateUtils,

cxMemo, OleServer, Excel2000, cxProgressBar, cxCheckBox, cxRadioGroup;

const

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

Action_Q_Edit_Groups = '1402';

{ Роль на просмотр мероприятий }

Action_Q_View_Event = '1403';

{ Полный доступ к мероприятиям }

Action_Q_Edit_Event = '1404';

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

IDK_Level_Spec = '70';

IDK_Discipline = '59454';

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

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

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

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

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

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

// Выбор участника

Choice_Listener = 'Участник не выбран';

// Печать сертификата

View_Cert: TGUID = '{5F2398A1-75FE-4E65-B294-4F1A47315662}';

type

TForm_Event = class(TForm)

Panel_Main: TPanel;

cxSplitter2: TcxSplitter;

PageControl_Main: TcxPageControl;

cxTabSheet_R_C_Groups: TcxTabSheet;

cxEditStyleController1: TcxEditStyleController;

cxStyleRepository3: TcxStyleRepository;

st_Group: TcxStyle;

sf_s_ContentEVEN: TcxStyle;

st_Filter_Box: TcxStyle;

st_Footer: TcxStyle;

st_Inactive: TcxStyle;

st_Indicator: TcxStyle;

st_Preview: TcxStyle;

st_Selection: TcxStyle;

st_ContentOdd: TcxStyle;

st_Content_TEXT: TcxStyle;

st_Content_POPUP: TcxStyle;

st_Content_DATE: TcxStyle;

st_Content_QUALIFIER: TcxStyle;

st_Footer_Column: TcxStyle;

st_Content_ID: TcxStyle;

st_Content_Memo: TcxStyle;

st_Content_Project: TcxStyle;

st_Content_Cancel: TcxStyle;

st_Content_ProjectSend: TcxStyle;

st_Content_Owner: TcxStyle;

st_Content_NotOwner: TcxStyle;

st_Content_Hot_Track: TcxStyle;

st_Inc_Search: TcxStyle;

st_Group_By_Box: TcxStyle;

st_Header: TcxStyle;

cxTreeList_Style_1: TcxTreeListStyleSheet;

cxGrid_Style_1: TcxGridBandedTableViewStyleSheet;

cxEditRepository1: TcxEditRepository;

cxER_Date_None_Blank: TcxEditRepositoryDateItem;

cxER_Date_With_Blank: TcxEditRepositoryDateItem;

cxER_Spin_ID: TcxEditRepositorySpinItem;

cxER_Text_RO: TcxEditRepositoryTextItem;

cxER_Memo_RO: TcxEditRepositoryMemoItem;

cxER_Date_RO: TcxEditRepositoryDateItem;

cxPropertiesStore1: TcxPropertiesStore;

cxER_Text: TcxEditRepositoryTextItem;

cxGrid_R_C_Plan: TcxGrid;

tv_r_c_plan: TcxGridBandedTableView;

cxGrid_R_C_Plan_Level1: TcxGridLevel;

tv_r_c_plan_name_spec: TcxGridBandedColumn;

tv_r_c_plan_institute: TcxGridBandedColumn;

tv_r_c_plan_division: TcxGridBandedColumn;

tv_r_c_plan_kind_training: TcxGridBandedColumn;

tv_r_c_plan_d_start: TcxGridBandedColumn;

tv_r_c_plan_d_end: TcxGridBandedColumn;

tv_r_c_plan_status_text: TcxGridBandedColumn;

tv_r_c_plan_id_r_c_plan: TcxGridBandedColumn;

tv_r_c_plan_id_spec_div: TcxGridBandedColumn;

tv_r_c_plan_id_spec: TcxGridBandedColumn;

tv_r_c_plan_id_institute: TcxGridBandedColumn;

tv_r_c_plan_id_d: TcxGridBandedColumn;

tv_r_c_plan_idk_training: TcxGridBandedColumn;

tv_r_c_plan_id_paragraph: TcxGridBandedColumn;

tv_r_c_plan_id_order: TcxGridBandedColumn;

tv_r_c_plan_idk_order: TcxGridBandedColumn;

tv_r_c_plan_status_order: TcxGridBandedColumn;

cxGrid_R_C_Groups: TcxGrid;

tv_r_c_groups: TcxGridBandedTableView;

cxGrid_R_C_Groups_Level1: TcxGridLevel;

ActionList1: TActionList;

Action_Insert_tv_r_c_plan: TAction;

cxTabSheet_Add: TcxTabSheet;

cxTabSheet_Editing: TcxTabSheet;

cxPageControl1: TcxPageControl;

cxTabSheet1: TcxTabSheet;

Panel_New_R_C_Plan: TPanel;

cxLabel7: TcxLabel;

cxLabel10: TcxLabel;

cxPopupEdit_New_R_C_Plan_Spec_Div: TcxPopupEdit;

cxButtonEdit_New_R_C_Plan_Paragraph: TcxButtonEdit;

cxLabel15: TcxLabel;

cxDateEdit_New_R_C_Plan_D_Start: TcxDateEdit;

cxDateEdit_New_R_C_Plan_D_End: TcxDateEdit;

cxLabel14: TcxLabel;

cxPageControl2: TcxPageControl;

cxTabSheet2: TcxTabSheet;

cxGrid_Spec_Div_PopUp: TcxGrid;

tv_spec_div_popup: TcxGridBandedTableView;

tv_spec_div_popup_name_spec: TcxGridBandedColumn;

tv_spec_div_popup_name_div: TcxGridBandedColumn;

tv_spec_div_popup_kind_training: TcxGridBandedColumn;

tv_spec_div_popup_institute: TcxGridBandedColumn;

tv_spec_div_popup_source: TcxGridBandedColumn;

tv_spec_div_popup_d_start: TcxGridBandedColumn;

tv_spec_div_popup_d_end: TcxGridBandedColumn;

tv_spec_div_popup_id_spec_div: TcxGridBandedColumn;

tv_spec_div_popup_id_spec: TcxGridBandedColumn;

tv_spec_div_popup_id_d: TcxGridBandedColumn;

tv_spec_div_popup_idk_training: TcxGridBandedColumn;

tv_spec_div_popup_id_d_institute: TcxGridBandedColumn;

tv_spec_div_popup_id_source: TcxGridBandedColumn;

tv_spec_div_popup_idk_level_formation: TcxGridBandedColumn;

cxGridLevel8: TcxGridLevel;

Fill_tv_spec_div_popup: TAction;

tv_r_c_groups_name: TcxGridBandedColumn;

tv_r_c_groups_d_start: TcxGridBandedColumn;

tv_r_c_groups_d_end: TcxGridBandedColumn;

tv_r_c_groups_status_text: TcxGridBandedColumn;

tv_r_c_groups_id_rc_group: TcxGridBandedColumn;

tv_r_c_groups_id_ed_group: TcxGridBandedColumn;

tv_r_c_groups_id_met_complex: TcxGridBandedColumn;

tv_r_c_groups_id_paragraph: TcxGridBandedColumn;

tv_r_c_groups_id_order: TcxGridBandedColumn;

tv_r_c_groups_idk_order: TcxGridBandedColumn;

tv_r_c_groups_status_order: TcxGridBandedColumn;

cxTabSheet3: TcxTabSheet;

tv_r_c_groups_id_r_c_plan: TcxGridBandedColumn;

Action_Insert_tv_r_c_group: TAction;

cxTabSheet4: TcxTabSheet;

cxGrid_Ed_Group: TcxGrid;

tv_ed_group: TcxGridBandedTableView;

tv_ed_group_name: TcxGridBandedColumn;

tv_ed_group_kind_group: TcxGridBandedColumn;

tv_ed_group_d_start: TcxGridBandedColumn;

tv_ed_group_d_end: TcxGridBandedColumn;

tv_ed_group_id_ed_group: TcxGridBandedColumn;

tv_ed_group_id_spec_div: TcxGridBandedColumn;

tv_ed_group_idk_group: TcxGridBandedColumn;

tv_ed_group_level_group: TcxGridBandedColumn;

cxGridLevel6: TcxGridLevel;

Panel_New_R_C_Group: TPanel;

cxLabel1: TcxLabel;

cxLabel2: TcxLabel;

cxPopupEdit_New_R_C_Group_Ed_Group: TcxPopupEdit;

cxLabel3: TcxLabel;

cxDateEdit_New_R_C_Group_D_Start: TcxDateEdit;

cxDateEdit_New_R_C_Group_D_End: TcxDateEdit;

cxLabel4: TcxLabel;

cxPopupEdit_New_R_C_Group_Met_Complex: TcxPopupEdit;

cxTabSheet5: TcxTabSheet;

cxGrid_Com_Spec: TcxGrid;

tv_com_spec: TcxGridBandedTableView;

tv_com_spec_name_spec: TcxGridBandedColumn;

tv_com_spec_name_div: TcxGridBandedColumn;

tv_com_spec_kind_training: TcxGridBandedColumn;

tv_com_spec_status_text: TcxGridBandedColumn;

tv_com_spec_hours: TcxGridBandedColumn;

tv_com_spec_status_order: TcxGridBandedColumn;

tv_com_spec_id_spec_div: TcxGridBandedColumn;

tv_com_spec_id_spec: TcxGridBandedColumn;

tv_com_spec_id_d_spec_div: TcxGridBandedColumn;

tv_com_spec_idk_training: TcxGridBandedColumn;

tv_com_spec_id_p_dp: TcxGridBandedColumn;

tv_com_spec_id_order: TcxGridBandedColumn;

tv_com_spec_idk_order: TcxGridBandedColumn;

tv_com_spec_id_met_complex: TcxGridBandedColumn;

tv_com_spec_id_e_l_umk: TcxGridBandedColumn;

cxGridLevel5: TcxGridLevel;

Fill_tv_com_spec: TAction;

tv_com_spec_institute: TcxGridBandedColumn;

tv_com_spec_id_institute: TcxGridBandedColumn;

Fill_tv_ed_group: TAction;

Fill_tv_r_c_plan: TAction;

cxTabSheet_Listeners: TcxTabSheet;

cxGrid_Listeners: TcxGrid;

tv_listeners: TcxGridBandedTableView;

cxGridLevel1: TcxGridLevel;

tv_listeners_fio: TcxGridBandedColumn;

tv_listeners_ed_group: TcxGridBandedColumn;

tv_listeners_d_start: TcxGridBandedColumn;

tv_listeners_d_end: TcxGridBandedColumn;

tv_listeners_kind_basis_action: TcxGridBandedColumn;

tv_listeners_status_text_order_start: TcxGridBandedColumn;

tv_listeners_id_e: TcxGridBandedColumn;

tv_listeners_id_ed_group: TcxGridBandedColumn;

tv_listeners_id_paragraph_start: TcxGridBandedColumn;

tv_listeners_id_order_start: TcxGridBandedColumn;

tv_listeners_idk_order_start: TcxGridBandedColumn;

tv_listeners_status_order_start: TcxGridBandedColumn;

tv_listeners_id_student: TcxGridBandedColumn;

tv_listeners_idkba_transfer: TcxGridBandedColumn;

cxTabSheet7: TcxTabSheet;

Panel_New_Listener: TPanel;

cxLabel5: TcxLabel;

cxLabel6: TcxLabel;

cxPopupEdit_New_Listener_FIO: TcxPopupEdit;

cxButtonEdit_New_Listener_Order_Start: TcxButtonEdit;

cxLabel8: TcxLabel;

cxDateEdit_New_Listener_D_Start: TcxDateEdit;

cxDateEdit_New_Listener_D_End: TcxDateEdit;

cxPopupEdit_New_Listener_Ed_Group: TcxPopupEdit;

cxLabel11: TcxLabel;

cxLabel9: TcxLabel;

cxLabel12: TcxLabel;

cxPopupEdit_New_Listener_Kind_Basis_Action: TcxPopupEdit;

cxTabSheet8: TcxTabSheet;

cxGrid_KBA_Start: TcxGrid;

tv_kba_start: TcxGridBandedTableView;

cxGridLevel2: TcxGridLevel;

tv_kba_start_name: TcxGridBandedColumn;

tv_kba_start_id: TcxGridBandedColumn;

Fill_tv_r_c_groups: TAction;

Fill_tv_listeners: TAction;

Action_Insert_tv_listeners: TAction;

Fill_tv_kba_start: TAction;

cxGroupBox_New_Listener_Contract_Params: TcxGroupBox;

cxLabel13: TcxLabel;

cxPopupEdit_New_Listener_Kind_Order: TcxPopupEdit;

cxLabel16: TcxLabel;

cxPopupEdit_New_Listener_Order: TcxPopupEdit;

cxLabel17: TcxLabel;

cxDateEdit_New_Listener_Contract_D_Start: TcxDateEdit;

cxLabel18: TcxLabel;

cxDateEdit_New_Listener_Contract_D_End: TcxDateEdit;

cxLabel19: TcxLabel;

cxPopupEdit_New_Listener_Contract_Organization: TcxPopupEdit;

cxLabel20: TcxLabel;

cxLabel21: TcxLabel;

cxPopupEdit_New_Listener_Contract_Source_Finansing: TcxPopupEdit;

cxTabSheet6: TcxTabSheet;

cxGrid_Kind_Order: TcxGrid;

tv_kind_order: TcxGridBandedTableView;

tv_kind_order_name: TcxGridBandedColumn;

tv_kind_order_id: TcxGridBandedColumn;

cxGridLevel3: TcxGridLevel;

cxTabSheet9: TcxTabSheet;

cxGrid_Contracts: TcxGrid;

tv_contracts: TcxGridBandedTableView;

cxGridLevel4: TcxGridLevel;

tv_contracts_contract: TcxGridBandedColumn;

tv_contracts_d_start: TcxGridBandedColumn;

tv_contracts_d_end: TcxGridBandedColumn;

tv_contracts_kind_order: TcxGridBandedColumn;

tv_contracts_id_contract: TcxGridBandedColumn;

tv_contracts_id_paragraph: TcxGridBandedColumn;

tv_contracts_id_order: TcxGridBandedColumn;

tv_contracts_idk_order: TcxGridBandedColumn;

tv_contracts_status_order: TcxGridBandedColumn;

cxTabSheet10: TcxTabSheet;

cxGrid_Source_Financing: TcxGrid;

tv_Source_Financing: TcxGridBandedTableView;

tv_Source_Financing_Abbreviation: TcxGridBandedColumn;

tv_Source_Financing_Name: TcxGridBandedColumn;

tv_Source_Financing_Abbr_Div: TcxGridBandedColumn;

tv_Source_Financing_Division: TcxGridBandedColumn;

tv_Source_Financing_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_Activity: TcxGridBandedColumn;

tv_Source_Financing_Date_Close: TcxGridBandedColumn;

tv_Source_Financing_ID: TcxGridBandedColumn;

tv_Source_Financing_ID_D: TcxGridBandedColumn;

tv_Source_Financing_ID_Kind_Source: TcxGridBandedColumn;

tv_Source_Financing_ID_Activity: TcxGridBandedColumn;

cxGridLevel7: TcxGridLevel;

Fill_tv_kind_order: TAction;

Fill_tv_contracts: TAction;

Fill_tv_source_finansing: TAction;

tv_listeners_org: TcxGridBandedColumn;

tv_listeners_money: TcxGridBandedColumn;

tv_listeners_status_text_contract: TcxGridBandedColumn;

tv_listeners_status_text_order_end: TcxGridBandedColumn;

tv_listeners_id_contract: TcxGridBandedColumn;

Delete_tv_listeners: TAction;

cxPageControl_Student: TcxPageControl;

cxSplitter3: TcxSplitter;

cxTabSheet_Orders: TcxTabSheet;

cxGrid_Orders: TcxGrid;

tv_orders: TcxGridBandedTableView;

cxGridLevel9: TcxGridLevel;

tv_orders_id_order: TcxGridBandedColumn;

tv_orders_kind_paragraph: TcxGridBandedColumn;

tv_orders_status_text: TcxGridBandedColumn;

tv_orders_id_paragraph: TcxGridBandedColumn;

tv_orders_d_creation: TcxGridBandedColumn;

tv_orders_d_modification: TcxGridBandedColumn;

tv_orders_idk_order: TcxGridBandedColumn;

tv_orders_status_order: TcxGridBandedColumn;

Fill_tv_orders: TAction;

tv_listeners_id_paragraph_contract: TcxGridBandedColumn;

tv_r_c_plan_id_erp_user: TcxGridBandedColumn;

tv_r_c_groups_id_erp_user: TcxGridBandedColumn;

tv_listeners_id_erp_user: TcxGridBandedColumn;

tv_orders_ed_group: TcxGridBandedColumn;

tv_orders_spec: TcxGridBandedColumn;

tv_orders_d_start: TcxGridBandedColumn;

tv_orders_kind_training: TcxGridBandedColumn;

tv_orders_institute: TcxGridBandedColumn;

tv_orders_status_order_contract: TcxGridBandedColumn;

tv_orders_kind_paragraph_contract: TcxGridBandedColumn;

cxTabSheet_Anketa: TcxTabSheet;

tv_listeners_id_contractor: TcxGridBandedColumn;

Panel_Anketa: TPanel;

Fill_Anketa: TAction;

tv_r_c_groups_hours: TcxGridBandedColumn;

tv_listeners_hours: TcxGridBandedColumn;

cxTabSheet_Contracts: TcxTabSheet;

Panel_FIO: TPanel;

Label_FIO: TcxLabel;

tv_r_c_plan_id_source: TcxGridBandedColumn;

tv_r_c_plan_source: TcxGridBandedColumn;

cxGroupBox_Contract_Params: TcxGroupBox;

cxLabel22: TcxLabel;

cxDateEdit_PC_D_Start: TcxDateEdit;

cxLabel23: TcxLabel;

cxDateEdit_PC_D_End: TcxDateEdit;

cxLabel24: TcxLabel;

cxPopupEdit_PC_Org: TcxPopupEdit;

cxLabel25: TcxLabel;

cxLabel26: TcxLabel;

cxPopupEdit_PC_SF: TcxPopupEdit;

cxLabel27: TcxLabel;

cxButtonEdit_PC_Contract: TcxButtonEdit;

cxLabel28: TcxLabel;

cxPopupEdit_PC_Kind_Order: TcxPopupEdit;

cxLabel30: TcxLabel;

cxButtonEdit_PC_Create_Direction: TcxButtonEdit;

cxButtonEdit_PC_Direction: TcxButtonEdit;

cxLabel29: TcxLabel;

cxPopupEdit_PC_Kind_Direction: TcxPopupEdit;

Fill_Contract_Params: TAction;

cxTabSheet13: TcxTabSheet;

Panel_New_Direction: TPanel;

cxLabel31: TcxLabel;

cxPopupEdit_New_Direction: TcxPopupEdit;

Clear_Contract: TAction;

cxTabSheet14: TcxTabSheet;

cxGrid_Kind_Direction: TcxGrid;

tv_kind_direction: TcxGridBandedTableView;

tv_kind_direction_name: TcxGridBandedColumn;

tv_kind_direction_id: TcxGridBandedColumn;

cxGridLevel10: TcxGridLevel;

cxButton_PC_Apply: TcxButton;

cxButton_PC_Refuse: TcxButton;

cxButton_PC_Autorepresentative: TcxButton;

PC_Apply: TAction;

PC_Refuse: TAction;

PC_Autorepresentative: TAction;

Fill_tv_kind_direction: TAction;

Action_Insert_New_Direction: TAction;

Action_Add_Contract: TAction;

Action_Delete_Contract: TAction;

Action_End_Education: TAction;

cxTabSheet15: TcxTabSheet;

cxGrid_Kba_End: TcxGrid;

tv_kba_end: TcxGridBandedTableView;

tv_kba_end_name: TcxGridBandedColumn;

tv_kba_end_id: TcxGridBandedColumn;

cxGridLevel11: TcxGridLevel;

Fill_tv_kba_end: TAction;

cxTabSheet16: TcxTabSheet;

Panel_End_Education: TPanel;

cxLabel32: TcxLabel;

cxLabel33: TcxLabel;

cxPopupEdit_KBA_End: TcxPopupEdit;

cxButtonEdit_End_Education: TcxButtonEdit;

cxLabel34: TcxLabel;

cxDateEdit_End_Education: TcxDateEdit;

tv_listeners_d_end_plan: TcxGridBandedColumn;

cxCurrencyEdit_PC_Money: TcxCurrencyEdit;

cxCurrencyEdit_New_Listener_Contract_Money: TcxCurrencyEdit;

tv_listeners_hours_plan: TcxGridBandedColumn;

tv_r_c_plan_money: TcxGridBandedColumn;

tv_listeners_certificate: TcxGridBandedColumn;

cxGroupBox_PC_Representative: TcxGroupBox;

cxLabel35: TcxLabel;

cxTextEdit_PC_Basis: TcxTextEdit;

cxLabel36: TcxLabel;

cxLabel37: TcxLabel;

cxLabel38: TcxLabel;

cxTextEdit_PC_FIO: TcxTextEdit;

cxTextEdit_PC_FIO_R: TcxTextEdit;

cxPopupEdit_PC_Post: TcxPopupEdit;

cxTabSheet17: TcxTabSheet;

cxGrid_Posts: TcxGrid;

tv_posts: TcxGridBandedTableView;

tv_posts_name: TcxGridBandedColumn;

tv_posts_id: TcxGridBandedColumn;

cxGridLevel12: TcxGridLevel;

Fill_tv_posts: TAction;

cxGroupBox_New_Listener_Representative: TcxGroupBox;

cxLabel39: TcxLabel;

cxTextEdit_New_Listener_Basis: TcxTextEdit;

cxLabel40: TcxLabel;

cxLabel41: TcxLabel;

cxLabel42: TcxLabel;

cxTextEdit_New_Listener_FIO: TcxTextEdit;

cxTextEdit_New_Listener_FIO_R: TcxTextEdit;

cxPopupEdit_New_Listener_Post: TcxPopupEdit;

tv_listeners_last_date: TcxGridBandedColumn;

cxGroupBox_Plan: TcxGroupBox;

cxSpinEdit_Plan_Filters_Year: TcxSpinEdit;

cxLabel43: TcxLabel;

cxLabel44: TcxLabel;

cxLabel45: TcxLabel;

cxLabel46: TcxLabel;

cxTextEdit_Plan_Filters_Note: TcxTextEdit;

cxTextEdit_Plan_Filters_Summary: TcxTextEdit;

cxButton_Plan_Filters_Apply: TcxButton;

cxButton_Plan_Filters_Refuse: TcxButton;

cxPopupEdit_Plan_Filters_Plan: TcxPopupEdit;

cxTabSheet11: TcxTabSheet;

cxGrid_Plan: TcxGrid;

tv_plan: TcxGridBandedTableView;

cxGridLevel13: TcxGridLevel;

tv_plan_note: TcxGridBandedColumn;

tv_plan_summary: TcxGridBandedColumn;

tv_plan_status_text: TcxGridBandedColumn;

tv_plan_hisdate: TcxGridBandedColumn;

tv_plan_d_creation: TcxGridBandedColumn;

tv_plan_d_modification: TcxGridBandedColumn;

tv_plan_id_paragraph: TcxGridBandedColumn;

tv_plan_id_order: TcxGridBandedColumn;

tv_plan_idk_order: TcxGridBandedColumn;

tv_plan_status_order: TcxGridBandedColumn;

tv_plan_id_erp_user: TcxGridBandedColumn;

Fill_tv_plan: TAction;

Plan_Apply: TAction;

Plan_Refuse: TAction;

Panel_Curator: TPanel;

cxSplitter1: TcxSplitter;

cxGrid_Curator: TcxGrid;

TTree_Curator: TcxGridBandedTableView;

Tree_Curator_Start: TcxGridBandedColumn;

Tree_Curator_End: TcxGridBandedColumn;

Tree_Curator_ID_EG: TcxGridBandedColumn;

Tree_Curator_ID_E: TcxGridBandedColumn;

cxGrid_Curator_Level1: TcxGridLevel;

Tree_Curator_FIO: TcxGridBandedColumn;

Action_Insert_Curator: TAction;

Action_New_Curator: TAction;

TabSheet_New_Curator: TcxTabSheet;

Panel_New_Curator: TPanel;

cxLabel47: TcxLabel;

PopupEdit_New_Curator_FIO: TcxPopupEdit;

cxLabel48: TcxLabel;

DateEdit_New_Curator: TcxDateEdit;

tv_listeners_Main_Contract: TcxGridBandedColumn;

tv_listeners_ID_Contract_Main: TcxGridBandedColumn;

tv_listeners_Org_Contract_Main: TcxGridBandedColumn;

Action_Main_Contract: TAction;

TabSheet_Set_Main_Contract: TcxTabSheet;

Panel_Set_Main_Contract: TPanel;

cxLabel49: TcxLabel;

PopupEdit_Set_Main_Contract: TcxPopupEdit;

cxLabel50: TcxLabel;

DateEdit_Set_Main_Contract_Find: TcxDateEdit;

Action_Go_Set_Main_Contract: TAction;

cxGrid_Main_Contracts: TcxGrid;

TTree_Main_Contracts: TcxGridBandedTableView;

Tree_Main_Contracts_Contract: TcxGridBandedColumn;

cxGrid_Main_Contracts_Level14: TcxGridLevel;

Tree_Main_Contracts_Org_Name: TcxGridBandedColumn;

Tree_Main_Contracts_ID_Contract: TcxGridBandedColumn;

Tree_Main_Contracts_Number: TcxGridBandedColumn;

Action_Import: TAction;

TabSheet_Import: TcxTabSheet;

Panel_Import: TPanel;

cxLabel51: TcxLabel;

PopupEdit_Import_Plan: TcxPopupEdit;

cxLabel52: TcxLabel;

DateEdit_Import_Start: TcxDateEdit;

Import_File: TOpenDialog;

cxLabel53: TcxLabel;

cxLabel54: TcxLabel;

cxLabel55: TcxLabel;

ButtonEdit_Import_Plan: TcxButtonEdit;

PopupEdit_Import_Spec: TcxPopupEdit;

ButtonEdit_Import_Spec: TcxButtonEdit;

PopupEdit_Import_Spec_Div: TcxPopupEdit;

ButtonEdit_Import_Spec_Div: TcxButtonEdit;

PopupEdit_Import_UMK: TcxPopupEdit;

ButtonEdit_Import_UMK: TcxButtonEdit;

Action_Go_Import: TAction;

cxGrid_Spec: TcxGrid;

tv_Spec: TcxGridBandedTableView;

tv_Spec_Name: TcxGridBandedColumn;

tv_Spec_Q: TcxGridBandedColumn;

tv_Spec_ID: TcxGridBandedColumn;

tv_Spec_IDK_Level_Spec: TcxGridBandedColumn;

tv_Spec_id_discipline: TcxGridBandedColumn;

tv_Spec_idk_discipline: TcxGridBandedColumn;

cxGrid_Spec_Level1: TcxGridLevel;

TabSheet_New_Spec: TcxTabSheet;

Panel_New_Spec: TPanel;

cxLabel56: TcxLabel;

cxTextEditNew_Spec_Name: TcxTextEdit;

cxTextEditNew_Spec_Quality: TcxTextEdit;

cxLabel57: TcxLabel;

DateEdit_Import_End: TcxDateEdit;

TabSheet_New_Spec_Div: TcxTabSheet;

Panel_New_Spec_Div: TPanel;

cxLabel58: TcxLabel;

cxLabel59: TcxLabel;

cxLabel60: TcxLabel;

cxLabel61: TcxLabel;

DateEditNew_Spec_Div_D_Start: TcxDateEdit;

PopupEditNew_Spec_Div_Institute: TcxPopupEdit;

cxLabel63: TcxLabel;

PopupEditNew_Spec_Div_Div: TcxPopupEdit;

PopupEditNew_Spec_Div_Spec: TcxPopupEdit;

PopupEditNew_Spec_Div_KT: TcxPopupEdit;

cxLabel64: TcxLabel;

PopupEditNew_Spec_Div_SF: TcxPopupEdit;

cxGrid_Org_Division: TcxGrid;

tv_Org_Division: TcxGridBandedTableView;

tv_Org_Division_Abbr: TcxGridBandedColumn;

tv_Org_Division_Name: TcxGridBandedColumn;

tv_Org_Division_ID: TcxGridBandedColumn;

cxGrid_Org_Division_Level1: TcxGridLevel;

cxGrid_Kind_Training: TcxGrid;

tv_Kind_Training: TcxGridBandedTableView;

tv_Kind_Training_Name: TcxGridBandedColumn;

tv_Kind_Training_IDK_TRAINING: TcxGridBandedColumn;

cxGridLevel14: TcxGridLevel;

cxLabel62: TcxLabel;

PopupEdit_Import_EG: TcxPopupEdit;

ButtonEdit_Import_EG: TcxButtonEdit;

TabSheet_New_UMK: TcxTabSheet;

Panel_New_UMK: TPanel;

cxLabel68: TcxLabel;

SpinEdit_New_UMK_Hours: TcxSpinEdit;

Action_After_Show_New_Anketa: TAction;

Action_New_SE: TAction;

cxLabel65: TcxLabel;

ButtonEdit_Import_Order: TcxButtonEdit;

TabSheet_New_Contract_Main: TcxTabSheet;

Panel_New_Contract_Main: TPanel;

cxLabel66: TcxLabel;

PopupEdit_New_Contract_Main: TcxPopupEdit;

cxLabel67: TcxLabel;

ButtonEdit_New_Contract_Main: TcxButtonEdit;

cxLabel69: TcxLabel;

TextEdit_New_Contract_Main: TcxTextEdit;

cxLabel70: TcxLabel;

DateEdit_New_Contract_Main_Start: TcxDateEdit;

DateEdit_New_Contract_Main_End: TcxDateEdit;

Action_New_Contract_Main: TAction;

Action_Insert_Contract_Main: TAction;

cxER_Money: TcxEditRepositoryCurrencyItem;

cxLabel71: TcxLabel;

CurrencyEdit_Import_Money: TcxCurrencyEdit;

cxLabel72: TcxLabel;

CurrencyEdit_Import_NDS: TcxCurrencyEdit;

cxLabel73: TcxLabel;

DateEdit_Import_Start_Otrjv: TcxDateEdit;

DateEdit_Import_End_Otrjv: TcxDateEdit;

cxLabel74: TcxLabel;

ButtonEdit_Import_Nach: TcxButtonEdit;

ProgressBar_Import: TcxProgressBar;

cxLabel75: TcxLabel;

DateEdit_Import_Reference: TcxDateEdit;

cxTabSheet_Stages: TcxTabSheet;

cxGrid_Nach: TcxGrid;

TTree_Nach: TcxGridBandedTableView;

Tree_Nach_D_Start: TcxGridBandedColumn;

Tree_Nach_D_End: TcxGridBandedColumn;

Tree_Nach_ID_Stage: TcxGridBandedColumn;

Tree_Nach_ID_Account_Contract: TcxGridBandedColumn;

Tree_Nach_Document: TcxGridBandedColumn;

cxGrid_Nach_Level1: TcxGridLevel;

Tree_Nach_Status: TcxGridBandedColumn;

Tree_Nach_Sum: TcxGridBandedColumn;

Tree_Nach_ID_Basis_Salary: TcxGridBandedColumn;

Tree_Nach_ID_SF: TcxGridBandedColumn;

Tree_Nach_IDK_Order: TcxGridBandedColumn;

Tree_Nach_ID_Paragraph: TcxGridBandedColumn;

Tree_Nach_ID_Order: TcxGridBandedColumn;

Tree_Nach_ID_ERP: TcxGridBandedColumn;

Tree_Nach_User: TcxGridBandedColumn;

Action_Create_Nach: TAction;

TabSheet_New_Nach: TcxTabSheet;

Tree_Nach_Kind_Order: TcxGridBandedColumn;

tv_listeners_NDS: TcxGridBandedColumn;

Panel_New_Nach: TPanel;

cxLabel76: TcxLabel;

ButtonEdit_New_Nach: TcxButtonEdit;

cxLabel77: TcxLabel;

DateEdit_New_Nach: TcxDateEdit;

Action_Go_New_Nach: TAction;

Action_Go_Nach_All: TAction;

Action_Create_Nach_All: TAction;

TabSheet_Create_Nach_All: TcxTabSheet;

Panel_Create_Nach_All: TPanel;

cxLabel78: TcxLabel;

ButtonEdit_Create_Nach_All: TcxButtonEdit;

cxLabel79: TcxLabel;

DateEdit_Create_Nach_All: TcxDateEdit;

CheckBox_PC_NDS: TcxCheckBox;

cxLabel80: TcxLabel;

cxDateEdit_PC_D_Start_Otrjv: TcxDateEdit;

cxLabel81: TcxLabel;

cxDateEdit_PC_D_End_Otrjv: TcxDateEdit;

tv_listeners_ID_ERP_End: TcxGridBandedColumn;

tv_listeners_ID_Status_End: TcxGridBandedColumn;

tv_listeners_ID_Paragraph_End: TcxGridBandedColumn;

Action_Delete_Order_End: TAction;

cxLabel82: TcxLabel;

PopupEdit_Import_Curator: TcxPopupEdit;

TabSheet_Stat: TcxTabSheet;

cxGroupBox1: TcxGroupBox;

cxLabel83: TcxLabel;

DateEdit_Stat_Begin: TcxDateEdit;

cxLabel84: TcxLabel;

DateEdit_Stat_End: TcxDateEdit;

cxButton1: TcxButton;

Action_Read_Stat: TAction;

cxGrid_Stat: TcxGrid;

TTree_Stat: TcxGridBandedTableView;

Tree_Stat_FIO: TcxGridBandedColumn;

Tree_Stat_EG: TcxGridBandedColumn;

Tree_Stat_D_Start: TcxGridBandedColumn;

Tree_Stat_D_End: TcxGridBandedColumn;

Tree_Stat_Order_Start: TcxGridBandedColumn;

Tree_Stat_Order_End: TcxGridBandedColumn;

Tree_Stat_Contract: TcxGridBandedColumn;

Tree_Stat_Org: TcxGridBandedColumn;

Tree_Stat_Money: TcxGridBandedColumn;

Tree_Stat_Cert: TcxGridBandedColumn;

Tree_Stat_Hours_Fact: TcxGridBandedColumn;

Tree_Stat_Hours_Plan: TcxGridBandedColumn;

Tree_Stat_Last_Date: TcxGridBandedColumn;

Tree_Stat_ID_Student: TcxGridBandedColumn;

Tree_Stat_ID_E: TcxGridBandedColumn;

Tree_Stat_ID_EG: TcxGridBandedColumn;

Tree_Stat_ID_C: TcxGridBandedColumn;

Tree_Stat_Contract_Main: TcxGridBandedColumn;

Tree_Stat_Org_Main: TcxGridBandedColumn;

Tree_Stat_Money_NDS: TcxGridBandedColumn;

cxGrid_Stat_Level15: TcxGridLevel;

Tree_Stat_Spec_Name: TcxGridBandedColumn;

cxLabel85: TcxLabel;

SpinEdit_New_UMK_Hours_SR: TcxSpinEdit;

Action_Make_Certificate: TAction;

tv_listeners_Reg_Number: TcxGridBandedColumn;

TabSheet_New_Cert: TcxTabSheet;

Panel_New_Cert: TPanel;

cxLabel86: TcxLabel;

ButtonEdit_New_Cert: TcxButtonEdit;

cxLabel87: TcxLabel;

SpinEdit_New_Cert_Reg: TcxSpinEdit;

cxER_Spin_Integer: TcxEditRepositorySpinItem;

cxLabel88: TcxLabel;

SpinEdit_New_Cert_Number: TcxSpinEdit;

cxLabel89: TcxLabel;

PopupEdit_New_Cert_Kind_Doc: TcxPopupEdit;

Action_Go_New_Cert: TAction;

cxGrid_Kind_Doc_Cert: TcxGrid;

TTree_Kind_Doc_Cert: TcxGridBandedTableView;

Tree_Kind_Doc_Cert_Name: TcxGridBandedColumn;

Tree_Kind_Doc_Cert_ID: TcxGridBandedColumn;

cxGrid_Kind_Doc_Cert_Level15: TcxGridLevel;

tv_listeners_Kind_Cert: TcxGridBandedColumn;

tv_listeners_ID_Kind_Cert: TcxGridBandedColumn;

cxLabel90: TcxLabel;

SpinEdit_New_Cert_Hours: TcxSpinEdit;

RadioGroup_Import_Mode: TcxRadioGroup;

Tree_Stat_Inst: TcxGridBandedColumn;

Action_View_Certificate: TAction;

tv_listeners_ID_Certificate: TcxGridBandedColumn;

tv_listeners_ID_Doc_Cert: TcxGridBandedColumn;

tv_listeners_Cert_Date: TcxGridBandedColumn;

tv_listeners_ID_Reg: TcxGridBandedColumn;

Action_Delete_Certificate: TAction;

cxTabSheet_MC: TcxTabSheet;

cxGroupBox2: TcxGroupBox;

cxLabel91: TcxLabel;

DateEdit_Filter_Start: TcxDateEdit;

cxLabel92: TcxLabel;

DateEdit_Filter_End: TcxDateEdit;

cxLabel93: TcxLabel;

PopupEdit_Filter_Org: TcxPopupEdit;

cxGrid_MC: TcxGrid;

TTree_MC: TcxGridBandedTableView;

Tree_MC_Org: TcxGridBandedColumn;

Tree_MC_ID_Contract: TcxGridBandedColumn;

cxGrid_MC_Level15: TcxGridLevel;

Tree_MC_ID_CA: TcxGridBandedColumn;

Tree_MC_Start: TcxGridBandedColumn;

Tree_MC_End: TcxGridBandedColumn;

Tree_MC_Number: TcxGridBandedColumn;

Tree_MC_Old_Number: TcxGridBandedColumn;

Tree_MC_Kind: TcxGridBandedColumn;

Tree_MC_IDK_Order: TcxGridBandedColumn;

Tree_MC_ID_MT: TcxGridBandedColumn;

Tree_MC_ID_MO: TcxGridBandedColumn;

Tree_MC_ID_Paragraph: TcxGridBandedColumn;

Tree_MC_ID_Order: TcxGridBandedColumn;

Tree_MC_ID_ERP: TcxGridBandedColumn;

Tree_MC_ID_Status: TcxGridBandedColumn;

Tree_MC_User: TcxGridBandedColumn;

Tree_MC_Hisdate: TcxGridBandedColumn;

Tree_MC_Count: TcxGridBandedColumn;

Tree_MC_Order: TcxGridBandedColumn;

Action_New_MC: TAction;

Action_Insert_MC: TAction;

tv_com_spec_sam: TcxGridBandedColumn;

Action_Delete_Nach: TAction;

TabSheet_New_Money: TcxTabSheet;

Panel_New_Money: TPanel;

CurrencyEdit_New_Money: TcxCurrencyEdit;

cxLabel94: TcxLabel;

Action_New_Money: TAction;

Action_Go_New_Money: TAction;

procedure Action_Insert_tv_r_c_planExecute(Sender: TObject);

procedure Fill_tv_spec_div_popupExecute(Sender: TObject);

procedure tv_r_c_plan_name_specPropertiesInitPopup(Sender: TObject);

procedure cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup

(Sender: TObject);

procedure Action_Insert_tv_r_c_groupExecute(Sender: TObject);

procedure Fill_tv_com_specExecute(Sender: TObject);

procedure Fill_tv_ed_groupExecute(Sender: TObject);

procedure cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup

(Sender: TObject);

procedure Fill_tv_r_c_planExecute(Sender: TObject);

procedure cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup

(Sender: TObject);

procedure tv_r_c_groups_namePropertiesInitPopup(Sender: TObject);

procedure Fill_tv_r_c_groupsExecute(Sender: TObject);

procedure Fill_tv_listenersExecute(Sender: TObject);

procedure PageControl_MainPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

procedure Action_Insert_tv_listenersExecute(Sender: TObject);

procedure cxPopupEdit_New_Listener_Ed_GroupPropertiesEditValueChanged

(Sender: TObject);

procedure cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup

(Sender: TObject);

procedure Fill_tv_kba_startExecute(Sender: TObject);

procedure cxPopupEdit_New_Listener_Kind_Basis_ActionPropertiesInitPopup

(Sender: TObject);

procedure Fill_tv_kind_orderExecute(Sender: TObject);

procedure cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup

(Sender: TObject);

procedure Fill_tv_contractsExecute(Sender: TObject);

procedure cxPopupEdit_New_Listener_OrderPropertiesInitPopup

(Sender: TObject);

procedure Fill_tv_source_finansingExecute(Sender: TObject);

procedure

cxPopupEdit_New_Listener_Contract_Source_FinansingPropertiesInitPopup

(Sender: TObject);

procedure cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged

(Sender: TObject);

procedure cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged

(Sender: TObject);

procedure cxDateEdit_New_Listener_Contract_D_StartPropertiesEditValueChanged

(Sender: TObject);

procedure cxDateEdit_New_Listener_Contract_D_EndPropertiesEditValueChanged

(Sender: TObject);

procedure tv_listeners_ed_groupPropertiesInitPopup(Sender: TObject);

procedure tv_listeners_kind_basis_actionPropertiesInitPopup

(Sender: TObject);

procedure Delete_tv_listenersExecute(Sender: TObject);

procedure Fill_tv_ordersExecute(Sender: TObject);

procedure tv_listenersEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_r_c_groupsEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure tv_listenersSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_r_c_planSelectionChanged(Sender: TcxCustomGridTableView);

procedure tv_r_c_groupsSelectionChanged(Sender: TcxCustomGridTableView);

procedure Fill_AnketaExecute(Sender: TObject);

procedure cxPageControl_StudentPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

procedure Fill_Contract_ParamsExecute(Sender: TObject);

procedure Clear_ContractExecute(Sender: TObject);

procedure PC_ApplyExecute(Sender: TObject);

procedure PC_RefuseExecute(Sender: TObject);

procedure PC_AutorepresentativeExecute(Sender: TObject);

procedure Fill_tv_kind_directionExecute(Sender: TObject);

procedure cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup(Sender: TObject);

procedure Action_Insert_New_DirectionExecute(Sender: TObject);

procedure cxButtonEdit_PC_Create_DirectionClick(Sender: TObject);

procedure tv_listeners_d_startPropertiesEditValueChanged(Sender: TObject);

procedure Action_Delete_ContractExecute(Sender: TObject);

procedure Action_Add_ContractExecute(Sender: TObject);

procedure cxPopupEdit_New_DirectionPropertiesInitPopup(Sender: TObject);

procedure cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged

(Sender: TObject);

procedure Fill_tv_kba_endExecute(Sender: TObject);

procedure cxPopupEdit_KBA_EndPropertiesInitPopup(Sender: TObject);

procedure Action_End_EducationExecute(Sender: TObject);

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

Shift: TShiftState);

procedure tv_r_c_planMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

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

Shift: TShiftState);

procedure tv_r_c_groupsMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

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

Shift: TShiftState);

procedure tv_listenersMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormDestroy(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Fill_tv_postsExecute(Sender: TObject);

procedure cxPopupEdit_PC_PostPropertiesInitPopup(Sender: TObject);

procedure tv_r_c_planEditing(Sender: TcxCustomGridTableView;

AItem: TcxCustomGridTableItem; var AAllow: Boolean);

procedure Fill_tv_planExecute(Sender: TObject);

procedure cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup(Sender: TObject);

procedure Plan_ApplyExecute(Sender: TObject);

procedure Plan_RefuseExecute(Sender: TObject);

procedure Action_New_CuratorExecute(Sender: TObject);

procedure Action_Insert_CuratorExecute(Sender: TObject);

procedure Action_Main_ContractExecute(Sender: TObject);

procedure DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged

(Sender: TObject);

procedure Action_Go_Set_Main_ContractExecute(Sender: TObject);

procedure Action_ImportExecute(Sender: TObject);

procedure PopupEdit_Import_SpecPropertiesEditValueChanged(Sender: TObject);

procedure ButtonEdit_Import_SpecClick(Sender: TObject);

procedure ButtonEdit_Import_Spec_DivClick(Sender: TObject);

procedure ButtonEdit_Import_UMKClick(Sender: TObject);

procedure ButtonEdit_Import_PlanClick(Sender: TObject);

procedure ButtonEdit_Import_EGClick(Sender: TObject);

procedure Action_After_Show_New_AnketaExecute(Sender: TObject);

procedure Action_New_SEExecute(Sender: TObject);

procedure Action_New_Contract_MainExecute(Sender: TObject);

procedure Action_Insert_Contract_MainExecute(Sender: TObject);

procedure Action_Create_NachExecute(Sender: TObject);

procedure Action_Go_New_NachExecute(Sender: TObject);

procedure Action_Go_Nach_AllExecute(Sender: TObject);

procedure Action_Create_Nach_AllExecute(Sender: TObject);

procedure Action_Delete_Order_EndExecute(Sender: TObject);

procedure Action_Read_StatExecute(Sender: TObject);

procedure Action_Make_CertificateExecute(Sender: TObject);

procedure Action_Go_New_CertExecute(Sender: TObject);

procedure ButtonEdit_New_CertPropertiesEditValueChanged(Sender: TObject);

procedure Action_View_CertificateExecute(Sender: TObject);

procedure Action_Delete_CertificateExecute(Sender: TObject);

procedure Filter_MC_Changed(Sender: TObject);

procedure Action_New_MCExecute(Sender: TObject);

procedure Action_Delete_NachExecute(Sender: TObject);

procedure Action_New_MoneyExecute(Sender: TObject);

procedure Action_Go_New_MoneyExecute(Sender: TObject);

procedure ButtonEdit_Import_OrderPropertiesEditValueChanged(

Sender: TObject);

private

{ Private declarations }

ea: Excel2000.TExcelApplication;

ew: _Workbook;

wsh: _Worksheet;

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

REdit_Groups: Boolean;

{ Доступность просмотра мероприятий }

RView_Event: Boolean;

{ Доступность всех действий с мероприятиями }

REdit_Event: Boolean;

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

FSqlData_TableView: TSqlData_cxGridTableView;

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

Curr_Reg_Path: String;

// Название программы и код подразделения при импорте

Import_Name_Spec, id_d_import, Import_Hours, Import_ID_EG, Import_EG_Name

,Import_FIO_Curator, Import_Hours_SR, id_d_kaf, idk_training: String;

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

Current_Form_SE: TForm_SE;

{ Форма поиска организации }

Current_Form_Find_Org: TForm_Find_Org;

{ Форма анкета }

Current_Form_Anketa, Form_Anketa_For_New: TFUnivQuestionare;

// Текущие значения из файла импорта

curr_sex, curr_surname, curr_name, curr_patronymic, curr_birthday

, curr_email, curr_phone: string;

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

cW_New_R_C_Plan: TContainerWrappers;

cW_New_R_C_Group: TContainerWrappers;

cW_New_Listener: TContainerWrappers;

cW_Contract_Params: TContainerWrappers;

cW_New_Direction: TContainerWrappers;

cW_End_Education: TContainerWrappers;

cW_Plan_Filters: TContainerWrappers;

cW_New_Curator: TContainerWrappers;

cW_Set_Main_Contract, cw_Filter_Contracts_Main: TContainerWrappers;

cW_Import, cW_New_Spec, cW_New_Spec_Div, cw_New_UMK

, cw_New_Contract_Main, Cont_New_Nach, Cont_New_Nach_All

, Cont_Stat, Cont_Make_Cert, New_MC, cw_New_Money: TContainerWrappers;

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

procedure DoChanged_cW_New_R_C_Plan(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_R_C_Group(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Listener(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_Contract_Params(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_New_Direction(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_End_Education(AWrapper: TCustomEditWrapper);

procedure DoChanged_cW_Plan_Filters(AWrapper: TCustomEditWrapper);

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

procedure ChoiceGridRecord(Sender: TSqlData_cxGridTableView;

AGridRecord: TcxGridDataRow);

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

procedure OnChoiceGridRecord_tv_listeners(Sender: TSqlData_cxGridTableView;

AGridRecord: TcxGridDataRow);

{ Действие перед изменением данных в tv_listeners }

procedure Before_Update_Exchange_tv_listeners

(Sender: TSqlData_cxGridTableView; UpdateValue: Variant;

AItem: TcxCustomGridTableItem; ARecordIndex: Integer;

var ExchangeParameters: OleVariant; var Allow: Boolean);

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

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

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

function Allow_Editing(TV: TcxCustomGridTableView;

Status_Column: TcxGridColumn; ID_ERP_Column: TcxGridColumn;

Roles: array of Boolean): Boolean; overload;

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

function Allow_Editing(TV: TcxCustomGridTableView;

Roles: array of Boolean): Boolean; overload;

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

procedure Allow_Delete(TV: TcxCustomGridTableView;

Status_Column: TcxGridColumn; ID_ERP_Column: TcxGridColumn;

Roles: array of Boolean); overload;

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

procedure Allow_Delete(TV: TcxCustomGridTableView;

Roles: array of Boolean); overload;

{ Обработчик события после чтения в tv_listeners }

procedure After_Read_tv_listeners(Sender: TSqlData_cxGridTableView);

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

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

{ Включить/выключить элементы для добавления студента/договора }

procedure StudentElementsEnabled(Enabled: Boolean);

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

procedure Save_Restore_Params(RReg_Path: String = Reg_Path;

PIs_Load: Boolean = True);

procedure DoChanged_cW_Spec_Div(AWrapper: TCustomEditWrapper);

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

procedure OkNewEmp;

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

procedure OkOldEmp;

// После удаления

procedure After_Delete(Sender: TSqlData_cxGridTableView);

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

procedure Delete_Main_Contract(Sender: TSqlData_cxGridTableView; ARecordIndex: Integer;

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;

if new_form.ModalResult = mrok

then Get_SqlData_cxGrid(tv_listeners).Read_Data;

finally // 1

if assigned(new_form) then

FreeAndNil(new_form);

end; // 1

end;

{ Добавить новую анкету человека!}

procedure TForm_Event.Action_New_SEExecute(Sender: TObject);

begin

Case Form_Anketa_For_New.ShowNewEmpForm of

QRInserted: OkNewEmp;

QRSimChecked: OkOldEmp;

End;

end;

{ Получить статистику }

procedure TForm_Event.Action_Read_StatExecute(Sender: TObject);

begin

with Get_SqlData_cxGrid(TTree_Stat), Cont_Stat do

begin

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

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

Read_Data;

end;

end;

{ Просмотр удостоверения }

procedure TForm_Event.Action_View_CertificateExecute(Sender: TObject);

var L: TIntegerList;

i: integer;

s: String;

begin

with Get_SqlData_cxGrid(tv_listeners) do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

s := '';

with GridTableView.DataController do

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

if s = ''

then s := VarToStr(Values[L.Items[i], tv_listeners_ID_Certificate.Index])

else s := s + ',' + VarToStr(Values[L.Items[i], tv_listeners_ID_Certificate.Index]);

// Размер сдвига по-Галиному:

{if cxSpinEdit1.Value<0 then

sdvig:=vartostr(45.35+abs(cxSpinEdit1.Value))

else sdvig:=vartostr(45.35-cxSpinEdit1.Value);}

MSystemServices.EndSequenceActions;

HandymanFunctions.PreviePaper(MSystemServices

, View_Cert

, CreateVarAr([s])

, VarArrayOf([AWP_PageSetup_TopMargin ,VarToStr(45.35 - 0)])

, True);

end;

end;

procedure TForm_Event.Fill_AnketaExecute(Sender: TObject);

var

DC: TcxGridDataController;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_listeners);

if FSqlData_TableView <> nil then

begin // 1

DC := FSqlData_TableView.GridTableView.DataController;

if (FSqlData_TableView.LastChoiceIndex >= 0) and

(FSqlData_TableView.LastChoiceIndex < DC.RecordCount) then

begin // 2

Current_Form_Anketa.ID_CONTRACTOR := VarToStr

(DC.Values[FSqlData_TableView.LastChoiceIndex,

tv_listeners_id_contractor.Index]);

Current_Form_Anketa.ID_E := VarToStr

(DC.Values[FSqlData_TableView.LastChoiceIndex,

tv_listeners_id_e.Index]);

end // 2

else

begin // 3

Current_Form_Anketa.ID_CONTRACTOR := '';

Current_Form_Anketa.ID_E := '';

end; // 3

Current_Form_Anketa.RefreshRoles(False);

Current_Form_Anketa.IsEnabled := True;

Current_Form_Anketa.Editing :=

Current_Form_Anketa.IsEnabled and vnSessionAgent.

IsRoleSomehowAccessible('', '', '7001');

if not Current_Form_Anketa.Visible then

Current_Form_Anketa.Show;

Panel_Anketa.Realign;

Current_Form_Anketa.Realign;

end; // 1

end;

procedure TForm_Event.Fill_Contract_ParamsExecute(Sender: TObject);

var

data: OleVariant;

DC: TcxDataController;

ID_C: string;

rID: Integer;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_listeners);

DC := tv_listeners.DataController;

if FSqlData_TableView <> nil then

begin // 1

if PC_Refuse.Enabled

then PC_Refuse.Execute;

ID_C := VarToStr(DC.Values[FSqlData_TableView.LastChoiceIndex,

tv_listeners_id_contract.Index]);

if ID_C <> '' then

begin // 2

data := MSystemServices.SelectData(Contr_Params, VarArrayOf([ID_C]), rID);

if VarIsArray(data) then

begin // 3

cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start].Value := VarToStr

(data[0][0]);

cW_Contract_Params.wrappers[cxDateEdit_PC_D_End].Value := VarToStr

(data[0][1]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Org].Value := VarToStr

(data[0][2]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Org].ValueDisplay := VarToStr

(data[0][20]);

cW_Contract_Params.wrappers[CheckBox_PC_NDS].Value := VarToStr

(data[0][21]);

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

then cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].Clear

else cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].Value :=VarToStr

(data[0][24]);

{cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].Value := VarToStr

(DC.GetValue(DC.FocusedRecordIndex, tv_listeners_money.Index));

cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money].ValueDisplay :=

DC.GetDisplayText(DC.FocusedRecordIndex, tv_listeners_money.Index);}

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

then cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].Clear

else cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].Value :=

DateToStr(StrToDate(VarToStr(data[0][22])));

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

then cW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].Clear

else cW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].Value :=

DateToStr(StrToDate(VarToStr(data[0][23])));

cW_Contract_Params.wrappers[cxPopupEdit_PC_SF].Value := VarToStr

(data[0][3]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_SF].ValueDisplay := VarToStr

(data[0][4]);

TButtonOrderEditWrapper(cW_Contract_Params.wrappers

[cxButtonEdit_PC_Contract]).SetListProperties

(VarToStr(DC.Values[FSqlData_TableView.LastChoiceIndex,

tv_listeners_id_paragraph_contract.Index]), VarToStr(data[0][6]),

VarToStr(data[0][8]), '', VarToStr(data[0][5]), '', '', '',

VarToStr(data[0][7]),

VarToStr(DC.Values[FSqlData_TableView.LastChoiceIndex,

tv_listeners_status_text_contract.Index]), '', '', '');

cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order].Value := VarToStr

(data[0][6]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order].ValueDisplay :=

VarToStr(data[0][8]);

TButtonOrderEditWrapper(cW_Contract_Params.wrappers

[cxButtonEdit_PC_Direction]).SetListProperties

(VarToStr(data[0][9]), VarToStr(data[0][13]), VarToStr(data[0][14]),

'', VarToStr(data[0][10]), '', '', '', VarToStr(data[0][11]),

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

cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction].Value :=

VarToStr(data[0][13]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction]

.ValueDisplay := VarToStr(data[0][14]);

cW_Contract_Params.wrappers[cxTextEdit_PC_Basis].Value := VarToStr

(data[0][15]);

cW_Contract_Params.wrappers[cxTextEdit_PC_FIO].Value := VarToStr

(data[0][16]);

cW_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].Value := VarToStr

(data[0][17]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Post].Value := VarToStr

(data[0][18]);

cW_Contract_Params.wrappers[cxPopupEdit_PC_Post].ValueDisplay :=

VarToStr(data[0][19]);

end // 3

else

cW_Contract_Params.ClearWrappers;

end // 2

else

cW_Contract_Params.ClearWrappers;

end; // 1

end;

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

procedure TForm_Event.Fill_tv_com_specExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_com_spec);

if (FSqlData_TableView <> nil) then

begin // 1

if Sender = PopupEdit_Import_UMK then

begin

if FSqlData_TableView.Parameters[1] <> VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)

then begin

FSqlData_TableView.Parameters[1] := VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value);

FSqlData_TableView.Read_Data;

end

else FSqlData_TableView.Read_Data_First;

end

else

// Работа с текущим повышением плана (в редактировании грида)

begin

if FSqlData_TableView.Parameters[1] <> VarToStr

(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex

,tv_r_c_plan_id_spec_div.Index])

then

begin

FSqlData_TableView.Parameters[1] := VarToStr

(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex

, tv_r_c_plan_id_spec_div.Index]);

FSqlData_TableView.Read_Data;

end

else FSqlData_TableView.Read_Data_First;

end;

end; // 1

end;

procedure TForm_Event.Fill_tv_contractsExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_contracts);

if (FSqlData_TableView <> nil) then

begin // 1

FSqlData_TableView.Params[0] := cW_New_Listener.wrappers

[cxPopupEdit_New_Listener_Kind_Order].Value;

FSqlData_TableView.Params[1] := cW_New_Listener.wrappers

[cxPopupEdit_New_Listener_FIO].Value;

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First

else

FSqlData_TableView.Read_Data;

end; // 1

end;

procedure TForm_Event.Fill_tv_ed_groupExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_ed_group);

if (FSqlData_TableView <> nil) then

begin // 1

FSqlData_TableView.Params[0] := VarToStr

(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_spec_div.Index]);

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First

else

FSqlData_TableView.Read_Data;

end; // 1

end;

procedure TForm_Event.Fill_tv_kba_endExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_kba_end);

if (FSqlData_TableView <> nil) then

begin // 1

if VarToStr(FSqlData_TableView.Params[0]) <> cW_End_Education.wrappers

[cxButtonEdit_End_Education].Value then

begin // 2

FSqlData_TableView.Params[0] := cW_End_Education.wrappers

[cxButtonEdit_End_Education].Value;

FSqlData_TableView.Read_Data;

end; // 2

end; // 1

end;

procedure TForm_Event.Fill_tv_kba_startExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_kba_start);

if (FSqlData_TableView <> nil) then

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Event.Fill_tv_kind_directionExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_kind_direction);

if (FSqlData_TableView <> nil) then

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Event.Fill_tv_kind_orderExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_kind_order);

if (FSqlData_TableView <> nil) then

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Event.Fill_tv_listenersExecute(Sender: TObject);

var

FSqlData_TableView2: TSqlData_cxGridTableView;

Param0: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_listeners);

FSqlData_TableView2 := Get_SqlData_cxGrid(tv_r_c_plan);

if (FSqlData_TableView <> nil) and (FSqlData_TableView2 <> nil) then

begin // 1

Param0 := VarToStr(FSqlData_TableView2.GridTableView.DataController.Values

[FSqlData_TableView2.LastChoiceIndex, tv_r_c_plan_id_r_c_plan.Index]);

if VarToStr(FSqlData_TableView.Params[0]) <> Param0 then

begin // 2

FSqlData_TableView.Params[0] := Param0;

FSqlData_TableView.Read_Data;

end

else FSqlData_TableView.Read_Data_First; // 2

end; // 1

end;

procedure TForm_Event.Fill_tv_ordersExecute(Sender: TObject);

var

Param0: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_orders);

if (FSqlData_TableView <> nil) then

begin // 1

Param0 := VarToStr(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_id_e.Index]);

if VarToStr(FSqlData_TableView.Params[0]) <> Param0 then

begin // 2

FSqlData_TableView.Params[0] := Param0;

FSqlData_TableView.Read_Data;

end; // 2

end; // 1

end;

procedure TForm_Event.Fill_tv_planExecute(Sender: TObject);

var

Param0: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_plan);

if (FSqlData_TableView <> nil) then

begin // 1

Param0 := VarToStr(cW_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year]

.Value);

if (VarToStr(FSqlData_TableView.Params[0]) <> Param0) then

begin // 2

FSqlData_TableView.Params[0] := Param0;

FSqlData_TableView.Read_Data;

end // 2

else FSqlData_TableView.Read_Data_First;

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

then FindGridRecord(tv_plan, [tv_plan_id_paragraph]

, CreateVarAr([VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)]));

end; // 1

end;

procedure TForm_Event.Fill_tv_postsExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_posts);

if (FSqlData_TableView <> nil) then

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Event.Fill_tv_r_c_groupsExecute(Sender: TObject);

var

FSqlData_TableView2: TSqlData_cxGridTableView;

Param0: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_r_c_groups);

FSqlData_TableView2 := Get_SqlData_cxGrid(tv_r_c_plan);

if (FSqlData_TableView <> nil) and (FSqlData_TableView2 <> nil) then

begin // 1

Param0 := VarToStr(FSqlData_TableView2.GridTableView.DataController.Values

[FSqlData_TableView2.LastChoiceIndex, tv_r_c_plan_id_r_c_plan.Index]);

if VarToStr(FSqlData_TableView.Params[0]) <> Param0 then

begin // 2

FSqlData_TableView.Params[0] := Param0;

FSqlData_TableView.Read_Data;

end

else FSqlData_TableView.Read_Data_First; // 2

end; // 1

end;

procedure TForm_Event.Fill_tv_r_c_planExecute(Sender: TObject);

var

Param0: string;

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_r_c_plan);

if (FSqlData_TableView <> nil) then

begin // 1

Param0 := VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan]

.Value);

if (VarToStr(FSqlData_TableView.Params[0]) <> Param0)

or FSqlData_TableView.IsFirstRead then

begin // 2

FSqlData_TableView.Params[0] := Param0;

FSqlData_TableView.Read_Data;

end; // 2

end; // 1

end;

procedure TForm_Event.Fill_tv_source_finansingExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_Source_Financing);

if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end;

procedure TForm_Event.Fill_tv_spec_div_popupExecute(Sender: TObject);

begin

FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div_popup);

if (FSqlData_TableView <> nil) then

begin // 1

if FSqlData_TableView.IsFirstRead then

FSqlData_TableView.Read_Data_First;

end; // 1

end;

procedure TForm_Event.FormDestroy(Sender: TObject);

begin

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

Save_Restore_Params(Curr_Reg_Path, False);

end;

procedure TForm_Event.FormShow(Sender: TObject);

begin

{ Читаем списки }

Fill_tv_r_c_planExecute(self);

end;

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

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

begin

Curr_Reg_Path := AReg_Path;

DateEdit_Import_Reference.Date := Date;

DateEdit_New_Nach.Date := Date;

DateEdit_Create_Nach_All.Date := Date;

DateEdit_Stat_Begin.Date := StrToDate('01.01.' + IntToStr(YearOf(Date)));

DateEdit_Stat_End.Date := StrToDate('31.12.' + IntToStr(YearOf(Date)));

DateEdit_Filter_Start.Date := DateEdit_Stat_Begin.Date;

DateEdit_Filter_End.Date := DateEdit_Stat_End.Date;

if AForm_SE <> nil then

Current_Form_SE := AForm_SE;

if not assigned(Current_Form_SE) then

Current_Form_SE := TForm_SE.Create(self);

with Get_SqlData_cxGrid(Current_Form_SE.cxGrid_FIO) do

begin

ActionInsert.OnExecute := Action_New_SE.OnExecute;

ActionDelete.Enabled := False;

PopupActions.Add(ActionInsert);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

if AForm_Find_Org <> nil then

Current_Form_Find_Org := AForm_Find_Org;

if not assigned(Current_Form_Find_Org) then

begin

Current_Form_Find_Org := TForm_Find_Org.Create(self);

Current_Form_Find_Org.Init;

end;

if AForm_Anketa <> nil

then Current_Form_Anketa := AForm_Anketa;

if not assigned(Current_Form_Anketa) then

begin

Current_Form_Anketa.Init(Current_Form_Anketa, [qpers, qphoto, qcont, qdocs,

qadr, QWithTabSheet, Qworkplaces, QWeb_User], ForWorkWith, nil,

Current_Form_SE);

//Current_Form_Anketa.FFormDocuments.TypeDoc := 3;

Current_Form_Anketa.FFormDocuments.ReadAdditionalInfo;

Current_Form_Anketa.IsEnabled := True;

Current_Form_Anketa.ManualDock(Panel_Anketa, nil, alClient);

Current_Form_Anketa.RefreshRoles(False);

end;

if AForm_Anketa_For_New <> nil

then Form_Anketa_For_New := AForm_Anketa_For_New;

if not assigned(Form_Anketa_For_New)

then

begin

Form_Anketa_For_New.Init(Form_Anketa_For_New

, [Qpers, Qdocs, QCont, QAdr]

, ForNew, nil, Current_Form_SE);

Form_Anketa_For_New.FFormDocuments.TypeDoc := 1;

//Form_Anketa_For_New.hm := HandymanFunctions;

Form_Anketa_For_New.SimilaryCheckModeOn := True;

Form_Anketa_For_New.PostOnEnter := True;

Form_Anketa_For_New.DisplayLookUps := False;

end;

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

cW_New_R_C_Plan := TContainerWrappers.Create;

cW_New_R_C_Plan.AddPopupEdit(cxPopupEdit_New_R_C_Plan_Spec_Div, True, False,

cxGrid_Spec_Div_PopUp, tv_spec_div_popup, tv_spec_div_popup_id_spec_div,

[tv_spec_div_popup_name_spec, tv_spec_div_popup_name_div,

tv_spec_div_popup_kind_training], '');

cW_New_R_C_Plan.AddButtonOrderEdit(cxButtonEdit_New_R_C_Plan_Paragraph, True,

False, '', ['902'], [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW],

[nil, nil, nil, nil]);

cW_New_R_C_Plan.AddCustomEdit(cxDateEdit_New_R_C_Plan_D_Start, True, False,

'');

cW_New_R_C_Plan.AddCustomEdit(cxDateEdit_New_R_C_Plan_D_End, False, False,

'');

cW_New_R_C_Plan.OnChangeWrapper := DoChanged_cW_New_R_C_Plan;

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

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

cW_New_R_C_Group := TContainerWrappers.Create;

cW_New_R_C_Group.AddPopupEdit(cxPopupEdit_New_R_C_Group_Ed_Group, True,

False, cxGrid_Ed_Group, tv_ed_group, tv_ed_group_id_ed_group,

[tv_ed_group_name], '');

cW_New_R_C_Group.AddPopupEdit(cxPopupEdit_New_R_C_Group_Met_Complex, True,

False, cxGrid_Com_Spec, tv_com_spec, tv_com_spec_id_met_complex,

[tv_com_spec_name_spec, tv_com_spec_status_text], '');

cW_New_R_C_Group.AddCustomEdit(cxDateEdit_New_R_C_Group_D_Start, True, False,

'');

cW_New_R_C_Group.AddCustomEdit(cxDateEdit_New_R_C_Group_D_End, True, False,

'');

cW_New_R_C_Group.OnChangeWrapper := DoChanged_cW_New_R_C_Group;

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

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

cW_New_Listener := TContainerWrappers.Create;

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_FIO, True, False,

Current_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO,

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

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Ed_Group, True, False,

cxGrid_R_C_Groups, tv_r_c_groups, tv_r_c_groups_id_ed_group,

[tv_r_c_groups_name], '');

cW_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_D_Start, True, False,

'');

cW_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_D_End, True, False, '');

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Kind_Basis_Action,

True, False, cxGrid_KBA_Start, tv_kba_start, tv_kba_start_id,

[tv_kba_start_name], '');

cW_New_Listener.AddButtonOrderEdit(cxButtonEdit_New_Listener_Order_Start,

True, False, '', ['200'], [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE,

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

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Kind_Order, False,

False, cxGrid_Kind_Order, tv_kind_order, tv_kind_order_id,

[tv_kind_order_name], '');

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Order, False, False,

cxGrid_Contracts, tv_contracts, tv_contracts_id_paragraph,

[tv_contracts_contract], '');

cW_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_Contract_D_Start,

False, False, '');

cW_New_Listener.AddCustomEdit(cxDateEdit_New_Listener_Contract_D_End, False,

False, '');

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Contract_Organization,

False, False, Current_Form_Find_Org.cxGrid_Org,

Current_Form_Find_Org.TTree_Org, Current_Form_Find_Org.Tree_Org_ID_CA,

[Current_Form_Find_Org.Tree_Org_Name], '');

cW_New_Listener.AddPopupEdit(

cxPopupEdit_New_Listener_Contract_Source_Finansing, False, False,

cxGrid_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,

[tv_Source_Financing_Name], '');

cW_New_Listener.AddCustomEdit(cxCurrencyEdit_New_Listener_Contract_Money,

False, False, '');

cW_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_Basis, False, False,

'');

cW_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_FIO, False, False, '');

cW_New_Listener.AddCustomEdit(cxTextEdit_New_Listener_FIO_R, False, False,

'');

cW_New_Listener.AddPopupEdit(cxPopupEdit_New_Listener_Post, False, False,

cxGrid_Posts, tv_posts, tv_posts_id, [tv_posts_name], '');

cW_New_Listener.OnChangeWrapper := DoChanged_cW_New_Listener;

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

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

cW_Contract_Params := TContainerWrappers.Create;

cW_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_Start, False, True, '');

cW_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_End, False, True, '');

cW_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_Start_Otrjv, False, True, '');

cW_Contract_Params.AddCustomEdit(cxDateEdit_PC_D_End_Otrjv, False, True, '');

cW_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Org, False, True,

Current_Form_Find_Org.cxGrid_Org, Current_Form_Find_Org.TTree_Org,

Current_Form_Find_Org.Tree_Org_ID_CA,

[Current_Form_Find_Org.Tree_Org_Name], '');

cW_Contract_Params.AddPopupEdit(cxPopupEdit_PC_SF, False, True,

cxGrid_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,

[tv_Source_Financing_Name], '');

cW_Contract_Params.AddCustomEdit(cxCurrencyEdit_PC_Money, False, True, '');

cW_Contract_Params.AddButtonOrderEdit(cxButtonEdit_PC_Contract, False, False,

'', ['68924'], [OBE_INNAVIGATE, OBE_PREVIEW], [nil, nil]);

cW_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Kind_Order, False, True,

cxGrid_Kind_Order, tv_kind_order, tv_kind_order_id, [tv_kind_order_name],

'');

cW_Contract_Params.AddButtonOrderEdit(cxButtonEdit_PC_Direction, False,

False, '', ['431', '433', '434', '62'], [OBE_INNAVIGATE, OBE_PREVIEW],

[nil, nil]);

cW_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Kind_Direction, False, True,

cxGrid_Kind_Direction, tv_kind_direction, tv_kind_direction_id,

[tv_kind_direction_name], '');

cW_Contract_Params.AddCustomEdit(cxTextEdit_PC_Basis, False, True, '');

cW_Contract_Params.AddCustomEdit(cxTextEdit_PC_FIO, False, True, '');

cW_Contract_Params.AddCustomEdit(cxTextEdit_PC_FIO_R, False, True, '');

cW_Contract_Params.AddPopupEdit(cxPopupEdit_PC_Post, False, True,

cxGrid_Posts, tv_posts, tv_posts_id, [tv_posts_name], '');

cW_Contract_Params.AddCustomEdit(CheckBox_PC_NDS, False, True, '');

cW_Contract_Params.ActionApply := PC_Apply;

cW_Contract_Params.ActionRefuse := PC_Refuse;

cW_Contract_Params.OnChangeWrapper := DoChanged_cW_Contract_Params;

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

cW_New_Direction := TContainerWrappers.Create;

cW_New_Direction.AddPopupEdit(cxPopupEdit_New_Direction, True, False,

cxGrid_Kind_Direction, tv_kind_direction, tv_kind_direction_id,

[tv_kind_direction_name], '');

cW_New_Direction.OnChangeWrapper := DoChanged_cW_New_Direction;

cw_New_UMK := TContainerWrappers.Create;

cw_New_UMK.AddCustomEdit(SpinEdit_New_UMK_Hours, True, False, '');

cw_New_UMK.AddCustomEdit(SpinEdit_New_UMK_Hours_SR, False, False, '');

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

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

cW_End_Education := TContainerWrappers.Create;

cW_End_Education.AddButtonOrderEdit(cxButtonEdit_End_Education, True, False,

'', ['201', '207'], [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW],

[nil, nil, nil, nil]);

cW_End_Education.AddPopupEdit(cxPopupEdit_KBA_End, True, False,

cxGrid_Kba_End, tv_kba_end, tv_kba_end_id, [tv_kba_end_name],

'');

cW_End_Education.AddCustomEdit(cxDateEdit_End_Education, True, False, '');

cW_End_Education.OnChangeWrapper := DoChanged_cW_End_Education;

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

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

// добавление плана повышения квалификации

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

if Get_SqlData_cxGrid(tv_r_c_plan) = nil then

with TSqlData_cxGridTableView.Create(tv_r_c_plan) do

begin

Editing := True;

Single := False;

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

GUID_Select := R_C_Plan;

GUID_Update := d_P_REFRESHER_COURSE_PLAN;

Params := CreateVarAr(['']);

StepOnTopDataRecordMode := True;

Stat_Column := tv_r_c_plan_institute;

NameColumnForPopupEdit := tv_r_c_plan_institute;

with Select_Columns do

begin

Add(tv_r_c_plan_name_spec, 2);

Add(tv_r_c_plan_institute, 2);

Add(tv_r_c_plan_division, 2);

Add(tv_r_c_plan_kind_training, 2);

Add(tv_r_c_plan_d_start, 1);

Add(tv_r_c_plan_d_end, 0);

Add(tv_r_c_plan_source, 2);

Add(tv_r_c_plan_money);

Add(tv_r_c_plan_status_text, 3);

Add(tv_r_c_plan_id_r_c_plan, 4);

Add(tv_r_c_plan_id_spec_div, 2);

Add(tv_r_c_plan_id_spec, 2);

Add(tv_r_c_plan_id_institute, 2);

Add(tv_r_c_plan_id_d, 2);

Add(tv_r_c_plan_idk_training, 2);

Add(tv_r_c_plan_id_paragraph, 3);

Add(tv_r_c_plan_id_order, 3);

Add(tv_r_c_plan_idk_order, 3);

Add(tv_r_c_plan_status_order, 3);

Add(tv_r_c_plan_id_source, 2);

Add(tv_r_c_plan_id_erp_user);

end;

Key_Columns.Add(tv_r_c_plan_id_r_c_plan, 4);

with Insert_Columns do

begin

Add(tv_r_c_plan_d_end, 0);

Add(tv_r_c_plan_d_start, 1);

Add(tv_r_c_plan_id_spec_div, 2);

Add(tv_r_c_plan_id_paragraph, 3);

end;

with PopupColumnsList.Add(tv_r_c_plan_name_spec) do

begin

SelfKeyColumn := tv_r_c_plan_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_name_spec;

end;

with PopupColumnsList.Add(tv_r_c_plan_institute) do

begin

SelfKeyColumn := tv_r_c_plan_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_institute;

end;

with PopupColumnsList.Add(tv_r_c_plan_division) do

begin

SelfKeyColumn := tv_r_c_plan_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_name_div;

end;

with PopupColumnsList.Add(tv_r_c_plan_kind_training) do

begin

SelfKeyColumn := tv_r_c_plan_id_spec_div;

PopupKeyColumn := tv_spec_div_popup_id_spec_div;

PopupNameColumn := tv_spec_div_popup_kind_training;

end;

with PopupColumnsList.Add(tv_r_c_plan_source) do

begin

SelfKeyColumn := tv_r_c_plan_id_source;

PopupKeyColumn := tv_Source_Financing_ID;

PopupNameColumn := tv_Source_Financing_Name;

end;

OptionsOrder.Column_Status_Text := tv_r_c_plan_status_text;

OptionsOrder.Column_ID_order := tv_r_c_plan_id_order;

OptionsOrder.Column_ID_paragraph := tv_r_c_plan_id_paragraph;

OptionsOrder.Column_IDk_order := tv_r_c_plan_idk_order;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_Insert_tv_r_c_plan.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

LogicMode := lmLastChoice;

OnChoiceGridRecord := ChoiceGridRecord;

end;

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

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

// добавление обучаемых специальностей (специальности подразделений)

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

if Get_SqlData_cxGrid(tv_spec_div_popup) = nil then

with TSqlData_cxGridTableView.Create(tv_spec_div_popup) do

begin

Single := False;

Table_Name := 'Обучаемые специальности';

GUID_Select := Spec_div;

GUID_Update := d_P_SPECIALITIES_DIVISION;

Params := CreateVarAr([IDK_Level_Spec, '']);

Stat_Column := tv_spec_div_popup_institute;

NameColumnForPopupEdit := tv_spec_div_popup_institute;

StepOnTopDataRecordMode := True;

with Select_Columns do

begin

Add(tv_spec_div_popup_name_spec, 1);

Add(tv_spec_div_popup_name_div, 2);

Add(tv_spec_div_popup_kind_training, 3);

Add(tv_spec_div_popup_institute, 6);

Add(tv_spec_div_popup_source, 12);

Add(tv_spec_div_popup_d_start, 4);

Add(tv_spec_div_popup_d_end, 5);

Add(tv_spec_div_popup_id_spec_div, 0);

Add(tv_spec_div_popup_id_spec, 1);

Add(tv_spec_div_popup_id_d, 2);

Add(tv_spec_div_popup_idk_training, 3);

Add(tv_spec_div_popup_id_d_institute, 6);

Add(tv_spec_div_popup_id_source, 12);

Add(tv_spec_div_popup_idk_level_formation, 8);

end;

with Insert_Columns

do begin

Add(tv_spec_div_popup_id_spec, 1);

Add(tv_spec_div_popup_id_d, 2);

Add(tv_spec_div_popup_idk_training, 3);

Add(tv_spec_div_popup_d_start, 4);

Add(tv_spec_div_popup_id_d_institute, 6);

Add(tv_spec_div_popup_idk_level_formation, 8);

Add(tv_spec_div_popup_id_source, 12);

end;

Key_Columns.Add(tv_spec_div_popup_id_spec_div, 0);

PopupActions.Add(ActionUpdate);

end;

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

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

// добавление групп повышения квалификации

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

if Get_SqlData_cxGrid(tv_r_c_groups) = nil then

with TSqlData_cxGridTableView.Create(tv_r_c_groups) do

begin

Editing := True;

Single := False;

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

GUID_Select := R_C_Groups;

GUID_Update := d_P_REFRESHER_COURSE_GROUP;

StepOnTopDataRecordMode := True;

Params := CreateVarAr(['']);

Stat_Column := tv_r_c_groups_name;

NameColumnForPopupEdit := tv_r_c_groups_name;

with Select_Columns do

begin

Add(tv_r_c_groups_name, 2);

Add(tv_r_c_groups_d_start, 1);

Add(tv_r_c_groups_d_end, 0);

Add(tv_r_c_groups_status_text, 3);

Add(tv_r_c_groups_hours); ;

Add(tv_r_c_groups_id_rc_group, 4);

Add(tv_r_c_groups_id_ed_group, 2);

Add(tv_r_c_groups_id_met_complex, 3);

Add(tv_r_c_groups_id_paragraph, 3);

Add(tv_r_c_groups_id_order, 3);

Add(tv_r_c_groups_idk_order, 3);

Add(tv_r_c_groups_status_order, 3);

Add(tv_r_c_groups_id_r_c_plan, 5);

Add(tv_r_c_groups_id_erp_user);

end;

Key_Columns.Add(tv_r_c_groups_id_rc_group, 4);

with Insert_Columns do

begin

Add(tv_r_c_groups_d_end, 0);

Add(tv_r_c_groups_d_start, 1);

Add(tv_r_c_groups_id_ed_group, 2);

Add(tv_r_c_groups_id_met_complex, 3);

Add(tv_r_c_groups_id_r_c_plan, 5);

end;

with PopupColumnsList.Add(tv_r_c_groups_name) do

begin

SelfKeyColumn := tv_r_c_groups_id_ed_group;

PopupKeyColumn := tv_ed_group_id_ed_group;

PopupNameColumn := tv_ed_group_name;

end;

OptionsOrder.Column_Status_Text := tv_r_c_groups_status_text;

OptionsOrder.Column_ID_order := tv_r_c_groups_id_order;

OptionsOrder.Column_ID_paragraph := tv_r_c_groups_id_paragraph;

OptionsOrder.Column_IDk_order := tv_r_c_groups_idk_order;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_Insert_tv_r_c_group.OnExecute;

LogicMode := lmLastChoice;

OnChoiceGridRecord := ChoiceGridRecord;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

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

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

// Учебные группы

with TSqlData_cxGridTableView.Create(tv_ed_group) do

begin

Editing := False;

Table_Name := 'Учебные группы';

Params := CreateVarAr(['']);

GUID_Select := Ed_Groups;

Single := False;

StepOnTopDataRecordMode := True;

Stat_Column := tv_ed_group_name;

NameColumnForPopupEdit := tv_ed_group_name;

with Select_Columns do

begin

Add(tv_ed_group_name, 1);

Add(tv_ed_group_kind_group, 8);

Add(tv_ed_group_d_start, 4);

Add(tv_ed_group_d_end, 5);

Add(tv_ed_group_id_ed_group, 0);

Add(tv_ed_group_id_spec_div, 2);

Add(tv_ed_group_idk_group, 8);

Add(tv_ed_group_level_group, 3);

end;

Key_Columns.Add(tv_ed_group_id_ed_group, 0);

PopupActions.Add(ActionUpdate);

end;

// Куратор текущей группы

with TSqlData_cxGridTableView.Create(TTree_Curator) do

begin

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

GUID_Select := Get_List_Curators_By_ID_EG;

GUID_Update := d_P_CURATOR_GROUP;

ParametersCount := 1;

RequiredParemeters.Add(1);

StepOnTopDataRecordMode := True;

Stat_Column := Tree_Curator_FIO;

with Select_Columns do

begin

Add(Tree_Curator_Start, 1);

Add(Tree_Curator_End, 0);

Add(Tree_Curator_FIO, 2);

Add(Tree_Curator_ID_E, 2);

Add(Tree_Curator_ID_EG, 3);

end;

with Insert_Columns do

begin

Add(Tree_Curator_Start, 1);

Add(Tree_Curator_ID_E, 2);

Add(Tree_Curator_ID_EG, 3);

end;

with PopupColumnsList.Add(Tree_Curator_FIO) do

begin

SelfKeyColumn := Tree_Curator_ID_E;

PopupKeyColumn := Current_Form_SE.cxGrid_FIO_ID_E;

PopupNameColumn := Current_Form_SE.cxGrid_FIO_Full;

end;

Key_Columns.Add(Tree_Curator_ID_E, 2);

Key_Columns.Add(Tree_Curator_ID_EG, 3);

Key_Columns.Add(Tree_Curator_Start, 1);

ActionInsert.OnExecute := Action_New_Curator.OnExecute;

TcxPopupEditProperties(Tree_Curator_FIO.Properties).PopupControl :=

Current_Form_SE;

PopupEdit_New_Curator_FIO.Properties.PopupControl := Current_Form_SE;

cW_New_Curator := TContainerWrappers.Create;

cW_New_Curator.AddCustomEdit(DateEdit_New_Curator, True, False, '');

cW_New_Curator.AddPopupEdit(PopupEdit_New_Curator_FIO, True, False,

Current_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO,

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

cW_New_Curator.ActionEnter := Action_Insert_Curator;

end;

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

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

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

// добавление специальностей комплекса

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

if Get_SqlData_cxGrid(tv_com_spec) = nil then

with TSqlData_cxGridTableView.Create(tv_com_spec) do

begin

Editing := False;

Single := False;

Table_Name := 'Методический комплекс';

GUID_Select := Met_Complex;

StepOnTopDataRecordMode := True;

ParametersCount := 1;

RequiredParemeters.Add(1);

Stat_Column := tv_com_spec_institute;

NameColumnForPopupEdit := tv_com_spec_institute;

with Select_Columns do

begin

Add(tv_com_spec_name_spec);

Add(tv_com_spec_institute);

Add(tv_com_spec_name_div);

Add(tv_com_spec_kind_training);

Add(tv_com_spec_status_text);

Add(tv_com_spec_hours);

Add(tv_com_spec_id_spec_div);

Add(tv_com_spec_id_spec);

Add(tv_com_spec_id_institute);

Add(tv_com_spec_id_d_spec_div);

Add(tv_com_spec_idk_training);

Add(tv_com_spec_status_order);

Add(tv_com_spec_id_p_dp);

Add(tv_com_spec_id_order);

Add(tv_com_spec_idk_order);

Add(tv_com_spec_id_met_complex);

//Add(tv_com_spec_id_e_l_umk);

Add(tv_com_spec_sam);

end;

PopupActions.Add(ActionUpdate);

end;

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

with TSqlData_cxGridTableView.Create(TTree_Main_Contracts) do

begin

Editing := False;

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

GUID_Select := Get_List_Main_Contracts;

StepOnTopDataRecordMode := True;

ParametersCount := 1;

RequiredParemeters.Add(1);

with Select_Columns do

begin

Add(Tree_Main_Contracts_Contract);

Add(Tree_Main_Contracts_Org_Name);

Add(Tree_Main_Contracts_Number);

Add(Tree_Main_Contracts_ID_Contract);

end;

Key_Columns.Add(Tree_Main_Contracts_ID_Contract);

PopupActions.Add(ActionUpdate);

Stat_Column := Tree_Main_Contracts_Contract;

NameColumnForPopupEdit := Tree_Main_Contracts_Contract;

end;

// Виды сертификатов

with TSqlData_cxGridTableView.Create(TTree_Kind_Doc_Cert) do

begin

Editing := False;

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

GUID_Select := Get_Kind_Documents;

StepOnTopDataRecordMode := True;

with Select_Columns do

begin

Add(Tree_Kind_Doc_Cert_Name);

Add(Tree_Kind_Doc_Cert_ID);

end;

Key_Columns.Add(Tree_Kind_Doc_Cert_ID);

PopupActions.Add(ActionUpdate);

Stat_Column := Tree_Kind_Doc_Cert_Name;

NameColumnForPopupEdit := Tree_Kind_Doc_Cert_Name;

end;

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

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

// добавление участников

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

if Get_SqlData_cxGrid(tv_listeners) = nil then

with TSqlData_cxGridTableView.Create(tv_listeners) do

begin

Editing := True;

Single := False;

Table_Name := 'Участники';

GUID_Select := Listeners;

GUID_Update := d_P_STUDENTS;

StepOnTopDataRecordMode := True;

OnAfter_Read := After_Read_tv_listeners;

Params := CreateVarAr(['']);

Stat_Column := tv_listeners_fio;

NameColumnForPopupEdit := tv_listeners_fio;

StepOnTopDataRecordMode := True;

with Select_Columns do

begin

Add(tv_listeners_fio, 1);

Add(tv_listeners_ed_group, 7);

Add(tv_listeners_d_start, 4);

Add(tv_listeners_d_end);

Add(tv_listeners_d_end_plan);

Add(tv_listeners_kind_basis_action, 8);

Add(tv_listeners_status_text_order_start, 3);

Add(tv_listeners_status_text_order_end);

Add(tv_listeners_status_text_contract);

Add(tv_listeners_org);

Add(tv_listeners_money);

Add(tv_listeners_certificate, 4);

Add(tv_listeners_hours, 20);

Add(tv_listeners_hours_plan);

Add(tv_listeners_last_date);

Add(tv_listeners_id_student, 0);

Add(tv_listeners_id_e, 1);

Add(tv_listeners_id_ed_group, 7);

Add(tv_listeners_idkba_transfer, 8);

Add(tv_listeners_id_paragraph_start, 3);

Add(tv_listeners_id_order_start, 3);

Add(tv_listeners_idk_order_start, 3);

Add(tv_listeners_id_contract);

Add(tv_listeners_status_order_start, 3);

Add(tv_listeners_id_paragraph_contract, 10);

Add(tv_listeners_id_erp_user);

Add(tv_listeners_id_contractor);

Add(tv_listeners_Main_Contract);

Add(tv_listeners_ID_Contract_Main);

Add(tv_listeners_Org_Contract_Main);

Add(tv_listeners_NDS);

Add(tv_listeners_ID_Paragraph_End);

Add(tv_listeners_ID_ERP_End);

Add(tv_listeners_ID_Status_End);

Add(tv_listeners_ID_Certificate, 0);

Add(tv_listeners_ID_Doc_Cert, 0);

Add(tv_listeners_Kind_Cert, 1);

Add(tv_listeners_ID_Kind_Cert, 1);

Add(tv_listeners_Cert_Date, 2);

Add(tv_listeners_Reg_Number, 0);

Add(tv_listeners_ID_Reg, 5);

Cont_New_Nach_All := TContainerWrappers.Create;

Cont_New_Nach_All.AddButtonOrderEdit(ButtonEdit_Create_Nach_All, True, False, ''

, ['436, 444']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

Cont_New_Nach_All.AddCustomEdit(DateEdit_Create_Nach_All, True, False, '');

Cont_New_Nach_All.ActionEnter := Action_Go_Nach_All;

end;

Key_Columns.Add(tv_listeners_id_student, 0);

with IndividualEditInfoList.Add do

begin

GUID_Update_Exchange := Update_FIO;

EditColumns.Add(tv_listeners_fio, 1);

end;

with IndividualEditInfoList.Add do

begin

GUID_Update_Exchange := Update_Ed_Group;

EditColumns.Add(tv_listeners_ed_group, 7);

EditColumns.Add(tv_listeners_d_start, 4);

end;

with IndividualEditInfoList.Add do

begin

GUID_Update_Exchange := Update_End_Date;

EditColumns.Add(tv_listeners_d_end);

end;

with IndividualEditInfoList.Add do

begin

GUID_Update := d_P_CERTIFICATE;

EditColumns.Add(tv_listeners_hours, 20);

KeyColumns.Add(tv_listeners_ID_Certificate, 0);

end;

with IndividualEditInfoList.Add do

begin

GUID_Update := d_P_MAGAZINE_REGISTR_DIPLOMAS;

EditColumns.Add(tv_listeners_Reg_Number, 0);

KeyColumns.Add(tv_listeners_ID_Reg, 5);

end;

with IndividualEditInfoList.Add do

begin

GUID_Update := d_P_DOCUMENTS;

EditColumns.Add(tv_listeners_Kind_Cert, 1);

EditColumns.Add(tv_listeners_Cert_Date, 2);

EditColumns.Add(tv_listeners_certificate, 4);

KeyColumns.Add(tv_listeners_ID_Doc_Cert, 0);

end;

OnBefore_Update_Exchange := Before_Update_Exchange_tv_listeners;

with Insert_Columns do

begin

Add(tv_listeners_id_e, 1);

Add(tv_listeners_id_ed_group, 7);

Add(tv_listeners_idkba_transfer, 8);

Add(tv_listeners_id_paragraph_start, 3);

Add(tv_listeners_d_start, 4);

Add(tv_listeners_id_paragraph_contract, 10);

end;

TcxPopupEditProperties(tv_listeners_fio.Properties).PopupControl :=

Current_Form_SE;

cxPopupEdit_New_Listener_FIO.Properties.PopupControl := Current_Form_SE;

cxPopupEdit_New_Listener_Contract_Organization.Properties.PopupControl :=

Current_Form_Find_Org;

// TcxPopupEditProperties(tv_listeners_org.Properties).PopupControl := Current_Form_Find_Org;

cxPopupEdit_PC_Org.Properties.PopupControl := Current_Form_Find_Org;

with PopupColumnsList.Add(tv_listeners_fio) do

begin

SelfKeyColumn := tv_listeners_id_e;

PopupKeyColumn := Current_Form_SE.cxGrid_FIO_ID_E;

PopupNameColumn := Current_Form_SE.cxGrid_FIO_Full;

end;

with PopupColumnsList.Add(tv_listeners_ed_group) do

begin

SelfKeyColumn := tv_listeners_id_ed_group;

PopupKeyColumn := tv_r_c_groups_id_ed_group;

PopupNameColumn := tv_r_c_groups_name;

end;

with PopupColumnsList.Add(tv_listeners_d_start) do

begin

SelfKeyColumn := tv_listeners_id_ed_group;

PopupKeyColumn := tv_r_c_groups_id_ed_group;

PopupNameColumn := tv_r_c_groups_d_start;

end;

with PopupColumnsList.Add(tv_listeners_kind_basis_action) do

begin

SelfKeyColumn := tv_listeners_idkba_transfer;

PopupKeyColumn := tv_kba_start_id;

PopupNameColumn := tv_kba_start_name;

end;

with PopupColumnsList.Add(tv_listeners_Kind_Cert) do

begin

SelfKeyColumn := tv_listeners_ID_Kind_Cert;

PopupKeyColumn := Tree_Kind_Doc_Cert_ID;

PopupNameColumn := Tree_Kind_Doc_Cert_Name;

end;

OptionsOrder.Column_Status_Text := tv_listeners_status_text_order_start;

OptionsOrder.Column_ID_order := tv_listeners_id_order_start;

OptionsOrder.Column_ID_paragraph := tv_listeners_id_paragraph_start;

OptionsOrder.Column_IDk_order := tv_listeners_idk_order_start;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_Insert_tv_listeners.OnExecute;

ActionDelete.OnExecute := Delete_tv_listeners.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(Action_Import);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(Action_Add_Contract);

PopupActions.Add(Action_Main_Contract);

PopupActions.Add(Action_New_Money);

PopupActions.Add(Action_Create_Nach_All);

PopupActions.Add(Action_Delete_Nach);

PopupActions.Add(Action_Delete_Contract);

PopupActions.Add(nil);

PopupActions.Add(Action_End_Education);

PopupActions.Add(Action_Delete_Order_End);

PopupActions.Add(nil);

PopupActions.Add(Action_Make_Certificate);

PopupActions.Add(Action_View_Certificate);

PopupActions.Add(Action_Delete_Certificate);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

LogicMode := lmLastChoice;

OnChoiceGridRecord := OnChoiceGridRecord_tv_listeners;

cW_Set_Main_Contract := TContainerWrappers.Create;

cW_Set_Main_Contract.AddCustomEdit(DateEdit_Set_Main_Contract_Find, True,

False, '');

cW_Set_Main_Contract.AddPopupEdit(PopupEdit_Set_Main_Contract, True,

False, cxGrid_Main_Contracts, TTree_Main_Contracts,

Tree_Main_Contracts_ID_Contract, [Tree_Main_Contracts_Contract], '');

cW_Set_Main_Contract.ActionEnter := Action_Go_Set_Main_Contract;

Cont_Make_Cert := TContainerWrappers.Create;

Cont_Make_Cert.AddButtonOrderEdit(ButtonEdit_New_Cert, True, False, ''

, ['225']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

Cont_Make_Cert.AddPopupEdit(PopupEdit_New_Cert_Kind_Doc, True, False

, nil, nil, Tree_Kind_Doc_Cert_ID, [Tree_Kind_Doc_Cert_Name]);

Cont_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Reg, True, False);

Cont_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Number, True, False);

Cont_Make_Cert.AddCustomEdit(SpinEdit_New_Cert_Hours, True, False);

Cont_Make_Cert.ActionEnter := Action_Go_New_Cert;

cw_New_Money := TContainerWrappers.Create;

cw_New_Money.AddCustomEdit(CurrencyEdit_New_Money, True, False);

cw_New_Money.ActionEnter := Action_Go_New_Money;

end;

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

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

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

with TSqlData_cxGridTableView.Create(tv_kba_start) do

begin

Editing := False;

Table_Name := 'Основания зачисления';

GUID_Select := Kind_Basis_Action;

Single := False;

StepOnTopDataRecordMode := True;

with Select_Columns do

begin

Add(tv_kba_start_name);

Add(tv_kba_start_id);

end;

Key_Columns.Add(tv_kba_start_id);

PopupActions.Add(ActionUpdate);

Stat_Column := tv_kba_start_name;

NameColumnForPopupEdit := tv_kba_start_name;

end;

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

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

// Основание окончания

with TSqlData_cxGridTableView.Create(tv_kba_end) do

begin

Editing := False;

Table_Name := 'Основания окончания';

GUID_Select := End_Education_KBA;

Params := CreateVarAr(['']);

Single := False;

StepOnTopDataRecordMode := True;

Stat_Column := tv_kba_end_name;

NameColumnForPopupEdit := tv_kba_end_name;

with Select_Columns do

begin

Add(tv_kba_end_name);

Add(tv_kba_end_id);

end;

Key_Columns.Add(tv_kba_end_id);

PopupActions.Add(ActionUpdate);

end;

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

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

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

// Должности

with TSqlData_cxGridTableView.Create(tv_posts) do

begin

Editing := False;

Table_Name := 'Должности';

GUID_Select := Posts;

Single := False;

StepOnTopDataRecordMode := True;

Stat_Column := tv_posts_name;

NameColumnForPopupEdit := tv_posts_name;

with Select_Columns do

begin

Add(tv_posts_name);

Add(tv_posts_id);

end;

Key_Columns.Add(tv_posts_id);

PopupActions.Add(ActionUpdate);

end;

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

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

// Вид договора

with TSqlData_cxGridTableView.Create(tv_kind_order) do

begin

Editing := False;

Table_Name := 'Виды договоров';

GUID_Select := kind_order;

Single := False;

StepOnTopDataRecordMode := True;

Stat_Column := tv_kind_order_name;

NameColumnForPopupEdit := tv_kind_order_name;

with Select_Columns do

begin

Add(tv_kind_order_name);

Add(tv_kind_order_id);

end;

Key_Columns.Add(tv_kind_order_id);

PopupActions.Add(ActionUpdate);

end;

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

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

// Вид направления

with TSqlData_cxGridTableView.Create(tv_kind_direction) do

begin

Editing := False;

Table_Name := 'Виды направлений';

GUID_Select := Kind_Direction;

Single := False;

StepOnTopDataRecordMode := True;

Stat_Column := tv_kind_direction_name;

NameColumnForPopupEdit := tv_kind_direction_name;

with Select_Columns do

begin

Add(tv_kind_direction_name);

Add(tv_kind_direction_id);

end;

Key_Columns.Add(tv_kind_direction_id);

PopupActions.Add(ActionUpdate);

end;

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

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

// Ссылка на договор

with TSqlData_cxGridTableView.Create(tv_contracts) do

begin

Editing := False;

Table_Name := 'Ссылки на договоры';

GUID_Select := Contracts;

Single := False;

StepOnTopDataRecordMode := True;

Params := CreateVarAr(['', '']);

Stat_Column := tv_contracts_contract;

NameColumnForPopupEdit := tv_contracts_contract;

with Select_Columns do

begin

Add(tv_contracts_contract);

Add(tv_contracts_kind_order);

Add(tv_contracts_d_start);

Add(tv_contracts_d_end);

Add(tv_contracts_id_contract);

Add(tv_contracts_id_paragraph);

Add(tv_contracts_id_order);

Add(tv_contracts_idk_order);

Add(tv_contracts_status_order);

end;

Key_Columns.Add(tv_contracts_id_contract);

PopupActions.Add(ActionUpdate);

end;

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

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

// Источник финансирования

if Get_SqlData_cxGrid(tv_Source_Financing) = nil then

with TSqlData_cxGridTableView.Create(tv_Source_Financing) do

begin

Table_Name := 'Источники финансирования';

GUID_Select := S_F;

StepOnTopDataRecordMode := True;

ParametersCount := 1;

Editing := False;

Select_Columns.Add(tv_Source_Financing_Abbreviation);

Select_Columns.Add(tv_Source_Financing_Name);

Select_Columns.Add(tv_Source_Financing_Abbr_Div);

Select_Columns.Add(tv_Source_Financing_Division);

Select_Columns.Add(tv_Source_Financing_Kind_Source);

Select_Columns.Add(tv_Source_Financing_Activity);

Select_Columns.Add(tv_Source_Financing_Date_Close);

Select_Columns.Add(tv_Source_Financing_ID);

Select_Columns.Add(tv_Source_Financing_ID_D);

Select_Columns.Add(tv_Source_Financing_ID_Kind_Source);

Select_Columns.Add(tv_Source_Financing_ID_Activity);

Key_Columns.Add(tv_Source_Financing_ID);

PopupActions.Add(ActionUpdate);

Stat_Column := tv_Source_Financing_Abbreviation;

NameColumnForPopupEdit := tv_Source_Financing_Name;

end;

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

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

// добавление приказов человека

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

if Get_SqlData_cxGrid(tv_orders) = nil then

with TSqlData_cxGridTableView.Create(tv_orders) do

begin

Editing := False;

Single := False;

Table_Name := 'Приказы человека';

GUID_Select := Orders;

StepOnTopDataRecordMode := True;

Params := CreateVarAr(['']);

Stat_Column := tv_orders_kind_paragraph;

NameColumnForPopupEdit := tv_orders_kind_paragraph;

with Select_Columns do

begin

Add(tv_orders_kind_paragraph);

Add(tv_orders_status_text);

Add(tv_orders_ed_group);

Add(tv_orders_spec);

Add(tv_orders_d_start);

Add(tv_orders_kind_training);

Add(tv_orders_institute);

Add(tv_orders_status_order_contract);

Add(tv_orders_kind_paragraph_contract);

Add(tv_orders_d_creation);

Add(tv_orders_d_modification);

Add(tv_orders_id_order);

Add(tv_orders_id_paragraph);

Add(tv_orders_idk_order);

Add(tv_orders_status_order);

end;

Key_Columns.Add(tv_orders_id_order);

OptionsOrder.Column_Status_Text := tv_orders_status_text;

OptionsOrder.Column_ID_order := tv_orders_id_order;

OptionsOrder.Column_ID_paragraph := tv_orders_id_paragraph;

OptionsOrder.Column_IDk_order := tv_orders_idk_order;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_Insert_tv_r_c_group.OnExecute;

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

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

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

// начисления

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

if Get_SqlData_cxGrid(TTree_Nach) = nil then

with TSqlData_cxGridTableView.Create(TTree_Nach) do

begin

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

GUID_Select := Get_Nach_By_ID_Dog;

GUID_Update := d_P_ACCOUNTS_CONTRACT;

StepOnTopDataRecordMode := True;

ParametersCount := 1;

RequiredParemeters.Add(1);

Stat_Column := Tree_Nach_Document;

with Select_Columns do

begin

Add(Tree_Nach_D_Start);

Add(Tree_Nach_D_End);

Add(Tree_Nach_Kind_Order);

Add(Tree_Nach_Document);

Add(Tree_Nach_Sum);

Add(Tree_Nach_User);

Add(Tree_Nach_Status);

Add(Tree_Nach_ID_Stage);

Add(Tree_Nach_ID_Account_Contract);

Add(Tree_Nach_ID_Basis_Salary);

Add(Tree_Nach_ID_SF);

Add(Tree_Nach_IDK_Order);

Add(Tree_Nach_ID_Paragraph);

Add(Tree_Nach_ID_Order);

Add(Tree_Nach_ID_ERP);

end;

Key_Columns.Add(Tree_Nach_ID_Basis_Salary, 3);

Key_Columns.Add(Tree_Nach_ID_Paragraph, 0);

//Key_Columns.Add(Tree_Nach_D_Start);

OnAfter_Delete := After_Delete;

OptionsOrder.Column_Status_Text := Tree_Nach_Document;

OptionsOrder.Column_ID_order := Tree_Nach_ID_Order;

OptionsOrder.Column_ID_paragraph := Tree_Nach_ID_Paragraph;

OptionsOrder.Column_IDk_order := Tree_Nach_IDK_Order;

OptionsOrder.Column_ID_erp_user := Tree_Nach_ID_ERP;

ActionInsert.OnExecute := Action_Create_Nach.OnExecute;

PopupActions.Add(ActionInsert);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

Cont_New_Nach := TContainerWrappers.Create;

Cont_New_Nach.AddButtonOrderEdit(ButtonEdit_New_Nach, True, False, ''

, ['436, 444']

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

Cont_New_Nach.AddCustomEdit(DateEdit_New_Nach, True, False, '');

Cont_New_Nach.ActionEnter := Action_Go_New_Nach;

end;

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

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

// добавление планов ПК

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

if Get_SqlData_cxGrid(tv_plan) = nil then

with TSqlData_cxGridTableView.Create(tv_plan) do

begin

Editing := False;

Single := False;

Table_Name := 'Планы ПК';

GUID_Select := Plan_Paragraphs;

StepOnTopDataRecordMode := True;

Params := CreateVarAr(['-1']);

Stat_Column := tv_plan_note;

NameColumnForPopupEdit := tv_plan_note;

with Select_Columns do

begin

Add(tv_plan_note);

Add(tv_plan_summary);

Add(tv_plan_status_text);

Add(tv_plan_hisdate);

Add(tv_plan_d_creation);

Add(tv_plan_d_modification);

Add(tv_plan_id_paragraph);

Add(tv_plan_id_order);

Add(tv_plan_idk_order);

Add(tv_plan_status_order);

Add(tv_plan_id_erp_user);

end;

Key_Columns.Add(tv_plan_id_paragraph);

OptionsOrder.Column_Status_Text := tv_plan_status_text;

OptionsOrder.Column_ID_order := tv_plan_id_order;

OptionsOrder.Column_ID_paragraph := tv_plan_id_paragraph;

OptionsOrder.Column_IDk_order := tv_plan_idk_order;

OptionsOrder.Column_Status_Order := tv_plan_status_order;

OptionsOrder.Column_ID_erp_user := tv_plan_id_erp_user;

OptionsOrder.Column_hisdate := tv_plan_hisdate;

OptionsOrder.Column_summary := tv_plan_summary;

OptionsOrder.Column_note := tv_plan_note;

OptionsOrder.Column_d_creation := tv_plan_d_creation;

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

end;

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

with TSqlData_cxGridTableView.Create(tv_Spec) do

begin

Editing := False;

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

GUID_Select := Get_List_Spec_By_Params;

StepOnTopDataRecordMode := True;

ParametersCount := 2;

Parameters[1] := IDK_Level_Spec;

with Select_Columns do

begin

Add(tv_Spec_Name, 2);

Add(tv_Spec_Q, 1);

Add(tv_Spec_ID, 0);

Add(tv_Spec_IDK_Level_Spec, 6);

Add(tv_Spec_id_discipline);

Add(tv_Spec_idk_discipline);

end;

Key_Columns.Add(tv_Spec_ID, 0);

Stat_Column := tv_Spec_Name;

NameColumnsForPopupEdit.Add(tv_Spec_Name);

cW_New_Spec := TContainerWrappers.Create;

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

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

end;

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

with TSqlData_cxGridTableView.Create(tv_Kind_Training) do

begin

Editing := False;

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

GUID_Select := Kind_Training;

StepOnTopDataRecordMode := True;

Single := False;

with Select_Columns do

begin

Add(tv_Kind_Training_IDK_TRAINING);

Add(tv_Kind_Training_Name);

end;

Key_Columns.Add(tv_Kind_Training_IDK_TRAINING);

Stat_Column := tv_Kind_Training_Name;

NameColumnForPopupEdit := tv_Kind_Training_Name;

end;

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

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

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

if Get_SqlData_cxGrid(tv_Org_Division) = nil then

with TSqlData_cxGridTableView.Create(tv_Org_Division) do

begin

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

Editing := False;

GUID_Select := Get_List_Divisions;

StepOnTopDataRecordMode := True;

Params := CreateVarAr([IDK_Level_Spec]);

Select_Columns.Add(tv_Org_Division_Abbr);

Select_Columns.Add(tv_Org_Division_Name);

Select_Columns.Add(tv_Org_Division_ID);

Key_Columns.Add(tv_Org_Division_ID);

Stat_Column := tv_Org_Division_Abbr;

NameColumnsForPopupEdit.Add(tv_Org_Division_Abbr);

NameColumnsForPopupEdit.Add(tv_Org_Division_Name);

cW_New_Spec_Div := TContainerWrappers.Create;

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

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Spec, True, False,

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

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_KT, True, False,

cxGrid_Kind_Training, tv_Kind_Training, tv_Kind_Training_IDK_TRAINING,

[tv_Kind_Training_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_SF, True, False,

cxGrid_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,

[tv_Source_Financing_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Institute, True, False,

cxGrid_Org_Division, tv_Org_Division, tv_Org_Division_ID,

[tv_Org_Division_Abbr, tv_Org_Division_Name], '');

cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Div, True, False,

cxGrid_Org_Division, tv_Org_Division, tv_Org_Division_ID,

[tv_Org_Division_Abbr, tv_Org_Division_Name], '');

cW_New_Spec_Div.MakeSynchronize_Similar([PopupEditNew_Spec_Div_Institute,

PopupEditNew_Spec_Div_Institute], False);

cW_New_Spec_Div.OnChangeWrapper := DoChanged_cW_Spec_Div;

end;

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

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

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

if Get_SqlData_cxGrid(TTree_Stat) = nil then

with TSqlData_cxGridTableView.Create(TTree_Stat) do

begin

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

Editing := False;

GUID_Select := Get_Stat_Data_By_Period;

StepOnTopDataRecordMode := True;

ParametersCount := 2;

Select_Columns.Add(Tree_Stat_Inst);

Select_Columns.Add(Tree_Stat_Spec_Name);

Select_Columns.Add(Tree_Stat_FIO);

Select_Columns.Add(Tree_Stat_EG);

Select_Columns.Add(Tree_Stat_D_Start);

Select_Columns.Add(Tree_Stat_D_End);

Select_Columns.Add(Tree_Stat_Order_Start);

Select_Columns.Add(Tree_Stat_Order_End);

Select_Columns.Add(Tree_Stat_Contract);

Select_Columns.Add(Tree_Stat_Org);

Select_Columns.Add(Tree_Stat_Money);

Select_Columns.Add(Tree_Stat_Money_NDS);

Select_Columns.Add(Tree_Stat_Cert);

Select_Columns.Add(Tree_Stat_Hours_Fact);

Select_Columns.Add(Tree_Stat_Hours_Plan);

Select_Columns.Add(Tree_Stat_Last_Date);

Select_Columns.Add(Tree_Stat_Contract_Main);

Select_Columns.Add(Tree_Stat_Org_Main);

Select_Columns.Add(Tree_Stat_ID_E);

Select_Columns.Add(Tree_Stat_ID_C);

Select_Columns.Add(Tree_Stat_ID_Student);

Select_Columns.Add(Tree_Stat_ID_EG);

Key_Columns.Add(Tree_Stat_ID_E);

Key_Columns.Add(Tree_Stat_ID_Student);

Stat_Column := Tree_Stat_FIO;

ActionUpdate.OnExecute := Action_Read_Stat.OnExecute;

Cont_Stat := TContainerWrappers.Create;

Cont_Stat.AddCustomEdit(DateEdit_Stat_Begin, False, False);

Cont_Stat.AddCustomEdit(DateEdit_Stat_End, False, False);

end;

if Get_SqlData_cxGrid(TTree_MC) = nil then

with TSqlData_cxGridTableView.Create(TTree_MC) do

begin

Single := False;

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

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

GUID_Select := Get_List_MC;

GUID_Update := d_P_CONTRACTS;

GUID_Delete := GUID_Delete_Main_Contract;

OnBefore_Delete_Exchange := Delete_Main_Contract;

StepOnTopDataRecordMode := True;

ParametersCount := 3;

Stat_Column := Tree_MC_Org;

with Select_Columns do

begin

Add(Tree_MC_Org, 2);

Add(Tree_MC_Kind);

Add(Tree_MC_Hisdate);

Add(Tree_MC_Start, 3);

Add(Tree_MC_End, 4);

Add(Tree_MC_Count);

Add(Tree_MC_Order);

Add(Tree_MC_Number);

Add(Tree_MC_Old_Number);

Add(Tree_MC_User);

Add(Tree_MC_ID_Contract, 0);

Add(Tree_MC_ID_CA, 2);

Add(Tree_MC_ID_MT);

Add(Tree_MC_ID_MO);

Add(Tree_MC_ID_Paragraph);

Add(Tree_MC_ID_Order);

Add(Tree_MC_IDK_Order);

Add(Tree_MC_ID_ERP);

Add(Tree_MC_ID_Status);

end;

Key_Columns.Add(Tree_MC_ID_Contract, 0);

OptionsOrder.Column_Status_Text := Tree_MC_Order;

OptionsOrder.Column_identifier := Tree_MC_Number;

OptionsOrder.Column_ID_order := Tree_MC_ID_Order;

OptionsOrder.Column_ID_paragraph := Tree_MC_ID_Paragraph;

OptionsOrder.Column_IDk_order := Tree_MC_IDK_Order;

OptionsOrder.Column_ID_erp_user := Tree_MC_ID_ERP;

OptionsOrder.Column_User_Name := Tree_MC_User;

ActionInsert.Visible := True;

ActionInsert.OnExecute := Action_New_MC.OnExecute;

PopupActions.Add(Action_New_MC);

PopupActions.Add(ActionDelete);

PopupActions.Add(nil);

PopupActions.Add(OptionsOrder.ActionPreview);

PopupActions.Add(OptionsOrder.ActionNavigate);

PopupActions.Add(nil);

PopupActions.Add(ActionUpdate);

{cxPopupEdit_New_Listener_Contract_Organization.Properties.PopupControl :=

Current_Form_Find_Org;}

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

with PopupColumnsList.Add(Tree_MC_Org) do

begin

SelfKeyColumn := Tree_MC_ID_CA;

PopupKeyColumn := Current_Form_Find_Org.Tree_Org_ID_CA;

PopupNameColumn := Current_Form_Find_Org.Tree_Org_Name;

end;

PopupEdit_Filter_Org.Properties.PopupControl := Current_Form_Find_Org;

cw_Filter_Contracts_Main := TContainerWrappers.Create;

cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_Start, False, False);

cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_End, False, False);

cw_Filter_Contracts_Main.AddPopupEdit(PopupEdit_Filter_Org

, False, False, Current_Form_Find_Org.cxGrid_Org

, Current_Form_Find_Org.TTree_Org, Current_Form_Find_Org.Tree_Org_ID_CA

, [Current_Form_Find_Org.Tree_Org_Name], '');

if PageControl_Main.ActivePageIndex = 3

then Filter_MC_Changed(DateEdit_Filter_Start);

end;

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

DateEdit_New_Contract_Main_Start.Date := Date;

DateEdit_New_Contract_Main_End.Date := Date;

if cw_New_Contract_Main = nil

then

begin

PopupEdit_New_Contract_Main.Properties.PopupControl := Current_Form_Find_Org;

cw_New_Contract_Main := TContainerWrappers.Create;

cw_New_Contract_Main.AddPopupEdit(PopupEdit_New_Contract_Main

, True, False

, Current_Form_Find_Org.cxGrid_Org

, Current_Form_Find_Org.TTree_Org

, Current_Form_Find_Org.Tree_Org_ID_CA

, [Current_Form_Find_Org.Tree_Org_Name], '');

cw_New_Contract_Main.AddButtonOrderEdit(ButtonEdit_New_Contract_Main

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

, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]

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

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

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

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

cw_New_Contract_Main.ActionEnter := Action_Insert_Contract_Main;

end;

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

cxTabSheet_Editing.TabVisible := False;

cxTabSheet_Add.TabVisible := False;

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

Save_Restore_Params(Curr_Reg_Path, True);

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

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

cW_Plan_Filters := TContainerWrappers.Create;

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

cW_Plan_Filters.AddPopupEdit(cxPopupEdit_Plan_Filters_Plan, False, False,

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

cW_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Summary, False, True,

'');

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

cW_Plan_Filters.ActionApply := Plan_Apply;

cW_Plan_Filters.ActionRefuse := Plan_Refuse;

cW_Plan_Filters.OnChangeWrapper := DoChanged_cW_Plan_Filters;

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

cW_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year].Value := IntToStr

(YearOf(Date));

if cxPopupEdit_Plan_Filters_Plan.Tag <> 0

then begin

cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value :=

VarToStr(cxPopupEdit_Plan_Filters_Plan.Tag);

cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay :=

VarToStr(cxPopupEdit_Plan_Filters_Plan.Text);

end;

end;

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

procedure TForm_Event.ButtonEdit_Import_Spec_DivClick(Sender: TObject);

var

mf: TSForm;

i: Integer;

begin

try // 1

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

Add_Path + TabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div, tdb_Apply);

cW_New_Spec_Div.ClearWrappers;

cW_New_Spec_Div.wrappers[ DateEditNew_Spec_Div_D_Start].Value :=

cW_Import.wrappers[DateEdit_Import_Start].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].Value :=

cW_Import.wrappers[PopupEdit_Import_Spec].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].ValueDisplay :=

cW_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay;

// Институт

if id_d_import <> ''

then

begin

Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;

i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]

, CreateVarAr([id_d_import]));

if i >= 0

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value :=

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

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay :=

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

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value;

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay;

end;

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

then

begin

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

Get_SqlData_cxGrid(tv_Source_Financing).Read_Data;

if tv_Source_Financing.DataController.RecordCount = 1

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].Value :=

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

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].ValueDisplay :=

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

end;

end;

end;

// Кафедра

if id_d_kaf <> ''

then

begin

Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;

i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]

, CreateVarAr([id_d_kaf]));

if i >= 0

then

begin

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=

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

cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=

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

end;

end;

mf.Position := poScreenCenter;

if mf.ShowModal = mrok then

begin // 2

if Get_SqlData_cxGrid(tv_spec_div_popup).Insert_New(

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

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

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

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

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

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

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

then

begin // 3

i := tv_spec_div_popup.DataController.Values

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

Get_SqlData_cxGrid(tv_spec_div_popup).Read_Data;

i := FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]

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

if i >= 0

then

begin

cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value := VarToStr

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

cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay := VarToStr

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

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

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

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

end;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

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

then

begin

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

Get_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;

end;

end; // 1

end;

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

procedure TForm_Event.ButtonEdit_Import_UMKClick(Sender: TObject);

var

mf: TSForm;

i: Integer;

begin

try // 1

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

Add_Path + TabSheet_New_UMK.Caption, Panel_New_UMK, tdb_Apply);

mf.Position := poScreenCenter;

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

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

if mf.ShowModal = mrok then

begin // 2

if MSystemServices.ExchangeData(Create_UMK_By_ID_SD

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

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

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

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

then

begin // 3

FSqlData_TableView.Read_Data;

i := FindGridRecordIndex(tv_com_spec, [tv_com_spec_id_spec_div],

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

if i >= 0 then

begin

cW_Import.wrappers[PopupEdit_Import_UMK].Value := VarToStr

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

cW_Import.wrappers[PopupEdit_Import_UMK].ValueDisplay := VarToStr

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

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

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

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

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

end;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

end; // 1

end;

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

procedure TForm_Event.ButtonEdit_New_CertPropertiesEditValueChanged(

Sender: TObject);

var i: integer; data: olevariant;

begin

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

and (Cont_Make_Cert <> nil)

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

then begin

data := MSystemServices.SelectData(Get_Reg_Number_By_ID_Paragraph

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

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

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

if VarIsArray(data)

then

begin

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

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

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

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

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

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

end;

end;

end;

procedure TForm_Event.cxButtonEdit_PC_Create_DirectionClick(Sender: TObject);

begin

Action_Insert_New_DirectionExecute(self);

end;

procedure TForm_Event.

cxDateEdit_New_Listener_Contract_D_EndPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value;

end;

procedure TForm_Event.

cxDateEdit_New_Listener_Contract_D_StartPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value;

end;

procedure TForm_Event.cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;

end;

procedure TForm_Event.cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged

(Sender: TObject);

begin

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;

end;

procedure TForm_Event.cxPageControl_StudentPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

begin

if NewPage = cxTabSheet_Orders then

Fill_tv_ordersExecute(self);

if NewPage = cxTabSheet_Anketa then

Fill_AnketaExecute(self);

if NewPage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

if NewPage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;

end;

procedure TForm_Event.cxPopupEdit_KBA_EndPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_kba_endExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_DirectionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_directionExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Contract_Source_FinansingPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_source_finansingExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Ed_GroupPropertiesEditValueChanged(Sender: TObject);

begin

if VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group]

.Value) <> '' then

begin // 1

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr

(tv_r_c_groups.DataController.Values

[tv_r_c_groups.DataController.FocusedRecordIndex,

tv_r_c_groups_d_start.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr

(tv_r_c_groups.DataController.Values

[tv_r_c_groups.DataController.FocusedRecordIndex,

tv_r_c_groups_d_end.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;

end // 1

else

begin // 2

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

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

end; // 2

end;

procedure TForm_Event.cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_r_c_groupsExecute(self);

end;

procedure TForm_Event.

cxPopupEdit_New_Listener_Kind_Basis_ActionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kba_startExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_orderExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged

(Sender: TObject);

begin

if not cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order].IsClear then

begin // 1

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=

VarToStr(tv_contracts.DataController.Values

[tv_contracts.DataController.FocusedRecordIndex,

tv_contracts_d_start.Index]);

cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=

VarToStr(tv_contracts.DataController.Values

[tv_contracts.DataController.FocusedRecordIndex,

tv_contracts_d_end.Index]);

end; // 1

end;

procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_contractsExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_ed_groupExecute(self);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_com_specExecute(Sender);

end;

procedure TForm_Event.cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_spec_div_popupExecute(self);

end;

procedure TForm_Event.cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_kind_directionExecute(self);

end;

procedure TForm_Event.cxPopupEdit_PC_PostPropertiesInitPopup(Sender: TObject);

begin

Fill_tv_postsExecute(self);

end;

procedure TForm_Event.cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup

(Sender: TObject);

begin

Fill_tv_planExecute(self);

end;

procedure TForm_Event.DoChanged_cW_New_R_C_Plan(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_R_C_Plan, cW_New_R_C_Plan.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_New_R_C_Group(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_R_C_Group,

cW_New_R_C_Group.IsNotEmptyMandatory);

end;

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

procedure TForm_Event.Action_After_Show_New_AnketaExecute(Sender: TObject);

begin

with Form_Anketa_For_New do

begin

if curr_sex = '1'

then SEX.ItemIndex := 0

else SEX.ItemIndex := 1;

SURNAME.Text := curr_surname;

ENAME.Text := curr_name;

PATRONYMIC.Text := curr_patronymic;

cxTextEditPhone_.Text := curr_phone;

cxTextEditEmail_.Text := curr_email;

DATE_OF_BIRTH.Date := StrToDate(curr_birthday);

CIT_D_START.Date := StrToDate(curr_birthday);

AnyPersEditValueChanged(DATE_OF_BIRTH);

if ID_E <> ''

then Form_Anketa_For_New.ModalResult := mryes;

end;

end;

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

procedure TForm_Event.Action_Create_NachExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

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

, TabSheet_New_Nach.Caption

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

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

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

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

procedure TForm_Event.Action_Create_Nach_AllExecute(Sender: TObject);

var new_form: TSForm;

begin

try // 1

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

, TabSheet_Create_Nach_All.Caption

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

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

new_form.Position := poScreenCenter;

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

new_form.ShowModal;

finally // 1

if assigned(new_form)

then FreeAndNil(new_form);

end; // 1

end;

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

procedure TForm_Event.Action_Go_Nach_AllExecute(Sender: TObject);

var L: TIntegerList; i: integer;

begin

with Get_SqlData_cxGrid(tv_listeners), Cont_New_Nach_All do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

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

MSystemServices.ExchangeData(Create_New_Nach

, CreateVarAr([VarToStr(GridTableView.DataController.

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

, VarToStr(Wrappers[DateEdit_Create_Nach_All].Value)

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

MSystemServices.EndSequenceActions;

Read_Data;

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

end;

end;

procedure TForm_Event.Action_Add_ContractExecute(Sender: TObject);

const

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

var

mf: TSForm;

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

k_List_Name, ko_ID_Metaterm, kind_order, def_Ident, def_IdenDate,

ID_Period_Nubbering, id_NewSeries, NewSeries: WideString;

ks: TStringList;

ok: Boolean;

DC: TcxDataController;

FRI: Integer;

begin

ok := False;

try // 1

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

Panel_New_Listener, tdb_Apply);

StudentElementsEnabled(False);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]

.Value := VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_source.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]

.ValueDisplay := VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_source.Index]);

DC := tv_listeners.DataController;

FRI := tv_listeners.DataController.FocusedRecordIndex;

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].Value := VarToStr

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

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].ValueDisplay :=

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

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value :=

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

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].ValueDisplay :=

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

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr

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

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr

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

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

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

tv_listeners_idkba_transfer.Index]);

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

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

tv_listeners_kind_basis_action.Index]);

cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start].Value :=

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

cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start]

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

tv_listeners_status_text_order_start.Index]);

cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]

.Value := VarToStr(tv_r_c_plan.DataController.GetValue

(tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_money.Index));

cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]

.ValueDisplay := tv_r_c_plan.DataController.GetDisplayText

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

cW_New_Listener.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

if (VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]

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

(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]

.Value) = '') then

begin // 3

kind_order := VarToStr(cW_New_Listener.wrappers

[cxPopupEdit_New_Listener_Kind_Order].Value);

ks := TStringList.Create;

ks.Add(kind_order);

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

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

False);

if id_o = EmptyWideStr then

begin // 4

ks.Free;

exit;

end; // 4

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

def_Ass, NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm,

id_o, False);

ks.Free;

if id_p = EmptyWideStr then

exit;

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

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

vnListAgent.LA_SetIdentifier(id_o, def_Ident, ID_Period_Nubbering,

id_NewSeries, NewSeries, def_IdenDate, True, False,

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

ok := MSystemServices.ExchangeData(Add_Contract,

VarArrayOf([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]

.Value, cW_New_Listener.wrappers[

cxPopupEdit_New_Listener_Contract_Organization].Value,

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,

cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value,

id_p, cW_New_Listener.wrappers[

cxPopupEdit_New_Listener_Contract_Source_Finansing].Value,

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_id_spec_div.Index]),

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value,

cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]

.Value, cW_New_Listener.wrappers

[cxButtonEdit_New_Listener_Order_Start].Value,

VarToStr(cxCurrencyEdit_New_Listener_Contract_Money.EditValue),

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

cW_New_Listener.wrappers[cxTextEdit_New_Listener_Basis].Value,

cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO].Value,

cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO_R].Value,

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

end; // 3

if ok then

begin // 6

Get_SqlData_cxGrid(tv_listeners).Read_Data;

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

end; // 6

end; // 2

finally // 1

if assigned(mf) then

begin // 7

FreeAndNil(mf);

StudentElementsEnabled(True);

end; // 7

end; // 1

end;

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

procedure TForm_Event.Action_Delete_CertificateExecute(Sender: TObject);

Var L: tintegerlist; i: integer;

begin

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

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

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

then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

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

if MSystemServices.ExchangeData(Delete_Certificate

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

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

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

then

begin

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

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

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

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

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

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

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

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

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

end;

MSystemServices.EndSequenceActions;

end;

end;

procedure TForm_Event.Action_Delete_ContractExecute(Sender: TObject);

var

ID_C: string;

DC: TcxDataController;

ok: Boolean;

List: TIntegerList;

i: Integer;

begin

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

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

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

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

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

begin // 1

MSystemServices.StartSequenceActions(False, True);

DC := tv_listeners.DataController;

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

begin // 2

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

tv_listeners_id_contract.Index]);

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

if ok then

begin // 3

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

DC.Values[List.Items[i],

tv_listeners_id_paragraph_contract.Index] := null;

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

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

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

DC.Values[List.Items[i],

tv_listeners_status_text_contract.Index] := null;

end; // 3

end; // 2

MSystemServices.EndSequenceActions;

if ok then

cW_Contract_Params.ClearWrappers;

end; // 1

end;

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

procedure TForm_Event.Action_Delete_NachExecute(Sender: TObject);

var i: integer; L: TIntegerlist;

begin

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

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

then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

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

if MSystemServices.ExchangeData(Delete_Nach_By_ID_Dog

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

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

then begin

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

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

end;

MSystemServices.EndSequenceActions;

if cxPageControl_Student.ActivePage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data

else Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;

end;

end;

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

procedure TForm_Event.Action_Delete_Order_EndExecute(Sender: TObject);

var

L: TIntegerList;

i: Integer;

begin

with Get_SqlData_cxGrid(tv_listeners) do

begin

GetSelectedRecordIndexList(L);

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

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

then with tv_listeners.DataController do

begin

MSystemServices.StartSequenceActions(False, True);

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

if MSystemServices.DeleteData(d_P_ORDERS_STUDENTS

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

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

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

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

then begin

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

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

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

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

Get_SqlData_cxGrid(tv_listeners).IsFirstRead := True;

end;

MSystemServices.EndSequenceActions;

if cxPageControl_Student.ActivePage = cxTabSheet_Orders

then Fill_tv_ordersExecute(self);

end;

end;

end;

procedure TForm_Event.Action_End_EducationExecute(Sender: TObject);

const

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

var

mf: TSForm;

id: Integer;

List: TIntegerList;

i: Integer;

begin

try // 1

id := -1;

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

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

Panel_End_Education, tdb_Apply);

cW_End_Education.wrappers[cxDateEdit_End_Education].Value := VarToStr

(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_d_end_plan.Index]);

cW_End_Education.OnChangeWrapper(nil);

if mf.ShowModal = mrok then

begin // 2

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

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

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

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

begin // 3

MSystemServices.StartSequenceActions(False, True);

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

begin // 4

id := MSystemServices.InsertData(d_P_ORDERS_STUDENTS,

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

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

tv_listeners_id_student.Index],

cW_End_Education.wrappers[cxButtonEdit_End_Education].Value,

cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value,

cW_End_Education.wrappers[cxDateEdit_End_Education].Value]),

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

if id >= 0 then

begin // 5

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

tv_listeners_d_end.Index] := VarToStr

(cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value);

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

tv_listeners_status_text_order_end.Index] := VarToStr

(cW_End_Education.wrappers[cxButtonEdit_End_Education]

.ValueDisplay);

end; // 5

end; // 4

MSystemServices.EndSequenceActions;

if id >= 0 then

TButtonOrderEditWrapper(cW_End_Education.wrappers

[cxButtonEdit_End_Education]).IsEmpty := False;

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

end; // 1

end;

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

procedure TForm_Event.Action_Go_New_CertExecute(Sender: TObject);

var i, j: integer;

begin

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

begin

j := 0;

for i := 0 to SelectedRowCount - 1 do

if MSystemServices.ExchangeData(Make_New_Cert_By_Params

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

,VarToStr(Wrappers[ButtonEdit_New_Cert].Value)

,VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value)

,VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)

,VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value)

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

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

then

begin

j := j + 1;

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

VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].ValueDisplay);

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

VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value);

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

VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value);

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

VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value);

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

VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value);}

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

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

end;

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

Read_Data;

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

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

end;

end;

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

procedure TForm_Event.Action_Go_New_MoneyExecute(Sender: TObject);

var i, j: integer; L: TIntegerlist;

begin

cw_New_Money.ChangesAcceptWrappers;

with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

CurrencyEdit_New_Money.Properties.EditFormat := '0.00';

CurrencyEdit_New_Money.Properties.UseThousandSeparator := False;

j := 0;

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

if MSystemServices.ExchangeData(Update_PC

, VarArrayOf(['4'

, VarToStr(tv_listeners.DataController.Values

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

,''

,''

,''

,''

,''

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

VarToStr(CurrencyEdit_New_Money.EditValue)

,''

,''

,''

,''

,''

,''

,''

,''])

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

then j := j + 1;

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

CurrencyEdit_New_Money.Properties.UseThousandSeparator := True;

MSystemServices.EndSequenceActions;

if j > 0

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

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

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

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

end;

end;

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

procedure TForm_Event.Action_Go_New_NachExecute(Sender: TObject);

begin

Cont_New_Nach.ChangesAcceptWrappers;

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

if MSystemServices.ExchangeData(Create_New_Nach

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

, VarToStr(Wrappers[DateEdit_New_Nach].Value)

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

then

begin

Get_SqlData_cxGrid(TTree_Nach).Read_Data;

GetParentForm(Panel_New_Nach).ModalResult := mrok;

end;

end;

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

procedure TForm_Event.Action_Go_Set_Main_ContractExecute(Sender: TObject);

var

L: TIntegerList;

i: Integer;

begin

with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do

begin

GetSelectedRecordIndexList(L);

MSystemServices.StartSequenceActions(False, True);

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

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

CreateVarAr([VarToStr(cW_Set_Main_Contract.wrappers

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

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

begin

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

(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract].Value);

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

(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract]

.ValueDisplay);

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

(TTree_Main_Contracts.DataController.Values

[TTree_Main_Contracts.DataController.FocusedRecordIndex,

Tree_Main_Contracts_Org_Name.Index]);

end;

MSystemServices.EndSequenceActions;

end;

end;

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

procedure TForm_Event.Filter_MC_Changed(

Sender: TObject);

begin

if (Get_SqlData_cxGrid(TTree_MC) <> nil)

//and (PageControl_Main.ActivePageIndex = 3)

then

with cw_Filter_Contracts_Main, Get_SqlData_cxGrid(TTree_MC) do

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

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

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

then

begin

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

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

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

Read_Data;

end

else Read_Data_First;

end;

procedure TForm_Event.DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged

(Sender: TObject);

begin

if cW_Set_Main_Contract <> nil then

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

(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value)

then

begin

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

(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value);

Get_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead := True;

end;

end;

procedure TForm_Event.Delete_tv_listenersExecute(Sender: TObject);

var

c: Boolean;

ok: Boolean;

List: TIntegerList;

i: Integer;

begin

Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);

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

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

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

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

begin // 1

MSystemServices.StartSequenceActions(False, True);

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

begin // 2

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

tv_listeners_id_contract.Index]) <> '';

ok := MSystemServices.ExchangeData(Delete_Student,

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

tv_listeners_id_contract.Index]),

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

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

{if ok and c then

MSystemServices.ExchangeData(Delete_Contract,

VarArrayOf

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

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

end; // 2

MSystemServices.EndSequenceActions;

if ok then

Get_SqlData_cxGrid(tv_listeners).Read_Data;

end; // 1

end;

procedure TForm_Event.DoChanged_cW_Contract_Params

(AWrapper: TCustomEditWrapper);

var

PEnabled, REnabled: Boolean;

begin

if AWrapper = cW_Contract_Params.wrappers[cxPopupEdit_PC_Org] then

begin // 1

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

ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);

end; // 1

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then

begin // 2

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

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

ContractParamsEnabled(cxGroupBox_Contract_Params, PEnabled);

ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);

end; // 2

cxButton_PC_Autorepresentative.Enabled := cxGroupBox_Contract_Params.Enabled;

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then

cxPopupEdit_PC_Kind_Order.Enabled := not AWrapper.IsClear;

if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction] then

cxPopupEdit_PC_Kind_Direction.Enabled := not AWrapper.IsClear;

end;

procedure TForm_Event.DoChanged_cW_New_Direction(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Direction,

cW_New_Direction.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_End_Education(AWrapper: TCustomEditWrapper);

begin

cxPopupEdit_KBA_End.Enabled := not cW_End_Education.wrappers

[cxButtonEdit_End_Education].IsClear;

MakeEnable_OkButton(Panel_End_Education,

cW_End_Education.IsNotEmptyMandatory);

end;

procedure TForm_Event.DoChanged_cW_Plan_Filters(AWrapper: TCustomEditWrapper);

begin

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

if AWrapper = cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan] then

begin // 1

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

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

<> '' then

begin // 2

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := VarToStr

(tv_plan.DataController.Values

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

cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value :=

VarToStr(tv_plan.DataController.Values

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

end // 2

else

begin // 3

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

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

end; // 3

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

Fill_tv_r_c_planExecute(self);

end; // 1

end;

procedure TForm_Event.DoChanged_cW_New_Listener(AWrapper: TCustomEditWrapper);

var

c, PE, R: Boolean;

begin

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

c := VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]

.Value) <> '';

cxLabel16.Enabled := c;

cxPopupEdit_New_Listener_Order.Enabled := c;

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

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

.Value) = '');

ContractParamsEnabled(cxGroupBox_New_Listener_Contract_Params, PE);

cW_New_Listener.MakeObligatory([cxDateEdit_New_Listener_Contract_D_Start,

cxDateEdit_New_Listener_Contract_D_End,

cxPopupEdit_New_Listener_Contract_Source_Finansing,

cxCurrencyEdit_New_Listener_Contract_Money], PE);

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

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

cxPopupEdit_New_Listener_Contract_Organization].Value) <> '');

ContractParamsEnabled(cxGroupBox_New_Listener_Representative, R);

MakeEnable_OkButton(Panel_New_Listener, cW_New_Listener.IsNotEmptyMandatory);

end;

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

procedure TForm_Event.ChoiceGridRecord(Sender: TSqlData_cxGridTableView;

AGridRecord: TcxGridDataRow);

begin

if (Sender.GridTableView = tv_r_c_plan) then

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount) then

begin // 1

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

cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value :=

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_d_start.Index]);

cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value :=

VarToStr(tv_r_c_plan.DataController.Values

[tv_r_c_plan.DataController.FocusedRecordIndex,

tv_r_c_plan_d_end.Index]);

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

if PageControl_Main.ActivePage = cxTabSheet_R_C_Groups then

Fill_tv_r_c_groupsExecute(self);

if PageControl_Main.ActivePage = cxTabSheet_Listeners then

Fill_tv_listenersExecute(self);

end; // 1

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

if (Sender.GridTableView = tv_r_c_groups) then

with Get_SqlData_cxGrid(TTree_Curator) do

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount) then

begin

Action_New_Curator.Enabled := REdit_Event;

if Parameters[1] <> VarToStr

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

tv_r_c_groups_id_ed_group.Index]) then

begin

Parameters[1] := VarToStr

(Sender.GridTableView.DataController.Values

[Sender.LastChoiceIndex, tv_r_c_groups_id_ed_group.Index]);

Read_Data;

end

else

Read_Data_First;

end

else

begin

Parameters[1] := '';

ClearData;

Action_New_Curator.Enabled := False;

end;

end;

procedure TForm_Event.OnChoiceGridRecord_tv_listeners

(Sender: TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);

begin

if (Sender <> nil) then

if (Sender.LastChoiceIndex >= 0) and

(Sender.LastChoiceIndex <

Sender.GridTableView.DataController.RecordCount)

then with Sender.GridTableView.DataController do

begin // 1

if cxPageControl_Student.ActivePage = cxTabSheet_Orders then

Fill_tv_ordersExecute(self);

if cxPageControl_Student.ActivePage = cxTabSheet_Anketa then

Fill_AnketaExecute(self);

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

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

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

then begin

Get_SqlData_cxGrid(TTree_Nach).Parameters[1] :=

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

Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;

if cxPageControl_Student.ActivePage = cxTabSheet_Stages

then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;

end;

Label_FIO.Caption := VarToStr

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

tv_listeners_fio.Index]);

end // 1

else

begin

Label_FIO.Caption := Choice_Listener;

case cxPageControl_Student.ActivePageIndex of

0:begin

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

Get_SqlData_cxGrid(tv_orders).ClearData;

end;

1:Current_Form_Anketa.ID_E := '';

2:Clear_Contract.Execute;

3:begin

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

Get_SqlData_cxGrid(TTree_Nach).ClearData;

end;

end;

end;

end;

procedure TForm_Event.PageControl_MainPageChanging(Sender: TObject;

NewPage: TcxTabSheet; var AllowChange: Boolean);

begin

if NewPage = cxTabSheet_R_C_Groups then

Fill_tv_r_c_groupsExecute(self);

if NewPage = cxTabSheet_Listeners then

Fill_tv_listenersExecute(self);

if NewPage = cxTabSheet_MC then

Filter_MC_Changed(self);

end;

procedure TForm_Event.PC_ApplyExecute(Sender: TObject);

var

i: Integer;

CE: TcxCustomEdit;

P, s: string;

ok: Boolean;

begin

ok := False;

MSystemServices.StartSequenceActions(False, True);

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

begin // 1

P := '-1';

if VarToStr((cW_Contract_Params.Items[i] as TCustomEditWrapper).EditValue)

<> VarToStr((cW_Contract_Params.Items[i] as TCustomEditWrapper).Value)

then

begin // 2

CE := (cW_Contract_Params.Items[i] as TCustomEditWrapper).Element;

if CE = cxDateEdit_PC_D_Start then

P := '0'

else if CE = cxDateEdit_PC_D_End then

P := '1'

else if (CE = cxPopupEdit_PC_Org) or (CE = cxTextEdit_PC_Basis) or

(CE = cxTextEdit_PC_FIO) or (CE = cxTextEdit_PC_FIO_R) or

(CE = cxPopupEdit_PC_Post) then

P := '2'

else if CE = cxPopupEdit_PC_SF then

P := '3'

else if CE = cxCurrencyEdit_PC_Money then

begin

P := '4';

cxCurrencyEdit_PC_Money.Properties.EditFormat := '0.00';

cxCurrencyEdit_PC_Money.Properties.UseThousandSeparator := False;

end

else if CE = cxPopupEdit_PC_Kind_Order then

P := '5'

else if CE = cxPopupEdit_PC_Kind_Direction then

P := '6'

else if CE = CheckBox_PC_NDS then

P := '7'

else if (CE = cxDateEdit_PC_D_Start_Otrjv) or (CE = cxDateEdit_PC_D_End_Otrjv)

then

begin

P := '8';

if VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].EditValue) = ''

then s := ''

else s := VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start_Otrjv].EditValue)

+ ' по ' + VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_End_Otrjv].EditValue);

end;

end; // 2

if P <> '-1' then

begin // 3

ok := MSystemServices.ExchangeData(Update_PC,

VarArrayOf([P,

VarToStr(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_id_contract.Index]),

VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_Start]

.EditValue),

VarToStr(tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_id_contractor.Index]),

VarToStr(cW_Contract_Params.wrappers[cxDateEdit_PC_D_End]

.EditValue),

VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org].EditValue),

VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_SF].EditValue),

VarToStr(cxCurrencyEdit_PC_Money.EditValue),

VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order]

.EditValue), VarToStr(cW_Contract_Params.wrappers

[cxPopupEdit_PC_Kind_Direction].EditValue),

VarToStr(cW_Contract_Params.wrappers[cxTextEdit_PC_Basis]

.EditValue),

VarToStr(cW_Contract_Params.wrappers[cxTextEdit_PC_FIO].EditValue),

VarToStr(cW_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].EditValue),

VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_Post].EditValue),

My_BoolToStr(CheckBox_PC_NDS.Checked, 1, '0'),

s])

);

if ok then

case StrToInt(P) of // 4

2:

begin

if VarToStr(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org]

.EditValue) = '' then

begin // 5

cW_Contract_Params.wrappers[cxTextEdit_PC_Basis].Clear;

cW_Contract_Params.wrappers[cxTextEdit_PC_FIO].Clear;

cW_Contract_Params.wrappers[cxTextEdit_PC_FIO_R].Clear;

cW_Contract_Params.wrappers[cxPopupEdit_PC_Post].Clear;

end; // 5

tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_org.Index] := VarToStr

(cW_Contract_Params.wrappers[cxPopupEdit_PC_Org]

.EditValueDisplay);

end;

4:

begin

tv_listeners.DataController.Values

[tv_listeners.DataController.FocusedRecordIndex,

tv_listeners_money.Index] := VarToStr

(cW_Contract_Params.wrappers[cxCurrencyEdit_PC_Money]

.EditValueDisplay);

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

cxCurrencyEdit_PC_Money.Properties.UseThousandSeparator := True;

end;

5:

cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract]

.EditValueDisplay := TButtonOrderEditWrapper

(cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract])

.L_status_text + ' (' + VarToStr

(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Order]

.EditValueDisplay) + ')';

6:

cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction]

.EditValueDisplay := TButtonOrderEditWrapper

(cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction])

.L_status_text + ' (' + VarToStr

(cW_Contract_Params.wrappers[cxPopupEdit_PC_Kind_Direction]

.EditValueDisplay) + ')';

end; // 4

end; // 3

end; // 1

MSystemServices.EndSequenceActions;

if ok then

cW_Contract_Params.ChangesAcceptWrappers;

end;

procedure TForm_Event.PC_AutorepresentativeExecute(Sender: TObject);

begin

if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Автопредставитель',

'Вы действительно хотите добавить автопредставителя?') then

begin // 1

MSystemServices.ExchangeData(Autorepr,

VarArrayOf

([VarToStr(cW_Contract_Params.wrappers

[cxButtonEdit_PC_Contract].Value)]))

end; // 1

end;

procedure TForm_Event.PC_RefuseExecute(Sender: TObject);

begin

cW_Contract_Params.ChangesRefuseWrappers;

end;

procedure TForm_Event.Plan_ApplyExecute(Sender: TObject);

var

ok: Boolean;

begin

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

<> '' then

begin // 1

ok := MSystemServices.ExchangeData(Update_Plan,

VarArrayOf([VarToStr(cW_Plan_Filters.wrappers

[cxTextEdit_Plan_Filters_Note].EditValue),

VarToStr(cW_Plan_Filters.wrappers

[cxTextEdit_Plan_Filters_Summary].EditValue),

VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)

]));

if ok then

begin // 3

cW_Plan_Filters.ChangesAcceptWrappers;

tv_plan.DataController.Values[tv_plan.DataController.FocusedRecordIndex,

tv_plan_note.Index] := VarToStr(cW_Plan_Filters.wrappers

[cxTextEdit_Plan_Filters_Note].EditValue);

tv_plan.DataController.Values[tv_plan.DataController.FocusedRecordIndex,

tv_plan_summary.Index] := VarToStr(cW_Plan_Filters.wrappers

[cxTextEdit_Plan_Filters_Summary].EditValue);

cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay :=

VarToStr(cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note]

.EditValue);

end; // 3

end // 1

else

begin // 2

cxTextEdit_Plan_Filters_Note.Clear;

cxTextEdit_Plan_Filters_Summary.Clear;

cW_Plan_Filters.ChangesAcceptWrappers;

end; // 2

end;

procedure TForm_Event.Plan_RefuseExecute(Sender: TObject);

begin

cW_Plan_Filters.ChangesRefuseWrappers;

end;

{ Доступность создания запсией в специальности подразделения }

procedure TForm_Event.DoChanged_cW_Spec_Div(AWrapper: TCustomEditWrapper);

begin

MakeEnable_OkButton(Panel_New_Spec_Div, cW_New_Spec_Div.IsNotEmptyMandatory)

end;

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

procedure TForm_Event.PopupEdit_Import_SpecPropertiesEditValueChanged

(Sender: TObject);

var i: integer;

begin

if Sender = PopupEdit_Import_Spec then

ButtonEdit_Import_Spec.Enabled := VarToStr

(cW_Import.wrappers[PopupEdit_Import_Spec].Value) = '';

if Sender = PopupEdit_Import_Spec_Div

then

begin

ButtonEdit_Import_Spec_Div.Enabled := VarToStr

(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value) = '';

// Если есть выбранная запись, обновим по ней УМК!

if not ButtonEdit_Import_Spec_Div.Enabled

then cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup(PopupEdit_Import_UMK)

else

begin

if Get_SqlData_cxGrid(tv_r_c_groups).Params[0] <> VarToStr

(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value)

then begin

Get_SqlData_cxGrid(tv_r_c_groups).Params[0] := VarToStr

(cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value);

Get_SqlData_cxGrid(tv_r_c_groups).Read_Data;

end;

end;

end;

if (Sender = PopupEdit_Import_UMK) or (Sender = PopupEdit_Import_Spec_Div) then

ButtonEdit_Import_UMK.Enabled := (VarToStr

(cW_Import.wrappers[PopupEdit_Import_UMK].Value) = '')

// Организатор должен быть задан!

And ((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value) <> '');

if (Sender = PopupEdit_Import_Plan) or ( Sender = PopupEdit_Import_Spec_Div)

then

begin

ButtonEdit_Import_Plan.Enabled := (VarToStr

(cW_Import.wrappers[PopupEdit_Import_Plan].Value) = '')

// Организатор должен быть задан!

And ((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value) <> '');

// Если позиция плана выбрана, то поищем ее в списке и выберем!

if VarToStr(cW_Import.wrappers[PopupEdit_Import_Plan].Value) <> ''

then

begin

i := FindGridRecordIndex(tv_r_c_plan, [tv_r_c_plan_id_r_c_plan]

, CreateVarAr([VarToStr(cW_Import.wrappers[PopupEdit_Import_Plan].Value)]));

if i >= 0

then Get_SqlData_cxGrid(tv_r_c_plan).LastChoiceIndex := i;

end;

end;

if (Sender = PopupEdit_Import_EG) or (Sender = PopupEdit_Import_Spec_Div)

or (Sender = PopupEdit_Import_UMK) then

ButtonEdit_Import_EG.Enabled := (VarToStr

(cW_Import.wrappers[PopupEdit_Import_EG].Value) = '')

// Организатор должен быть задан!

And ((cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value) <> '')

// УМК должно быть задано!

And ((cW_Import.wrappers[PopupEdit_Import_UMK].Value) <> '');

if VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value) <> '' then

if Get_SqlData_cxGrid(tv_r_c_groups).Params[0] <> VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value)

then

begin

Get_SqlData_cxGrid(tv_r_c_groups).Params[0] := VarToStr(cW_Import.Wrappers[PopupEdit_Import_Plan].Value);

Get_SqlData_cxGrid(tv_r_c_groups).IsFirstRead := True;

end;

if VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value) <> '' then

if Get_SqlData_cxGrid(tv_r_c_groups).Params[0] <> VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)

then

begin

Get_SqlData_cxGrid(tv_ed_group).Params[0] := VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value);

Get_SqlData_cxGrid(tv_ed_group).IsFirstRead := True;

end;

end;

procedure TForm_Event.Before_Update_Exchange_tv_listeners

(Sender: TSqlData_cxGridTableView; UpdateValue: Variant;

AItem: TcxCustomGridTableItem; ARecordIndex: Integer;

var ExchangeParameters: OleVariant; var Allow: Boolean);

var

FC: TcxGridColumn;

DC: TcxGridDataController;

begin

FC := Sender.GridTableView.Controller.FocusedColumn;

{ Параметры для изменения Ф.И.О. }

if FC = tv_listeners_fio then

begin // 1

DC := Current_Form_SE.cxGrid_FIO.DataController;

ExchangeParameters := CreateVarAr([DC.Values[DC.FocusedRecordIndex,

Current_Form_SE.cxGrid_FIO_ID_E.Index],

Sender.GridTableView.DataController.Values[ARecordIndex,

tv_listeners_id_student.Index],

Sender.GridTableView.DataController.Values[ARecordIndex,

tv_listeners_id_contract.Index]]);

end; // 1

{ Параметры для изменения учебной группы и даты начала }

if (FC = tv_listeners_ed_group) or (FC = tv_listeners_d_start) then

begin // 2

DC := tv_r_c_groups.DataController;

ExchangeParameters := CreateVarAr([DC.Values[DC.FocusedRecordIndex,

tv_r_c_groups_d_start.Index], DC.Values[DC.FocusedRecordIndex,

tv_r_c_groups_id_ed_group.Index],

Sender.GridTableView.DataController.Values[ARecordIndex,

tv_listeners_id_student.Index],

Sender.GridTableView.DataController.Values[ARecordIndex,

tv_listeners_id_contract.Index]]);

end; // 2

{ Параметры для изменения даты окончания }

if (FC = tv_listeners_d_end) then

begin // 3

ExchangeParameters := CreateVarAr

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

tv_listeners_id_student.Index], VarToStr(UpdateValue)]);

end; // 3

end;

{ Добавление группы обучения}

procedure TForm_Event.ButtonEdit_Import_EGClick(Sender: TObject);

var i: integer;

begin

if Import_ID_EG = '' then

begin

MSystemServices.InsertData(d_P_EDUCATIONAL_GROUP

, CreateVarAr(['1', '2', '3', '4'])

, CreateVarAr([Import_EG_Name

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

, '3' // Уровень группы

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

Get_SqlData_cxGrid(tv_ed_group).Read_Data;

i := FindGridRecordIndex(tv_ed_group, [tv_ed_group_name]

, CreateVarAr([Import_EG_Name]));

if i >= 0 then

begin

Import_ID_EG := VarToStr(tv_ed_group.DataController.Values[i, tv_ed_group_id_ed_group.Index]);

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].Value := Import_ID_EG;

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].ValueDisplay := Import_EG_Name;

end;

end

else

begin

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].Value := Import_ID_EG;

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Ed_Group].ValueDisplay := Import_EG_Name;

end;

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Met_Complex].Value :=

cW_Import.Wrappers[PopupEdit_Import_UMK].Value;

cW_New_R_C_Group.Wrappers[cxPopupEdit_New_R_C_Group_Met_Complex].ValueDisplay :=

cW_Import.Wrappers[PopupEdit_Import_UMK].ValueDisplay;

cW_New_R_C_Group.Wrappers[cxDateEdit_New_R_C_Group_D_Start].Value :=

cW_Import.Wrappers[DateEdit_Import_Start].Value;

cW_New_R_C_Group.Wrappers[cxDateEdit_New_R_C_Group_D_End].Value :=

cW_Import.Wrappers[DateEdit_Import_End].Value;

// Откроем добавление группы обучения

if Action_Insert_tv_r_c_group.Execute

then

begin

i := FindGridRecordIndex(tv_r_c_groups, [tv_r_c_groups_name]

, CreateVarAr([Import_EG_Name]));

if i >= 0 then

begin

cW_Import.Wrappers[PopupEdit_Import_EG].Value :=

VarToStr(tv_r_c_groups.DataController.Values[i, tv_r_c_groups_id_ed_group.Index]);

cW_Import.Wrappers[PopupEdit_Import_EG].ValueDisplay :=

VarToStr(tv_r_c_groups.DataController.Values[i, tv_r_c_groups_name.Index]);

end;

end;

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

end;

procedure TForm_Event.ButtonEdit_Import_OrderPropertiesEditValueChanged(

Sender: TObject);

begin

if (Sender = ButtonEdit_Import_Order)

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

else if (Sender = ButtonEdit_Import_Nach)

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

end;

{ Добавление плана обучения}

procedure TForm_Event.ButtonEdit_Import_PlanClick(Sender: TObject);

begin

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].Value :=

cW_Import.Wrappers[DateEdit_Import_Start].Value;

if Action_Insert_tv_r_c_plan.Execute

then begin

cW_Import.Wrappers[PopupEdit_Import_Plan].Value :=

VarToStr(tv_r_c_plan.DataController.Values[tv_r_c_plan.DataController.FocusedRecordIndex

, tv_r_c_plan_id_r_c_plan.Index]);

cW_Import.Wrappers[PopupEdit_Import_Plan].ValueDisplay :=

cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay;

end;

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

end;

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

procedure TForm_Event.ButtonEdit_Import_SpecClick(Sender: TObject);

var

mf: TSForm;

i: Integer;

begin

try // 1

mf := CreateSForm(self, 'fNew_Spec', TabSheet_New_Spec.Caption,

Add_Path + TabSheet_New_Spec.Caption, Panel_New_Spec, tdb_Apply);

cW_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value := Import_Name_Spec;

mf.Position := poScreenCenter;

if mf.ShowModal = mrok then

begin // 2

FSqlData_TableView := Get_SqlData_cxGrid(tv_Spec);

if FSqlData_TableView <> nil then

begin // 3

if MSystemServices.ExchangeData(Add_Spec,

CreateVarAr([cW_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value,

cW_New_Spec.wrappers[cxTextEditNew_Spec_Quality].Value,

IDK_Level_Spec, IDK_Discipline]), 'Добавление программы обучения.')

then

begin // 4

FSqlData_TableView.Read_Data;

i := FindGridRecordIndex(tv_Spec, [tv_Spec_Name, tv_Spec_Q],

VarArrayOf([cW_New_Spec.wrappers[cxTextEditNew_Spec_Name].Value,

cW_New_Spec.wrappers[cxTextEditNew_Spec_Quality].Value]));

if i >= 0 then

begin

cW_Import.wrappers[PopupEdit_Import_Spec].Value := VarToStr

(tv_Spec.DataController.Values[i, tv_Spec_ID.Index]);

cW_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay := VarToStr

(tv_Spec.DataController.Values[i, tv_Spec_Name.Index]);

end;

end; // 4

end; // 3

end; // 2

finally // 1

if assigned(mf) then

FreeAndNil(mf);

SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);

end; // 1

end;

procedure TForm_Event.After_Read_tv_listeners(Sender: TSqlData_cxGridTableView);

begin

if Sender.GridTableView.DataController.RecordCount = 0 then

begin // 1

if cxPageControl_Student.ActivePage = cxTabSheet_Orders then

Get_SqlData_cxGrid(tv_orders).ClearData;

if cxPageControl_Student.ActivePage = cxTabSheet_Anketa then

Fill_AnketaExecute(self);

if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then

Fill_Contract_ParamsExecute(self);

Label_FIO.Caption := '';

end; // 1

end;

Соседние файлы в папке Архив