Главная О компании Новости Обучение Обратная связь Форум
сервер контра

ABACUS Financial ABACUS Builder ABACUS Professional ABACUS WEB

Компонент "Дерево". Последовательность выполнения компонентов ABACUS Builder (AB7) - инструмент разработки корпоративных информационных систем на базе СУБД Oracle

В этой статье мы рассмотрим отображение иерархической структуры данных в виде дерева.

Создадим документ, отражающий в виде дерева список предприятий и отделов предприятий некоего холдинга.

Как всегда, начинаем с учетной схемы. Наша учетная схема не отличается от схемы, приведенной в предыдущей статье (Рис. 1).

Рис. 1. Инсталляция документа

Разместим компонент "Дерево" TREE (отображаемый) и на вкладке свойств "Дополнительные" добавим пункт (кнопка с синим плюсом) пункт "Отдел предприятия", указав категорию 12004, затем "добавим сверху" (кнопка с плюсом и стрелочкой вверху) категорию 12003 "Предприятие". Атрибуты можно не указывать, если в категориях определен атрибут 2 "Название" как главный. Разместим компонент "Таблица" TABLE, в таблице три размножаемых компонента "Вычисляемое поле" FIO, TAB_N, POS для отображения фамилии, имени, отчества, табельного номера и должности сотрудников соответственно. Разместим текстовые заголовки (компоненты "Текст") у компонентов TREE и TABLE, компоненты "Локатор" и "ComboBox" и текстовые заголовки как показано на рис. 2.

Рис. 2. Инсталляция документа

Теперь необходимо в компоненте SELECT написать формулу для заполнения компонента TREE: %TREE:=aql([12003*]); В этой формуле выбираются все объекты категории 12003 "Предприятие". Отделы предприятия будут отображаться автоматически. Следует помнить, что в списке компонентов SELECT должен стоять выше TREE, иначе информация в дереве не будет отображаться. (Рис. 3).

Рис. 3. Список компонентов

Теперь осталось реализовать отображение списка сотрудников в таблице TABLE отдела, выбранного в дереве. Для компонента TREE добавим формулу "Select Changed". Эта формула вызывается в случае изменения пользователем выделенного элемента дерева.

DECLARE
ob AS COV
{
ob:=%TREE.Selected();
--Получаем выделенные объект
if ob.Cat()=12004 then {
--Если это объект категории 12004 (Отдел предприятия), то отображаем:
	%TABLE:=aql(SELECT
	#^12005.1002,
--Атрибут 1002 (Ф.И.О.) сотрудника
	#^12005.1003,
-- Атрибут 1003 (Табельный номер сотрудника
	#^12005:1830 where(#^1839.10002=2)^184.2
-/Атрибут 2 (Название) справочника должностей
Для этого находим все приказы сотрудника, из них выбираем приказы о назначении
на должность (атрибут 10002 категории 1839 равен 2).
/-
	FROM
	ob:1830 order by 1,2
--Выбираем все приказы "привязанные снизу" к выделенному отделу
	);
%CALC:=aql(ob:1830^12005 count);
--В компонент CALC помещаем количество найденных объектов (сотрудников отдела)
}
}

Работающее приложение выглядит следующим образом. (Рис. 4).

Рис. 4. Работающее приложение


Первой электрической машинкой был американский "Электроматик" выпуска 1935 г. Затем последовали "Эрики", "Оптимы", "Ятрани", которые практически повсеместно вытеснены персональными компьютерами. Из истории создания ККМ, арифмометров и счетных машин
ABACUS Builder. Cостав инструмента разработки

  © Компания "ОМЕГА"   www.omega.ru   (495) 234-42-32,  (495) 727-43-50