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

Файл: Example\Src\VIP\Sklad\KatMaterials.vip

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

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

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

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

#component "C_SKLAD"

//******************************************************************************
objInterface objPickMaterials;
end;
vipInterface PickMaterials implements objPickMaterials licensed(free);

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

interface PickMaterials 'Каталог материалов' EscClose, Cyan, DoAccept;
  show at (0,0,79,20);

create view

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

as select
  KatMaterials.*

from
  KatMaterials
;

parameters
  cTmp;

//==============================================================================
// winKatMaterialsEdit
//==============================================================================

window winKatMaterialsEdit 'Каталог материалов' (,, scKatMaterialsEdit);
  show at (1,1,78,18);

browse brwKatMaterials;
  table KatMaterials;

fields

  KatMaterials.Name  #3'Наименование материала'
	('Наименование материала')				: [40], noProtect;

  KatMaterials.EI	#3'Ед.изм.'
	('Единица измерения')					 : [10], noProtect;

  KatMaterials.Price #3'Цена'
	('Цена за единицу')						 : [10], noProtect;

end; // browse brwStages;

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

handleEvent

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

end; // handleEvent

tableEvent
  table KatMaterials

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

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

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

end; // tableEvent
end; // window winKatMaterialsEdit

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

browse brwKatMaterials2 (,,scKatMaterialsSelect);
  show at (1,1,78,19);
  table KatMaterials;

fields

  KatMaterials.Name  #3'Наименование материала'
	('Наименование материала')				: [40], protect;

  KatMaterials.EI	#3'Ед.изм.'
	('Единица измерения')					 : [10], protect;

  KatMaterials.Price #3'Цена'
	('Цена за единицу')					 : [10], protect;

end;

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

handleEvent

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

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

cmDone:
  cTmp := KatMaterials.NRec;

end; // handleEvent
end.