Вход

разработка А И С социальная защита населения района

Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код 69975
Дата создания 2014
Страниц 64
Мы сможем обработать ваш заказ (!) 23 декабря в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
11 270руб.
КУПИТЬ

Содержание

СОДЕРЖАНИЕ
ВВЕДЕНИЕ 2
1 АНАЛИТИЧЕСКАЯ ЧАСТЬ 5
1.1 Анализ организационной схемы КГКУ «Центра социальной поддержки населения по району имени Лазо» и ее описание 5
1.2 Анализ бизнес-процессов КГКУ «Центр социальной поддержки населения по району имени Лазо» 12
1.3 Анализ уровня автоматизации на КГКУ «Центр социальной поддержки населения по району имени Лазо» 19
1.4 Выявление объекта и задачи автоматизации 21
2 ПРОЕКТНАЯ ЧАСТЬ 24
2.1 Разработка концепции построения информационной модели информационной системы 24
2.2 Разработка структуры базы данных реализации информационной системы 27
2.3 Разработка клиентского приложения 35
2.4 Расчет надежности информационной системы 46
2.5 Защита информации в информационной системе 48
3 РАСЧЕТ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ВНЕДРЕНИЯ АИС «СОТРУДНИЧЕСТВО» 57
ЗАКЛЮЧЕНИЕ 63
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 64
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, ЕДИНИЦ, ТЕРМИНОВ 65
ПРИЛОЖЕНИЕ А. Руководство программиста 66
ПРИЛОЖЕНИЕ Б. Руководство пользователя 69
ПРИЛОЖЕНИЕ В. Листинг программы 84

Фрагмент работы для ознакомления

