Реальный пример логической таблицы Назад В начало Вперед

В работающем примере необходимо учитывать то факт, что задействованные объекты (таблицы) относятся к разным областям прикладной деятельности и, соответственно, к разным компонентам.

В рассматриваемом примере исполнители выбираются из числа сотрудников предприятия. Следовательно, эти данные относятся к подсистеме управления персоналом.

Таблица "Исполнители" в соответствии с проектными решениями выделена в подсистему "Ядро приложения". Подробнее см. раздел "Объектный интерфейс ресурса. ".

Поэтому вместо физических таблиц используются табличные объекты KatPersons и PrjExecutors, что помечается ключевым словом objref:

from
  objref KatPersons, objref PrjExecutors, Projects,
  synonym Projects Stages

Табличный объект PrjExecutors просто отображает таблицу за пределы своего компонента. Табличный объект KatPersons содержит сводную информацию по сотруднику. Фамилия, имя и отчество заменяются одной строкой "Фамилия и инициалы". Ссылки на каталоги должностей и подразделений разрешаются внутри объекта.

В результате пользователь табличного объекта KatPersons непосредственно получает названия подразделения и должности сотрудника: KatPersons.Department и KatPersons.Post.

Таблица "Исполнители" имеет два служебных поля, которые в нашем примере не учитываются. Чтобы отсечь лишние записи использованы фильтры по этим полям:

  and (1 = PrjExecutors.MasterCode)
  and (0 = PrjExecutors.Status)

Пример

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

#include IKatPersons.vih
#include IPrjExecutors.vih

#component "C_PRJMNG"

//******************************************************************************

interface LotDemo 'Описание логической таблицы' EscClose, Cyan;
  show at (0,0,79,25);

create view

as select
  KatPersons.FIO, KatPersons.Department, KatPersons.Post,
  Projects.Name, Stages.Name

from
  objref KatPersons, objref PrjExecutors, Projects,
  synonym Projects Stages

where
((
	root				 == KatPersons.FIO
  and (KatPersons.FIO <> 'Смирнов Ф.В.')
  and KatPersons.NRec		== PrjExecutors.cEmployee (noIndex)
  and (1 = PrjExecutors.MasterCode)
  and (0 = PrjExecutors.Status)
  and PrjExecutors.cMaster   == Stages.NRec
  and Stages.cProject		== Projects.NRec
))
;

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

browse brwPersons 'Исполнители';
  show at (1,1,78,10);
  table KatPersons;

fields
  KatPersons.FIO		#3'ФИО'		 : [15], protect;
  KatPersons.Department #3'Подразделение' : [15], protect;
  KatPersons.Post	 #3'Должность'	 : [15], protect;
end;

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

browse brwProj 'Проекты';
  show at (1,11,78);
  table PrjExecutors;

fields
  Stages.Name   #3'Этап'	: [30], protect;
  Projects.Name #3'Проект'  : [30], protect;
end;
end.