БД: панель "Работы проектов" - добавлена проверка наличия работы в буфере перед построением списка зависимых, реализована проверка доступных для отображения работ при формировании данных диаграммы Ганта

This commit is contained in:
Mikhail Chechnev 2024-01-31 15:03:59 +03:00
parent 30122efc4c
commit 93a73c85ae

View File

@ -4570,7 +4570,7 @@ text="Проверить, что для расчётных полей дата-
end if;
/* Инициализируем диаграмму Ганта */
RG := PKG_P8PANELS_VISUAL.TGANTT_MAKE(STITLE => STITLE,
NZOOM => PKG_P8PANELS_VISUAL.NGANTT_ZOOM_MONTH,
NZOOM => PKG_P8PANELS_VISUAL.NGANTT_ZOOM_MONTH,
BREAD_ONLY_DATES => BREAD_ONLY_DATES,
BREAD_ONLY_PROGRESS => true);
/* Добавим динамические атрибуты к задачам */
@ -4637,8 +4637,8 @@ text="Проверить, что для расчётных полей дата-
end if;
/* Определимся с форматированием */
if (C.STAGE = 1) then
/* Этапы всегда одинаково красим */
STASK_BG_COLOR := SBG_COLOR_STAGE;
/* Этапы всегда одинаково красим */
STASK_BG_COLOR := SBG_COLOR_STAGE;
else
/* Сбросим цвета от предыдущей работы (на всякий случай) */
STASK_BG_COLOR := null;
@ -4717,6 +4717,11 @@ text="Проверить, что для расчётных полей дата-
/* Добавляем работу в диаграмму */
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK(RGANTT => RG, RTASK => RGT);
end loop;
/* Проверим, что есть хоть что-то для отображения */
if (RG.RTASKS.COUNT = 0) then
P_EXCEPTION(0,
'Для проекта не определены этапы/работы, отображение которых допустимо в диаграмме (убедитесь, что для них в учётных данных заданы плановые даты начала/окончания).');
end if;
/* Формируем список */
COUT := PKG_P8PANELS_VISUAL.TGANTT_TO_XML(RGANTT => RG, NINCLUDE_DEF => NINCLUDE_DEF);
end JB_JOBS_LIST;
@ -5819,7 +5824,14 @@ text="Проверить, что для расчётных полей дата-
end loop;
end loop;
/* Обходим работы проекта ещё раз, для наполнения списка предшествующих в буфере балансировки */
for PJ in (select J.RN NRN from PROJECTJOB J where J.PRN = PRJ.NRN)
for PJ in (select J.RN NRN
from PROJECTJOB J
where J.PRN = PRJ.NRN
and exists (select null
from P8PNL_JB_JOBS JB
where JB.IDENT = NIDENT
and JB.STAGE = 0
and JB.SOURCE = J.RN))
loop
RH_JB_JOBS := JB_JOBS_GET_BY_SOURCE(NIDENT => NIDENT, NPRN => NJB_PRJCTS, NSOURCE => PJ.NRN);
/* Помещаем предшествующие работы в буфер балансировки */