type = '''+str+''' and '+ 'process.id = stage.proc_id and '+ 'stage.id = empl_list.stage_id and '+ 'empl_list.user_id = employee.id_em and '+ //'((stage.id = empl_list.stage_id and '+ //' empl_list.user_id = employee.id_em) or '+ //' (stage.author = employee.id_em)) and '+ 'employee.login = '''+nam+''' '+ 'group by process.id, process.name'; end;//Заданиянаконтролеfunction SQLStrProcOut(str,nam:string):string; begin SQLStrProcOut:='select process.id, process.name '+ 'from process, stage, empl_list, employee '+ 'where process.type = '''+str+''' and '+ '((process.author = employee.id_em) or '+ ' (process.id = stage.proc_id and '+ ' stage.author = employee.id_em)) and '+ 'employee.login = '''+nam+''' '+ 'group by process.id, process.name'; end;//Поручениянаисполненииfunction SQLStrStageIn(id:integer; nam:string):string; begin SQLStrStageIn:='select stage.id, stage.name, stage.exec_date, stage.fin_date '+ 'from stage, empl_list, employee '+ 'where stage.proc_id = '+inttostr(id)+' and '+ 'stage.id = empl_list.stage_id and '+ 'empl_list.user_id = employee.id_em and '+ 'employee.login = '''+nam+''''; end;//Поручениянаконтролеfunction SQLStrStageOut(id:integer):string; begin SQLStrStageOut:='select stage.id, stage.name, stage.exec_date, stage.fin_date '+ 'from stage '+ 'where stage.proc_id = '+inttostr(id);end;//------------------------------------------------------------------------------//Установка иконки для элемента дереваprocedure TProcForm.TreeIm(un:TTreeNode; u,a,s:integer); begin un.ImageIndex:=u; un.SelectedIndex:=a;un.StateIndex:=s; end;//Отображение документов - процедура 2procedure AddDocsLevel2(node2l2:TTreeNode);var node3l2:TTreeNode; stage,s:string; i,id,st:integer; begin with ProcForm do begin if node2l2.getFirstChild.Index<>-1 then begin Tree.Select(node2l2.getFirstChild); repeat stage:=Tree.Selected.Text; DM.Stage.First; for i:=1 to DM.Stage.RecordCount do begin if DM.Stage.FieldByName('name').AsString=stage then id:=DM.Stage.Fields[0].AsInteger; DM.Stage.Next; end; DM.StageDocs.Close; DM.StageDocs.SQL.Clear; DM.StageDocs.SQL.Add('select documents.id, documents.name, use_docs.type '+ 'from documents, stage, use_docs '+ 'where documents.id = use_docs.doc_id and '+ 'use_docs.stage_id = stage.id and '+ 'stage.id = '+inttostr(id)); DM.StageDocs.ExecSQL; DM.StageDocs.Open; DM.StageDocs.First; for i:=1 to DM.StageDocs.RecordCount do begin st:=DM.StageDocs.Fields[2].AsInteger+5; s:=DM.StageDocs.FieldByName('name').AsString; node3l2:=Tree.Items.AddChild(Tree.Selected,s); TreeIm(node3l2, 4, 4, st); DM.StageDocs.Next; end; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end;end; end;//Отображение документов - процедура 1procedure AddDocsLevel1(node1l1:TTreeNode);var node2l1:TTreeNode; begin with ProcForm do begin if node1l1.getFirstChild.Index<>-1 then begin Tree.Select(node1l1.getFirstChild); repeat node2l1:=Tree.Selected; AddDocsLevel2(Tree.Selected); Tree.Select(node2l1); Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end;end; end;//Выбор написания слова "день"Function Skl(r:integer):string; begin r:=r mod 100; if r>19 then r:=r mod 10; case r of 0:Skl:=' дней'; 1:Skl:=' день'; 2..4:Skl:=' дня'; 5..19:Skl:=' дней';end; end;//Отображение в дереве архивных процессов (аналогично процедуре RefreshTree)procedure TProcForm.RefreshTreeArch;var i,j,id,r,t:integer; s,stage:string[255]; tempnode:TTreeNode; begin with ProcForm do begin PB.Position:=70; DM.ArchInProc.Close; DM.ArchInProc.SQL.Clear; DM.ArchInProc.SQL.Add('select arch_process.id, arch_process.name '+ 'from arch_process, arch_stage, arch_empl_list, Processes..employee '+ 'where arch_process.id = arch_stage.proc_id and '+ 'arch_stage.id = arch_empl_list.stage_id and '+ 'arch_empl_list.user_id = Processes..employee.id_em and '+ 'Processes..employee.login = '''+u_name+''' '+ 'group by arch_process.id, arch_process.name'); DM.ArchInProc.ExecSQL; DM.ArchInProc.Open; DM.ArchOutProc.Close; DM.ArchOutProc.SQL.Clear; DM.ArchOutProc.SQL.Add('select arch_process.id, arch_process.name '+ 'from arch_process, Processes..employee '+ 'where arch_process.author = Processes..employee.id_em and '+ 'Processes..employee.login = '''+u_name+''''); DM.ArchOutProc.ExecSQL; DM.ArchOutProc.Open; PB.Position:=75; DM.ArchInProc.First; while not(DM.ArchInProc.Eof) do begin s:=DM.ArchInProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(archin,s); TreeIm(tempnode, 2, 2, -1); DM.ArchInProc.Next; end; PB.Position:=80; DM.ArchOutProc.First; while not(DM.ArchOutProc.Eof) do begin s:=DM.ArchOutProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(archout,s); TreeIm(tempnode, 2, 2, -1); DM.ArchOutProc.Next; end; PB.Position:=85; if archout.getFirstChild.Index<>-1 then begin Tree.Select(archout.getFirstChild); DM.ArchOutProc.First; repeat stage:=Tree.Selected.Text; id:=DM.ArchOutProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add('select ast.id, ast.name, ast.exec_date, ast.fin_date '+ 'from Arch_Processes..arch_stage as ast '+ 'where ast.proc_id = '+inttostr(id)); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; while not(DM.ProcStage.Eof) do begin s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(DM.ProcStage.Fields[3].AsDateTime).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.ArchOutProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=90; if archin.getFirstChild.Index<>-1 then begin Tree.Select(archin.getFirstChild); DM.ArchInProc.First; repeat stage:=Tree.Selected.Text; id:=DM.ArchInProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add('select ast.id, ast.name, ast.exec_date, ast.fin_date '+ 'from Arch_Processes..arch_stage as ast, '+ 'Arch_Processes..arch_empl_list as ael, '+ 'employee as em '+ 'where ast.proc_id = '+inttostr(id)+' and '+ 'ast.id = ael.stage_id and '+ 'ael.user_id = em.id_em and '+ 'em.login = '''+u_name+''''); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; while not(DM.ProcStage.Eof) do begin s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(DM.ProcStage.Fields[3].AsDateTime).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.ArchInProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=95; //AddDocsLevel1(archout); //AddDocsLevel1(archin); end; end;//Построениедереваprocedure TProcForm.RefreshTree(ri:boolean);var i,j,id,r,t:integer; s,stage:string[255]; tempnode:TTreeNode; rav:boolean; begin with ProcForm do begin //Обновляемнаборыданных DM.Process.Close; DM.Process.Open; DM.Stage.Close; DM.Stage.Open; reftree:=true; Tree.Items.BeginUpdate; Screen.Cursor:=crHourGlass; PB.Visible:=true; PB.Position:=0; SetLength(procmeslt,0); SetLength(stagemeslt,0); //ОтбираемТекущиезаданиянаисполнении DM.CurInProc.Close; DM.CurInProc.SQL.Clear; DM.CurInProc.SQL.Add(SQLStrProcIn('Активный',u_name)); DM.CurInProc.ExecSQL; DM.CurInProc.Open; DM.CurInProc.First; while not(DM.CurInProc.Eof) do begin rav:=false; for i:=0 to length(procmeslt)-1 do if (DM.CurInProc.Fields[0].AsInteger=procmeslt[i].id) then rav:=true; if not(rav) then begin SetLength(procmeslt,length(procmeslt)+1); procmeslt[length(procmeslt)-1].id:=DM.CurInProc.Fields[0].AsInteger; procmeslt[length(procmeslt)-1].name:=DM.CurInProc.Fields[1].AsString; procmeslt[length(procmeslt)-1].time:=DM.GetTime; end; DM.CurInProc.Next; end;PB.Position:=5; //Отбираем Текущие задания на контролеDM.CurOutProc.Close; DM.CurOutProc.SQL.Clear; DM.CurOutProc.SQL.Add(SQLStrProcOut('Активный',u_name)); DM.CurOutProc.ExecSQL; DM.CurOutProc.Open; DM.CurOutProc.First; while not(DM.CurOutProc.Eof) do begin rav:=false; for i:=0 to length(procmeslt)-1 do if (DM.CurOutProc.Fields[0].AsInteger=procmeslt[i].id) then rav:=true; if not(rav) then begin SetLength(procmeslt,length(procmeslt)+1); procmeslt[length(procmeslt)-1].id:=DM.CurOutProc.Fields[0].AsInteger; procmeslt[length(procmeslt)-1].name:=DM.CurOutProc.Fields[1].AsString; procmeslt[length(procmeslt)-1].time:=DM.GetTime; end; DM.CurOutProc.Next; end;PB.Position:=10; //Отбираем Завершенные задания на исполненииDM.FinInProc.Close; DM.FinInProc.SQL.Clear; DM.FinInProc.SQL.Add(SQLStrProcIn('Завершенный',u_name)); DM.FinInProc.ExecSQL; DM.FinInProc.Open;PB.Position:=15; //Отбираем Завершенные задания на контролеDM.FinOutProc.Close; DM.FinOutProc.SQL.Clear; DM.FinOutProc.SQL.Add(SQLStrProcOut('Завершенный',u_name)); DM.FinOutProc.ExecSQL; DM.FinOutProc.Open; PB.Position:=20; Tree.Select(Tree.TopItem); while Tree.Selected.Index<>-1 do Tree.Items.Delete(Tree.Selected); //Сохраняемпозициивдереве cur:=Tree.Items.AddChild(Tree.Selected,'Текущиезадания'); fin:=Tree.Items.AddChild(Tree.Selected,'Завершенныезадания'); arch:=Tree.Items.AddChild(Tree.Selected,'Архивныезадания'); curout:=Tree.Items.AddChild(cur,'Наконтроле'); curin:=Tree.Items.AddChild(cur,'Наисполнении'); finout:=Tree.Items.AddChild(fin,'Наконтроле'); finin:=Tree.Items.AddChild(fin,'Наисполнении'); archout:=Tree.Items.AddChild(arch,'Наконтроле'); archin:=Tree.Items.AddChild(arch,'Наисполнении'); //Загружаемкартинки TreeIm(cur, 0, 1, -1); TreeIm(fin, 0, 1, -1); TreeIm(arch, 0, 1, -1); TreeIm(curout, 0, 1, -1); TreeIm(curin, 0, 1, -1); TreeIm(finout, 0, 1, -1); TreeIm(finin, 0, 1, -1); TreeIm(archout, 0, 1, -1); TreeIm(archin, 0, 1, -1); Tree.Select(cur);PB.Position:=25; //Далее загружаем поручения в выбранные заданияDM.CurInProc.First; for i:=1 to DM.CurInProc.RecordCount do begin s:=DM.CurInProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(curin,s); TreeIm(tempnode, 2, 2, -1); DM.CurInProc.Next; end; PB.Position:=30; DM.CurOutProc.First; for i:=1 to DM.CurOutProc.RecordCount do begin s:=DM.CurOutProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(curout,s); TreeIm(tempnode, 2, 2, -1); DM.CurOutProc.Next; end; PB.Position:=35; DM.FinInProc.First; for i:=1 to DM.FinInProc.RecordCount do begin s:=DM.FinInProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(finin,s); TreeIm(tempnode, 2, 2, -1); DM.FinInProc.Next; end; PB.Position:=40; DM.FinOutProc.First; for i:=1 to DM.FinOutProc.RecordCount do begin s:=DM.FinOutProc.Fields[1].AsString; tempnode:=Tree.Items.AddChild(finout,s); TreeIm(tempnode, 2, 2, -1); DM.FinOutProc.Next;end; PB.Position:=45; //--------------------------------------------- //Далее загружаем документы в порученияif curout.getFirstChild.Index<>-1 then begin Tree.Select(curout.getFirstChild); DM.CurOutProc.First; repeat stage:=Tree.Selected.Text; id:=DM.CurOutProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add(SQLStrStageOut(id)); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; while not(DM.ProcStage.Eof) do begin rav:=false; for i:=0 to length(stagemeslt)-1 do if (DM.ProcStage.Fields[0].AsInteger=stagemeslt[i].id) then rav:=true; if not(rav) then begin SetLength(stagemeslt,length(stagemeslt)+1); stagemeslt[length(stagemeslt)-1].id:=DM.ProcStage.Fields[0].AsInteger; stagemeslt[length(stagemeslt)-1].name:=DM.ProcStage.Fields[1].AsString; stagemeslt[length(stagemeslt)-1].time:=DM.GetTime; end; s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(Now).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.CurOutProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=50; if curin.getFirstChild.Index<>-1 then begin Tree.Select(curin.getFirstChild); DM.CurInProc.First; repeat stage:=Tree.Selected.Text; id:=DM.CurInProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add(SQLStrStageIn(id,u_name)); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; while not(DM.ProcStage.Eof) do begin rav:=false; for i:=0 to length(stagemeslt)-1 do if (DM.ProcStage.Fields[0].AsInteger=stagemeslt[i].id) then rav:=true; if not(rav) then begin SetLength(stagemeslt,length(stagemeslt)+1); stagemeslt[length(stagemeslt)-1].id:=DM.ProcStage.Fields[0].AsInteger; stagemeslt[length(stagemeslt)-1].name:=DM.ProcStage.Fields[1].AsString; stagemeslt[length(stagemeslt)-1].time:=DM.GetTime; end; s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(Now).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.CurInProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=55; if finout.getFirstChild.Index<>-1 then begin Tree.Select(finout.getFirstChild); DM.FinOutProc.First; repeat stage:=Tree.Selected.Text; id:=DM.FinOutProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add(SQLStrStageOut(id)); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; for i:=1 to DM.ProcStage.RecordCount do begin s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(DM.ProcStage.Fields[3].AsDateTime).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.FinOutProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=60; if finin.getFirstChild.Index<>-1 then begin Tree.Select(finin.getFirstChild); DM.FinInProc.First; repeat stage:=Tree.Selected.Text; id:=DM.FinInProc.Fields[0].AsInteger; DM.ProcStage.Close; DM.ProcStage.SQL.Clear; DM.ProcStage.SQL.Add(SQLStrStageIn(id,u_name)); DM.ProcStage.ExecSQL; DM.ProcStage.Open; DM.ProcStage.First; for i:=1 to DM.ProcStage.RecordCount do begin s:=DM.ProcStage.Fields[1].AsString; tempnode:=Tree.Items.AddChild(Tree.Selected,s); r:=DateTimeToTimeStamp(DM.ProcStage.Fields[2].AsDateTime).Date-DateTimeToTimeStamp(DM.ProcStage.Fields[3].AsDateTime).Date; if r<0 then t:=7; if (r>=0) and (r<=1) then t:=8; if r>1 then t:=9; TreeIm(tempnode, 3, 3, t); DM.ProcStage.Next; end; DM.FinInProc.Next; Tree.Select(Tree.Selected.getNextSibling); until Tree.Selected.Index=-1; end; PB.Position:=65; //-------------------------------------- AddDocsLevel1(curout); AddDocsLevel1(curin); AddDocsLevel1(finout); AddDocsLevel1(finin); if treeop[3]=1 then RefreshTreeArch; PB.Position:=100; ProcForm.TreeStyle; Tree.Items.EndUpdate; if ri then begin LoadCurNode; ProcForm.RefreshInfo; end; ProcForm.NewEmplStage; PB.Visible:=false; Screen.Cursor:=crDefault; reftree:=false;end; end;//Обновление информации о выбранном задании, поручении и документеprocedure TProcForm.RefreshInfo;var nameen,namedis,propen,propdis:TColor; nod:TTreeNode; i,r,p:integer; s:string; begin with ProcForm do begin DM.Process.Close; DM.Process.Open; DM.Stage.Close; DM.Stage.Open; for i:=1 to 5 do begin names[i]:=''; nodes[i]:=nil; end; if Tree.Selected.Index=-1 then nod:=curin else nod:=Tree.Selected; while nod.Index<>-1 do begin for i:=5 downto 2 do begin names[i]:=names[i-1]; nodes[i]:=nodes[i-1]; end; names[1]:=nod.Text; nodes[1]:=nod; nod:=nod.Parent; end;; // if curnames[1]='' then // curnames:=names; s:=names[1]; for i:=2 to 5 do if names[i]<>'' then s:=s+' --> '+names[i]; MainForm.StatusBar1.Panels[1].Text:=' '+s; nameen:=clNavy; namedis:=clMaroon; propen:=clBlack; propdis:=clGray; //stage_id:=DM.Stage.FieldByName('id').AsInteger;//Выводим в форму информацию о выбранном заданииif names[3]<>'' then begin ProcName1.Caption:='Выбранозадание:'; ProcName2.Caption:=names[3]; ProcName2.Color:=clCream; DM.Process.First; while (DM.Process.FieldByName('name').AsString<>names[3]) and not(DM.Process.Eof) do DM.Process.Next; proc_id:=DM.Process.FieldByName('id').AsInteger; author_id:= DM.Process.FieldByName('author').AsInteger; ProcDesc.Caption:=DM.Process.FieldByName('descript').AsString; ProcDesc.Color:=clCream; ProcDate.Caption:=datetostr(DM.Process.FieldByName('cr_date').AsDateTime)+' '+ timetostr(DM.Process.FieldByName('cr_date').AsDateTime); DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Process.FieldByName('author').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; ProcAuth.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; ProcAuth.Enabled:=true; if DM.Process.FieldByName('fin_user').AsString<>'' then begin ProcFinDat.Caption:=datetostr(DM.Process.FieldByName('fin_date').AsDateTime)+' '+ timetostr(DM.Process.FieldByName('fin_date').AsDateTime); DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Process.FieldByName('fin_user').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; ProcFinUs.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; end else begin ProcFinDat.Caption:='Заданиеневыполнено!'; ProcFinUs.Caption:=''; end; if DM.Process.FieldByName('arch_user').AsString<>'' then begin ProcArchDat.Caption:=datetostr(DM.Process.FieldByName('arch_date').AsDateTime)+' '+ timetostr(DM.Process.FieldByName('arch_date').AsDateTime); DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Process.FieldByName('arch_user').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; ProcArchUs.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; end else begin ProcArchDat.Caption:='Заданиенеархивировано!'; ProcArchUs.Caption:=''; end; if not(DM.Processsound.IsNull) then begin SpeedButton3.Enabled:=true; SpeedButton4.Enabled:=false; SpeedButton5.Enabled:=true; ButHistory.Enabled:=true; end else begin SpeedButton3.Enabled:=false; SpeedButton4.Enabled:=false; SpeedButton5.Enabled:=true; ButHistory.Enabled:=true; end; if DM.Process.FieldByName('type').AsString='Активный' then begin StageNewBut.Enabled:=true; MainForm.ToolButton4.Enabled:=true; ProcFinBut.Caption:='Завершитьзадание'; ProcFinBut.Enabled:=true; ProcArchBut.Enabled:=false; ProcDelBut.Enabled:=false; proctype:='active'; end; if DM.Process.FieldByName('type').AsString='Завершенный' then begin StageNewBut.Enabled:=false; MainForm.ToolButton4.Enabled:=false; ProcFinBut.Caption:='Восстановить'; ProcFinBut.Enabled:=true;ProcArchBut.Caption:='Отправить в архив';ProcArchBut.Enabled:=true; ProcDelBut.Enabled:=false; proctype:='fin'; end; if DM.Process.FieldByName('type').AsString='Архивный' then begin StageNewBut.Enabled:=false; MainForm.ToolButton4.Enabled:=false; ProcFinBut.Enabled:=false; ProcArchBut.Caption:='Вернутьизархива'; ProcArchBut.Enabled:=true; ProcDelBut.Enabled:=true; proctype:='archive'; end; ProcName1.Font.Color:=nameen; ProcName2.Font.Color:=nameen; ProcDesc1.Font.Color:=propen; Label2.Font.Color:=propen; Label3.Font.Color:=propen; Label4.Font.Color:=propen; Label5.Font.Color:=propen; Label6.Font.Color:=propen; Label7.Font.Color:=propen; SpeedButton1.Enabled:=true; ComboBox1.Enabled:=true; Label9.Enabled:=true; RichEdit1.Enabled:=true; Memo1.Enabled:=true; end else beginProcName1.Caption:='Задание не выбрано!';ProcName2.Caption:=''; ProcName2.Color:=clBtnFace; ProcDesc.Caption:=''; ProcDesc.Color:=clBtnFace; ProcDate.Caption:=''; ProcAuth.Caption:=''; ProcAuth.Enabled:=false; ProcFinDat.Caption:=''; ProcFinUs.Caption:=''; ProcArchDat.Caption:=''; ProcArchUs.Caption:=''; ProcStatus.Caption:=''; RichEdit1.Clear; StageNewBut.Enabled:=false; MainForm.ToolButton4.Enabled:=false; ProcFinBut.Enabled:=false; ProcArchBut.Enabled:=false; ProcDelBut.Enabled:=false; SpeedButton3.Enabled:=false; SpeedButton4.Enabled:=false; SpeedButton5.Enabled:=false; ButHistory.Enabled:=false; SpeedButton1.Enabled:=false; ComboBox1.Enabled:=false; Label9.Enabled:=false; RichEdit1.Enabled:=false; Memo1.Enabled:=false; ProcName1.Font.Color:=namedis; ProcDesc1.Font.Color:=propdis; Label2.Font.Color:=propdis; Label3.Font.Color:=propdis; Label4.Font.Color:=propdis; Label5.Font.Color:=propdis; Label6.Font.Color:=propdis; Label7.Font.Color:=propdis; end;//Выводим в форму информацию о выбранном порученииif names[4]<>'' then begin StageName1.Caption:='Выбранопоручение:'; StageName2.Caption:=names[4]; StageName2.Color:=clCream; DM.Stage.First; while (DM.Stage.FieldByName('name').AsString<>names[4]) and not(DM.Stage.Eof) do DM.Stage.Next; //stage_id:=DM.Stage.FieldByName('id').AsInteger; ////////////!!!!!!!!!! StageDesc.Caption:=DM.Stage.FieldByName('descript').AsString; StageDesc.Color:=clCream; StageDate.Caption:=datetostr(DM.Stage.FieldByName('cr_date').AsDateTime)+' '+ timetostr(DM.Stage.FieldByName('cr_date').AsDateTime); DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Stage.FieldByName('author').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; StageAuth.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; StageExec.Caption:=datetostr(DM.Stage.FieldByName('exec_date').AsDateTime); if (DM.Empl_List.Locate('user_id;stage_id',VarArrayOf([u_id,DM.Stage.FieldByName('id').AsInteger]),[])) and (names[2]='Наисполнении') then begin p:=DM.Empl_List.FieldByName('exec_perc').AsInteger; case p of 0..30:StageStatus0.Font.Color:=clRed; 31..99:StageStatus0.Font.Color:=$0026C9DC; 100:StageStatus0.Font.Color:=clGreen; end; StageStatus0.Caption:='ПоручениевыполненоВамина '+inttostr(p)+'%'; StageStatus0.Color:=clCream; end else begin StageStatus0.Caption:=''; StageStatus0.Color:=clBtnFace; end; if DM.Stage.FieldByName('fin_date').AsDateTime>strtodate('30.12.1899') then begin StageFin.Caption:=datetostr(DM.Stage.FieldByName('fin_date').AsDateTime)+' '+ timetostr(DM.Stage.FieldByName('fin_date').AsDateTime); r:=DateTimeToTimeStamp(DM.Stage.FieldByName('exec_date').AsDateTime).Date-DateTimeToTimeStamp(DM.Stage.FieldByName('fin_date').AsDateTime).Date; if r<0 then begin StageStatus1.Font.Color:=clRed;StageStatus1.Caption:='Поручение не было выполнено в срок!';end; if (r=0) then begin StageStatus1.Font.Color:=$0026C9DC;StageStatus1.Caption:='Выполнено в день окончания срока исполнения.';end; if (r=1) then begin StageStatus1.Font.Color:=$0026C9DC;StageStatus1.Caption:='Выполнено за 1 день до окончания срока исполнения.';end; if r>1 then begin StageStatus1.Font.Color:=clGreen;StageStatus1.Caption:='Выполнено за '+inttostr(r)+Skl(r)+' до окончания срока исполнения.';end; end else begin StageFin.Caption:='Поручениеневыполнено!'; r:=DateTimeToTimeStamp(DM.Stage.FieldByName('exec_date').AsDateTime).Date-DateTimeToTimeStamp(Now).Date; if r<0 then begin StageStatus1.Font.Color:=clRed;StageStatus1.Caption:='Поручение не было выполнено в срок!';end; if (r>=0) and (r<=1) then begin StageStatus1.Font.Color:=$0026C9DC; if Skl(r)=' день' thenStageStatus1.Caption:='До окончания срока исполнения остался '+inttostr(r)+Skl(r)+'.' else StageStatus1.Caption:='До окончания срока исполнения осталось '+inttostr(r)+Skl(r)+'.';end; if r>1 then begin StageStatus1.Font.Color:=clGreen; if Skl(r)=' день' thenStageStatus1.Caption:='До окончания срока исполнения остался '+inttostr(r)+Skl(r)+'.' else StageStatus1.Caption:='До окончания срока исполнения осталось '+inttostr(r)+Skl(r)+'.';end; end; if not(DM.Stagesound.IsNull) then begin SpeedButton6.Enabled:=true; SpeedButton7.Enabled:=false; SpeedButton8.Enabled:=true; BtnHistoryStage.Enabled:=true; end else begin SpeedButton6.Enabled:=false; SpeedButton7.Enabled:=false; SpeedButton8.Enabled:=true; BtnHistoryStage.Enabled:=true; end; if names[1]='Текущиезадания' then begin StageFinBut.Enabled:=true; StageExecBut.Enabled:=true; DocNewBut.Enabled:=true; MainForm.ToolButton3.Enabled:=true; end else begin StageFinBut.Enabled:=false; StageExecBut.Enabled:=false; DocNewBut.Enabled:=false; MainForm.ToolButton3.Enabled:=false; end; StageEmplBut.Enabled:=true; StageDelBut.Enabled:=true; StageName1.Font.Color:=nameen; StageName2.Font.Color:=nameen; Label8.Font.Color:=propen; Label11.Font.Color:=propen; Label12.Font.Color:=propen; Label15.Font.Color:=propen; Label18.Font.Color:=propen; SpeedButton2.Enabled:=true; ComboBox2.Enabled:=true; Label10.Enabled:=true; RichEdit2.Enabled:=true; Memo2.Enabled:=true; end else begin StageName1.Caption:='Поручениеневыбрано!'; StageName2.Caption:=''; StageName2.Color:=clBtnFace; StageDesc.Caption:=''; StageDesc.Color:=clBtnFace; StageDate.Caption:=''; StageAuth.Caption:=''; StageExec.Caption:=''; StageFin.Caption:=''; StageStatus1.Caption:=''; StageStatus0.Caption:=''; StageStatus0.Color:=clBtnFace; RichEdit2.Clear; DocNewBut.Enabled:=false; MainForm.ToolButton3.Enabled:=false; StageExecBut.Enabled:=false; StageFinBut.Enabled:=false; StageEmplBut.Enabled:=false; StageDelBut.Enabled:=false; SpeedButton6.Enabled:=false; BtnHistoryStage.Enabled:=false; SpeedButton7.Enabled:=false; SpeedButton8.Enabled:=false; SpeedButton2.Enabled:=false; ComboBox2.Enabled:=false; Label10.Enabled:=false; RichEdit2.Enabled:=false; Memo2.Enabled:=false; StageName1.Font.Color:=namedis; StageName2.Font.Color:=namedis; Label8.Font.Color:=propdis; Label11.Font.Color:=propdis; Label12.Font.Color:=propdis; Label15.Font.Color:=propdis; Label18.Font.Color:=propdis;end; //Выводим в форму информацию о выбранном документеif names[5]<>'' then begin DocName.Caption:='Выбрандокумент: '+names[5]; DM.Documents.First; while (DM.Documents.FieldByName('name').AsString<>names[5]) and not(DM.Documents.Eof) do DM.Documents.Next; DocDate.Caption:=datetostr(DM.Documents.FieldByName('reg_date').AsDateTime)+' '+ timetostr(DM.Documents.FieldByName('reg_date').AsDateTime); DM.Use_Docs.First; while ((DM.Use_Docs.FieldByName('doc_id').AsInteger<>DM.Documents.FieldByName('id').AsInteger) or (DM.Use_Docs.FieldByName('stage_id').AsInteger<>DM.Stage.FieldByName('id').AsInteger)) and not(DM.Use_Docs.Eof) do DM.Use_Docs.Next; DocDesc.Text:=DM.Use_Docs.FieldByName('descript').AsString; DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Documents.FieldByName('reg_user').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; DocAuth.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; if DM.Documentsedit_user.AsString='' then begin DocOpenBut.Enabled:=false; DocEditBut.Caption:='Редактировать';DocEditBut.Hint:='Занять документ для редактирования';DocEditBut.Enabled:=true; DocViewBut.Caption:='Просмотреть';DocViewBut.Hint:='Закачать документ для просмотра';DocViewBut.Enabled:=true; end else if DM.Documentsedit_user.AsInteger=u_id then begin DocOpenBut.Enabled:=true; DocEditBut.Caption:='Сохранить';DocEditBut.Hint:='Сохранить изменения и освободить документ';DocEditBut.Enabled:=true; DocViewBut.Caption:='Отменить';DocViewBut.Hint:='Освободить документ без сохранения изменений';DocViewBut.Enabled:=true; end else if FileExists(curdir+'\files\'+DM.Documentsid.AsString+'.'+DM.Documentsdoc_ext.AsString) then begin DocOpenBut.Enabled:=true; DocEditBut.Caption:='Редактировать';DocEditBut.Hint:='Занять документ для редактирования';DocEditBut.Enabled:=false; DocViewBut.Caption:='Просмотреть';DocViewBut.Hint:='Закачать документ для просмотра';DocViewBut.Enabled:=true; end else begin DocOpenBut.Enabled:=false; DocEditBut.Caption:='Редактировать';DocEditBut.Hint:='Занять документ для редактирования';DocEditBut.Enabled:=false; DocViewBut.Caption:='Просмотреть';DocViewBut.Hint:='Закачать документ для просмотра';DocViewBut.Enabled:=true; end; DocDelBut.Enabled:=true; DocName.Font.Color:=nameen; Label16.Font.Color:=propen; Label21.Font.Color:=propen; Label22.Font.Color:=propen;end else begin DocName.Caption:='Ни один документ не выбран!';DocDate.Caption:=''; DocDesc.Text:=''; DocAuth.Caption:=''; DocOpenBut.Enabled:=false; DocEditBut.Enabled:=false; DocViewBut.Enabled:=false; DocDelBut.Enabled:=false; DocName.Font.Color:=namedis; Label16.Font.Color:=propdis; Label21.Font.Color:=propdis; Label22.Font.Color:=propdis; end; CheckMessages; //RichEdit1.Clear; //RichEdit2.Clear;OutMessages; end; end; //Вывод информации об архивных заданияхprocedure TProcForm.RefreshInfoArch;var nameen,namedis,propen,propdis:TColor; nod:TTreeNode; i,r:integer; s:string; begin with ProcForm do begin for i:=1 to 5 do begin names[i]:=''; nodes[i]:=nil; end; nod:=Tree.Selected; while nod.Index<>-1 do begin for i:=5 downto 2 do begin names[i]:=names[i-1]; nodes[i]:=nodes[i-1]; end; names[1]:=nod.Text; nodes[1]:=nod; nod:=nod.Parent; end; s:=names[1]; for i:=2 to 5 do if names[i]<>'' then s:=s+' --> '+names[i]; MainForm.StatusBar1.Panels[1].Text:=' '+s; nameen:=clNavy; namedis:=clMaroon; propen:=clBlack;propdis:=clGray; //Выводим в форму информацию о выбранном заданииif names[3]<>'' then begin ProcName1.Caption:='Выбранозадание:'; ProcName2.Caption:=names[3]; ProcName2.Color:=clCream; DM.Arch_Process.First; while (DM.Arch_Process.FieldByName('name').AsString<>names[3]) and not(DM.Arch_Process.Eof) do DM.Arch_Process.Next; ProcDesc.Caption:=DM.Arch_Process.FieldByName('descript').AsString; ProcDesc.Color:=clCream; ProcDate.Caption:=datetostr(DM.Arch_Process.FieldByName('cr_date').AsDateTime)+' '+ timetostr(DM.Arch_Process.FieldByName('cr_date').AsDateTime); ProcAuth.Caption:=DM.Arch_Process.FieldByName('author_n').AsString;ProcAuth.Enabled:=true; if DM.Arch_Process.FieldByName('fin_user').AsString<>'' thenbegin ProcFinDat.Caption:=datetostr(DM.Arch_Process.FieldByName('fin_date').AsDateTime)+' '+ timetostr(DM.Arch_Process.FieldByName('fin_date').AsDateTime); ProcFinUs.Caption:=DM.Arch_Process.FieldByName('fin_user_n').AsString; end else begin ProcFinDat.Caption:='заданиеневыполнено!'; ProcFinUs.Caption:=''; end; if DM.Arch_Process.FieldByName('arch_user').AsString<>'' then begin ProcArchDat.Caption:=datetostr(DM.Arch_Process.FieldByName('arch_date').AsDateTime)+' '+ timetostr(DM.Arch_Process.FieldByName('arch_date').AsDateTime); DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Process.FieldByName('arch_user').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; ProcArchUs.Caption:=DM.Arch_Process.FieldByName('arch_user_n').AsString; end else begin ProcArchDat.Caption:='Заданиенеархивировано!'; ProcArchUs.Caption:=''; end; StageNewBut.Enabled:=false; MainForm.ToolButton4.Enabled:=false; ProcFinBut.Enabled:=false;ProcArchBut.Caption:='Вернуть из архива';ProcArchBut.Enabled:=true; ProcDelBut.Enabled:=true; proctype:='archive'; ProcName1.Font.Color:=nameen; ProcName2.Font.Color:=nameen; ProcDesc1.Font.Color:=propen; Label2.Font.Color:=propen; Label3.Font.Color:=propen; Label4.Font.Color:=propen; Label5.Font.Color:=propen; Label6.Font.Color:=propen; Label7.Font.Color:=propen;end else begin ProcName1.Caption:='Заданиеневыбрано!'; ProcName2.Caption:=''; ProcName2.Color:=clCream; ProcDesc.Caption:=''; ProcDesc.Color:=clCream; ProcDate.Caption:=''; ProcAuth.Caption:=''; ProcAuth.Enabled:=false; ProcFinDat.Caption:=''; ProcFinUs.Caption:=''; ProcArchDat.Caption:=''; ProcArchUs.Caption:=''; ProcStatus.Caption:=''; StageNewBut.Enabled:=false; MainForm.ToolButton4.Enabled:=false; ProcFinBut.Enabled:=false; ProcArchBut.Enabled:=false; ProcDelBut.Enabled:=false; ProcName1.Font.Color:=namedis; ProcDesc1.Font.Color:=propdis; Label2.Font.Color:=propdis; Label3.Font.Color:=propdis; Label4.Font.Color:=propdis; Label5.Font.Color:=propdis; Label6.Font.Color:=propdis; Label7.Font.Color:=propdis;end;//Выводим в форму информацию о выбранном порученииif names[4]<>'' then begin StageName1.Caption:='Выбранопоручение:'; StageName2.Caption:=names[4]; StageName2.Color:=clCream; DM.Arch_Stage.First; while (DM.Arch_Stage.FieldByName('name').AsString<>names[4]) and not(DM.Arch_Stage.Eof) do DM.Arch_Stage.Next; StageDesc.Caption:=DM.Arch_Stage.FieldByName('descript').AsString;StageDesc.Color:=clCream; StageDate.Caption:=datetostr(DM.Arch_Stage.FieldByName('cr_date').AsDateTime)+' '+ timetostr(DM.Arch_Stage.FieldByName('cr_date').AsDateTime); StageAuth.Caption:=DM.Arch_Stage.FieldByName('author_n').AsString; StageExec.Caption:=datetostr(DM.Arch_Stage.FieldByName('exec_date').AsDateTime); if DM.Arch_Stage.FieldByName('fin_date').AsDateTime>strtodate('30.12.1899') then begin StageFin.Caption:=datetostr(DM.Arch_Stage.FieldByName('fin_date').AsDateTime)+' '+ timetostr(DM.Arch_Stage.FieldByName('fin_date').AsDateTime); r:=DateTimeToTimeStamp(DM.Arch_Stage.FieldByName('exec_date').AsDateTime).Date-DateTimeToTimeStamp(DM.Arch_Stage.FieldByName('fin_date').AsDateTime).Date; if r<0 then begin StageStatus1.Font.Color:=clRed;StageStatus1.Caption:='Поручение не было выполнено в срок!';end; if (r=0) then begin StageStatus1.Font.Color:=clYellow;StageStatus1.Caption:='Поручение было выполнено в день окончания срока исполнения.';end; if (r=1) then begin StageStatus1.Font.Color:=clYellow;StageStatus1.Caption:='Поручение было выполнено за 1 день до окончания срока исполнения.';end; if r>1 then begin StageStatus1.Font.Color:=clGreen;StageStatus1.Caption:='Поручение было выполнено за '+inttostr(r)+Skl(r)+' до окончания срока исполнения.';end; end else begin StageFin.Caption:='Поручениеневыполнено!'; r:=DateTimeToTimeStamp(DM.Arch_Stage.FieldByName('exec_date').AsDateTime).Date-DateTimeToTimeStamp(Now).Date; if r<0 then begin StageStatus1.Font.Color:=clRed;StageStatus1.Caption:='Поручение не было выполнено в срок!';end; if (r>=0) and (r<=1) then begin StageStatus1.Font.Color:=clYellow; if Skl(r)=' день' thenStageStatus1.Caption:='До окончания срока исполнения остался '+inttostr(r)+Skl(r)+'.' else StageStatus1.Caption:='До окончания срока исполнения осталось '+inttostr(r)+Skl(r)+'.';end; if r>1 then begin StageStatus1.Font.Color:=clGreen; if Skl(r)=' день' thenStageStatus1.Caption:='До окончания срока исполнения остался '+inttostr(r)+Skl(r)+'.' else StageStatus1.Caption:='До окончания срока исполнения осталось '+inttostr(r)+Skl(r)+'.';end; end; DocNewBut.Enabled:=true; MainForm.ToolButton3.Enabled:=true; StageExecBut.Enabled:=true; StageFinBut.Enabled:=true; StageEmplBut.Enabled:=true; StageDelBut.Enabled:=true; StageName1.Font.Color:=nameen; StageName2.Font.Color:=nameen; Label8.Font.Color:=propen; Label11.Font.Color:=propen; Label12.Font.Color:=propen; Label15.Font.Color:=propen; Label18.Font.Color:=propen; end else begin StageName1.Caption:='Поручениеневыбрано!'; StageName2.Caption:=''; StageName2.Color:=clBtnFace; StageDesc.Caption:=''; StageDesc.Color:=clBtnFace;StageDate.Caption:=''; StageAuth.Caption:=''; StageExec.Caption:=''; StageFin.Caption:=''; StageStatus1.Caption:=''; DocNewBut.Enabled:=false; MainForm.ToolButton3.Enabled:=false; StageExecBut.Enabled:=false; StageFinBut.Enabled:=false; StageEmplBut.Enabled:=false; StageDelBut.Enabled:=false; StageName1.Font.Color:=namedis; StageName2.Font.Color:=namedis; Label8.Font.Color:=propdis; Label11.Font.Color:=propdis; Label12.Font.Color:=propdis; Label15.Font.Color:=propdis; Label18.Font.Color:=propdis; end;//Выводим в форму информацию о выбранном документеif names[5]<>'' then begin DocName.Caption:='Выбрандокумент: '+names[5]; DM.Documents.First; while (DM.Documents.FieldByName('name').AsString<>names[5]) and not(DM.Documents.Eof) do DM.Documents.Next; DocDate.Caption:=datetostr(DM.Documents.FieldByName('reg_date').AsDateTime)+' '+ timetostr(DM.Documents.FieldByName('reg_date').AsDateTime); DM.Use_Docs.First; while ((DM.Use_Docs.FieldByName('doc_id').AsInteger<>DM.Documents.FieldByName('id').AsInteger) or (DM.Use_Docs.FieldByName('stage_id').AsInteger<>DM.Stage.FieldByName('id').AsInteger)) and not(DM.Use_Docs.Eof) do DM.Use_Docs.Next; DocDesc.Text:=DM.Use_Docs.FieldByName('descript').AsString; DM.Employee.First; while (DM.Employee.FieldByName('id_em').AsInteger<>DM.Documents.FieldByName('reg_user').AsInteger) and not(DM.Employee.Eof) do DM.Employee.Next; DocAuth.Caption:=DM.Employee.FieldByName('l_name').AsString+' '+ DM.Employee.FieldByName('f_name').AsString+' '+ DM.Employee.FieldByName('m_name').AsString; DocEditBut.Enabled:=true; DocDelBut.Enabled:=true; DocName.Font.Color:=nameen; Label16.Font.Color:=propen; Label21.Font.Color:=propen; Label22.Font.Color:=propen;end else begin DocName.Caption:='Ни один документ не выбран!';DocDate.Caption:=''; DocDesc.Text:=''; DocAuth.Caption:=''; DocEditBut.Enabled:=false; DocDelBut.Enabled:=false; DocName.Font.Color:=namedis; Label16.Font.Color:=propdis; Label21.Font.Color:=propdis; Label22.Font.Color:=propdis; end;end; end;{$R *.dfm}//Обновление дереваprocedure TProcForm.TreeTimerTimer(Sender: TObject);begin curnames[1]:='Текущие задания'; curnames[2]:='На исполнении';curnames[3]:=''; curnames[4]:=''; curnames[5]:=''; RefreshTree(true); TreeTimer.Enabled:=false; end;//Выводспискаисполнителейprocedure TProcForm.StageEmplButClick(Sender: TObject); begin Timer2.Enabled:=false; ListProc; end;//Завершениезаданияprocedure TProcForm.ProcFinButClick(Sender: TObject); begin try if (u_id<>DM.Process.FieldByName('author').AsInteger) and (DM.Process.FieldByName('author').AsInteger<>1) thenbegin MessageDLG('Завершить или восстановить задание может только его автор.',mtInformation,[mbOk],0);exit; end; if proctype='active' then if MessageDLG('Выдействительнохотитезавершитьзадание?',mtConfirmation,[mbYes,mbNo],0)=mrYes then begin DM.Service.Close; DM.Service.SQL.Clear; DM.Service.SQL.Add('select * '+ 'from stage as st '+ 'where st.fin_date is null and '+ 'st.proc_id = '+inttostr(DM.Process.FieldByName('id').AsInteger)); DM.Service.ExecSQL; DM.Service.Open;if DM.Service.RecordCount <> 0 then if MessageDLG('В составе этого задания есть незавершенные поручения. Завершитьих?',mtConfirmation,[mbYes,mbNo],0)=mrNo then exit; DM.Fin_Proc.Parameters.ParamByName('@pr_id').Value:=DM.Process.FieldByName('id').AsInteger; DM.Fin_Proc.Parameters.ParamByName('@u_id').Value:=u_id; DM.Fin_Proc.ExecProc; DM.Process.Refresh; DM.Stage.Refresh; curnames[1]:='Завершенныезадания'; RefreshTree(true); exit; end; if proctype='fin' then

