GetPost. Интерфейс работы с каталогом должностей Назад В начало Вперед

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

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

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

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

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

#component "C_STAFF"

//******************************************************************************
objInterface objGetPost;
end;
vipInterface GetPost implements objGetPost licensed(free);

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

interface GetPost 'Каталог должностей' EscClose, Cyan, DoAccept;
  show at (0,0,25,15);

create view

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

as select
  KatPosts.*

from
  KatPosts
;

parameters
  cTmp;

//==============================================================================
// winGetPostEdit
//==============================================================================

window winGetPostEdit 'Каталог должностей' (,, scGetPostEdit);
  show at (1,1,24,14);

browse brwGetPost;
  table KatPosts;

fields
  KatPosts.Name  #3'Наименование должности' : noProtect;
end;

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

handleEvent

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

end;

tableEvent
  table KatPosts

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

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

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

end;
end; // window winGetPostEdit

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

browse brwGetPost2 (,,scGetPostSelect);
  show at (1,1,24,14);
  table KatPosts;

fields
  KatPosts.Name  #3'Наименование должности' : protect;
end;

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

handleEvent

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

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

cmDone:
  cTmp := KatPosts.NRec;

end;
end.