GetPerson. Интерфейс работы с картотекой исполнителей Назад В начало Вперед

Файл: Example\Src\VIP\Staff\GetPerson.vip

Издание 01.2007. Добавлены директивы документирования.

Издание 01.2006. Исправлена ошибка: событие cmInsert, возникавшее в главном окне (окно выбора) по F7, не передавалось в окно редактирования winGetPersonEdit. Вместо этого оно обрабатывалось в главном окне после закрытия окна winGetPersonEdit. Добавлена переменная bInsMode - режим открытия окна редактирования. Значение переменной устанавливается в главном окне. Обработка cmInsert в главном окне подавляется. В окне winGetPersonEdit событие cmInsert дублируется в обработчике cmInit.

Издание 01.2006. Убрана панель (как лишняя сущность). Соответствующие табличные события вынесены в обработчик tableEvent.

//******************************************************************************
//													(c) корпорация Галактика
// Демопроект 1.0 - Управление персоналом
// Интерфейс работы с картотекой сотрудников (выбор, ввод и корректировка)
//******************************************************************************

#component "C_STAFF"

//******************************************************************************
objInterface objGetPerson;
end;
vipInterface GetPerson implements objGetPerson licensed(free);

//******************************************************************************
#doc
 Интерфейс работы с картотекой сотрудников (выбор, ввод и корректировка).
#end

interface GetPerson 'Картотека исполнителей' EscClose, Cyan, DoAccept;
  show at (0,0,79,20);

create view

var
  bInsMode : boolean;  // режим открытия окна winKatMaterialsEdit: true - добавить запись, false - редактировать
  cTmp : comp;

as select
  KatPersons.*

from
  KatPersons

;

parameters
  cTmp;

//==============================================================================
// winGetPersonEdit
//==============================================================================

window winGetPersonEdit 'Картотека исполнителей' (,, scGetPersonEdit);
  show at (1,1,78,18);

browse brwGetPerson;
  table KatPersons;

fields
  KatPersons.LastName	#3'Фамилия'  : [15], noProtect;
  KatPersons.FirstName   #3'Имя'	: [10], noProtect;
  KatPersons.MiddleName  #3'Отчество' : [15], noProtect;

  KatPersons.cDepartment->Name #3'Подразделение',
	(,,scGetPersonEditPick)		 : [10], pickButton, protect;

  KatPersons.cPost->Name #3'Должность'
			(,,scGetPersonEditPick)   : [10], pickButton, protect;

  KatPersons.TaxRate	 #3'Оклад'	:  [5], noProtect;
  KatPersons.Raise	 #3'Доплаты'  :  [5], noProtect;

end; // browse brwStages;

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

handleEvent

cmInit:
  // если вошли по cmInsert, то в этом окне ее надо продублировать
  if (bInsMode)
	PutCommand (cmInsert);

end;

tableEvent
  table KatPersons

cmPick:
{
  if(curField = #KatPersons_cDepartment_KatDeps.Name)
  {
	var cTmp : comp;
	if (RunInterface(GetDepartment, cTmp) = cmDefault)
	set KatPersons.cDepartment := cTmp;
  }
  else if(curField = #KatPersons_cPost_KatPosts.Name)
  {
	var cTmp : comp;
	if (RunInterface(GetPost, cTmp) = cmDefault)
	set KatPersons.cPost := cTmp;
  }
}

cmUpdateRecord:
  if (update current KatPersons <> tsOK)
	message('Ошибка при выполнении операции.' + chr(13) +
			'Повторите ввод данных.', OkButton+Error);

cmInsertRecord:
  if (insert current KatPersons <> tsOK)
	message('Ошибка при выполнении операции.' + chr(13) +
			'Повторите ввод данных.', OkButton+Error);

cmDeleteRecord:
  if (delete current KatPersons <> tsOK)
	message('Ошибка при выполнении операции.' + chr(13) +
			'Повторите удаление данных.', OkButton+Error);
end;
end; // window winGetPersonEdit

//==============================================================================
// Main Window 
//==============================================================================

browse brwGetPerson2 (,,scGetPersonSelect);
  show at (1,1,78,19);
  table KatPersons;

fields
  KatPersons.LastName		#3'Фамилия'	 : [15], protect;
  KatPersons.FirstName		 #3'Имя'		 : [10], protect;
  KatPersons.MiddleName		#3'Отчество'	: [15], protect;
  KatPersons.cDepartment->Name #3'Подразделение' : [15], protect;
  KatPersons.cPost->Name	 #3'Должность'	 : [15], protect;
end;

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

handleEvent

cmInsert:
{
  bInsMode := true; // открыть окно в режиме добавления записи
  runWindow(winGetPersonEdit);
  stop; // заблокировать стандартную обработку cmInsert в этом окне
}

cmPersonEdit:
{
  bInsMode := false; // открыть окно в режиме редактирования
  runWindow(winGetPersonEdit);
}

cmDone:
  cTmp := KatPersons.NRec;

end;

end.