Skip to content

Вычислить количество рабочих дней между двумя - Справка FineReport | Разработка отчетов | Отчеты | Учебные пособия

Расчет количества рабочих дней в течение двухдневного периода

1. Обзор

1.1 Ожидаемые эффекты

В компанию пришла группа стажеров, которым платят в зависимости от количества отработанных ими дней. Мы надеемся, что сможем вычислить, сколько рабочих дней они отработали в общей сложности, используя "время начала" и "время окончания".

21.png

1.2 Идеи для реализации

Количество рабочих дней между двумя датами можно получить, отметив даты и вычтя количество отметок для обеих дат.

2. Режим работы

Скачать примерные данные для этой статьи: sample data.rar

2.1 Таблица сроков обработки

(1) Содержание таблицы дат отформатировано так, как показано в таблице ниже:

Если время отпуска пользователя отличается от указанного в таблице, его можно изменить.

23.png

2) Добавьте новую тему анализа "Рассчитать количество рабочих дней между двумя днями", чтобы добавить "Таблицу дат" и переименовать "Таблицу дат" в "Таблицу праздничных маркеров". Как показано на рисунке ниже:

3) Добавьте новый столбец с формулой, чтобы отмечать даты знаками 0 и 1. Праздничные даты отмечаются как 0, а непраздничные - как 1. Как показано на рисунке ниже:

(4) Добавьте новый итоговый столбец, столбец "0, 1 отметка", в порядке возрастания даты накопления. Как показано на рисунке ниже:

Таблица накопления показана на рисунке ниже. Количество рабочих дней между двумя датами можно рассчитать непосредственно из поля "Маркер накопления".

Например, количество рабочих дней между 2011-03-14 и 2011-03-08 просто вычитается из соответствующего "Значения маркера накопления": (45-41) + 1 = 5 дней.

Особый случай: если время начала - праздничный день, например, количество рабочих дней между 2011-03-05 (праздничный день) и 2011-03-09, достаточно, чтобы 42-39=3.

29.png

2.2 Расчет количества рабочих дней

1) Добавьте данные "Таблица персонала", поля которой по умолчанию выбраны полностью. Как показано на рисунке ниже:

2) Добавьте объединение слева и справа. Выберите поля "Календарь, праздник или нет, и кумулятивная маркировка" в "Таблице маркировки праздников", а также выберите "Время начала" и "Календарь" в качестве основы для слияния. Как показано на рисунке ниже:

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

3) Измените поле "Маркер накопления" на "Маркер времени начала" и измените "Является ли это праздником" на "Является ли время начала праздником". Как показано на рисунке ниже:

4) Аналогично выполните объединение слева направо. Выберите поле "Календарь" и поле "Маркер накопления" в "Таблице маркеров праздников" и выберите "Время окончания" и "Календарь" в качестве основы для слияния, как показано на рисунке ниже:

На этом шаге время окончания соотносится с их маркерами.

5) Переименуйте "Holiday Marker Table - Accumulation Marker" в "End Time Marker".

6) Добавьте новый столбец для расчета количества рабочих дней между временем начала и временем окончания в двух случаях. Запись в виде функции показана ниже:

  • Время начала отпуска: отметка времени окончания - отметка времени начала;
  • Время начала - рабочий день: отметка времени окончания - отметка времени начала +1;

7) Сохраните и обновите данные.

2.3 Предварительный просмотр

Количество рассчитанных рабочих дней показано ниже. Например, Джеймс проходил практику в течение 43 рабочих дней с 2016-08-31 по 2016-07-04.