Организация потока данных для справки по исполнителям |
Поток данных StaffUsageStream для отчета StaffUsageRep создается в интерфейсе RepStaffUsage (см. "RepStaffUsage. Поток данных для отчета по исполнителям. "). Он содержит данные, относящиеся к отчету в целом (название организации и ФИО лица, утверждающего отчет), а также данные по исполнителям.
Данные по исполнителям относятся к компоненту "Ядро приложения". Для доступа к ним потребуется врапер к таблице PrjExecutors. Данный врапер добавлен в список разрабатываемых интерфейсов межкомпонентного взаимодействия.
Так как и список исполнителей и список отчетов берутся из базы данных, использован cross-tab отчет. Для того, чтобы каждый столбец такого отчета соответствовал одному проекту (код проекта выводится в заголовке), у всех исполнителей (table PersByDep потока данных) должны быть одинаковые списки проектов (table StaffUsage потока данных). Т.е. даже если сотрудник не участвует в проекте, запись об этом проекте все равно должна присутствовать в потоке данных по этому сотруднику.
В базе данных хранятся записи только по тем проектам, в которых исполнитель реально участвует. Поэтому создается таблица в памяти StaffUsage, содержащая полный список проектов для каждого исполнителя. Если исполнитель в проекте не участвует, поля QuantP и SummP этой таблицы равны 0. Записи таблицы отсортированы по исполнителям и по кодам проектов. Таким образом каждый столбец отчета содержит данные, относящиеся к одному проекту.
В отчете предусмотрена группировка данных по подразделениям. Для группировки необходимо соответствующим образом отсортировать поток данных. В базе данных сортировка сотрудников по подразделениям не предусмотрена. Поэтому была создана таблица в памяти PersByDep с нужной сортировкой исполнителей.