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

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

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

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

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

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

#component "C_STAFF"

//******************************************************************************
objInterface objGetDepartment;
end;
vipInterface GetDepartment implements objGetDepartment licensed(free);

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

interface GetDepartment 'Каталог подразделений' escClose, cyan, doAccept;
  show at (0,0,25,15);

create view

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

as select
  KatDeps.*

from
  KatDeps
;

parameters
  cTmp;

//==============================================================================
// winGetDepartmentEdit
//==============================================================================

window winGetDepartmentEdit 'Каталог подразделений' (,, scGetDepartmentEdit);
  show at (1,1,24,14);

browse brwGetDepartment;
  table KatDeps;

fields
  KatDeps.Name  #3'Подразделение' : [20], noProtect;

end;

handleEvent

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

end;

tableEvent
  table KatDeps

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

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

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

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

browse brwGetDepartment2 (,,scGetDepartmentSelect);
  show at (1,1,24,14);
  table KatDeps;

fields
  KatDeps.Name  #3'Подразделение' : [20], protect;

end; // browse brwGetDepartment2;

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

handleEvent

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

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

cmDone:
  cTmp := KatDeps.NRec;

end;
end.