Проблема
На текущий момент есть задача по учету рабочего времени на разных объектах подключенных к одной БД. Нам нужно в источник данных (данные по рабочему времени с детализацией) добавить реквизит dev_name (наименование устройства). Тогда мы получим корректный отчет.
Решение
Для того, чтобы добавить реквизиты dev_name необходимо создать пользовательский источник данных. В существующий источник данных их добавить не получится.
Вот подробная инструкция:
Создайте пользовательский отчет на основе "По рабочему времени с детализацией".
Выделите источник данных.
Справа в свойствах данных выберите из выпадающего списка "пользовательский", нажмите ввод.
Затем в свойствах запрос нажмите редактировать и вставьте запрос
WITH workers_name AS (
SELECT * FROM get_report_worker_info( CAST(:a_workers AS BIGINT[]) )
)
SELECT wt.*,
EXTRACT(DOW FROM wt.cur_date) AS day_num,
get_object_name(wt.id_dev_beg) as dev_beg_name,
get_object_name(wt.id_dev_end) as dev_end_name,
s.name AS sched_name,
ws.full_name,
ws.firm_name,
ws.dep_name,
ws.job_name,
ws.firm_id,
ws.dep_id,
ws.worker_num,
ws.custom
FROM get_workers_time(:d_date_beg, :d_date_end, :n_calc_plan_id, :a_workers, :c_locale, :b_skip_empty) wt
LEFT JOIN workers_name ws ON wt.worker_id = ws.obj_id
LEFT JOIN schedule s ON sched_id = s.id
ORDER BY ws.full_name, wt.worker_id, wt.cur_date, wt.cal_beg, wt.sort_beg NULLS FIRST;
нажмите ввод.
Далее в отчете добавляете колонку
В колонке указываете контроллер на вход
Потом добавляете еще колонку и подобным образом указываете контроллер на выход
$F{ds,dev_end_name}
сохраняете отчет.
Связанные статьи