Список литературы

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. http://mszn27.ru Официальный сайт Министерства социальной защиты населения Хабаровского края.
2. http://www.mysitex.com/main/products/esrn/description.htm Электронный социальный регистр населения.
3. http://www.osp.ru Управление бизнес-процессами на основе технологии Workflow.
4. http://sharepoint.microsoft.com
5. http://staffware.com
6. http://www.intalev.ru
7. http://www.optima-workflow.ru
8. Visual studio 2010 [Электронный ресурс] // Майкрософт: Библиотека MSDN - [М];[2001] - Режим доступа: http://msdn.microsoft.com/ru-ru/library/ms123401.aspx
9. Бобровский, С.И. Delphi 7. Учебный курс. – СПб.: Питер, 2004. – 736 с.
10. Л.Н. Полякова Развернутое введение в SQL на основе стандарта SQL:1999 [Электронный ресурс] // Интуит - [М];[2003] - Режим доступа: http://www.intuit.ru/department/database/sql/
11. Маклаков С.В. BPwin и ERwin. CASE - средства разработки информационных систем – М.: Диалог-МИФИ, 2000. – 256 с.
12. Фаронов, В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2004. – 640с.
13. Фленов, М.Е. Библия Delphi. – СПб.: БХВ-Петербург, 2004. – 880с.
14. Ханс Ладани. SQL. Энциклопедия пользователя. – К.: “ДиаСофт”, 1998. – 624 с.
Очень похожие работы
Найти ещё больше
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00489
© Рефератбанк, 2002 - 2024