# networkdays Функция скрипта и диаграммы

Функция networkdays возвращает число рабочих дней (понедельник-пятница) между и включая значения, указанные в поле start\_date и end\_date, учитывая выходные, которые можно дополнительно задать в поле holiday.

Синтаксис:

networkdays (start\_date, end\_date [, holiday])

Возвращаемые типы данных: целое

Диаграмма календаря с диапазоном дат, возвращенным функцией networkdays

Диаграмма календаря с диапазоном дат, возвращенным функцией networkdays

Диаграмма календаря с диапазоном дат, возвращенным функцией networkdays ![ДОБАВЬТЕ ЗДЕСЬ ДРУГОЙ ТЕКСТ!!!!](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-general-calendar.png)

Функция `networkdays` имеет следующие ограничения:

* Отсутствует возможность изменять рабочие дни. Другими словами, не предусмотрено способа изменять функцию для регионов или ситуаций, когда рабочая неделя отличается от стандартных рабочих дней, с понедельника по пятницу.

* Параметр `holiday` должен быть постоянной строкой. Выражения не поддерживаются.

Аргументы

| Аргумент | Описание |
| --- | --- |
| start\_date | Начальная дата для вычисления. |
| end\_date | Конечная дата для вычисления. |
| holiday | Периоды выходных дней для исключения из рабочих дней. Праздник обозначен как постоянная строка даты. Можно указать несколько дат праздников, разделенных запятыми.<br><br>Пример: `  '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014' ` |

## Когда использовать networkdays

Функция `networkdays()` широко используется в составе выражения, когда пользователю требуется учитывать в расчетах количество рабочих дней между двумя датами. Например, если пользователю требуется вычислить совокупную заработную плату, заработанную сотрудником по договору PAYE (отчисление подоходного налога из зарплаты).

Примеры функции

| Пример | Результат |
| --- | --- |
| `networkdays ('12/19/2013', '01/07/2014')` | Возвращает 14. В этом примере выходные дни не учитываются. |
| `networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013')` | Возвращает 12. В этом примере учитываются выходные в периоде с 12/25/2013 по 12/26/2013. |
| `networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014')` | Возвращает 10. В этом примере учитываются двухдневные периоды выходных дней. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: MM/DD/YYYY. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами. Для получения дополнительной информации см. раздел [Изменение региональных настроек для приложений и скриптов](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Региональные настройки по умолчанию в приложениях основаны на профиле пользователя. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Cloud. Qlik Cloud будет отображаться на языке, который используется в браузере.

Если вы — разработчик приложений, то можете задать регион по умолчанию для создаваемых приложений. Для получения дополнительной информации см. раздел [Установка предпочтительных региональных настроек для создания приложений и скриптов в Аналитика Qlik Cloud](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Пример 1. Базовый пример

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий идентификаторы проектов, их даты начала и окончания. Эта информация загружается в таблицу под именем `Projects`.

* Поле даты было предоставлено в формате системной переменной `DateFormat` (MM/DD/YYYY).

* Создание дополнительного поля `net_work_days` для вычисления количества рабочих дней, необходимых для выполнения каждого проекта.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date) as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `id`

* `start_date`

* `end_date`

* `net_work_days`

Результирующая таблица

| id | дата\_начала | дата\_окончания | чистые\_рабочие\_дни |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 18.01.2022 | 12 |
| 2 | 10.02.2022 | 17.02.2022 | 6 |
| 3 | 17.05.2022 | 05.07.2022 | 36 |
| 4 | 01.06.2022 | 12.06.2022 | 8 |
| 5 | 10.08.2022 | 26.08.2022 | 13 |

Так как на этот период не запланированы праздники (они бы указывались в третьем аргументе функции `networkdays()`), функция вычитает `start_date` из `end_date`, а также выходные дни, чтобы вычислить количество рабочих дней между двумя датами.

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (без праздников)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (без праздников)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (без праздников) ![Диаграмма календаря на август, где отображаются рабочие дни проекта с идентификатором 5 из набора данных. Здесь выделены все рабочие дни (понедельник-пятница) с 10 по 26 августа 2022 года, субботы и воскресенья исключены.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-basic.png)

Приведенный выше календарь наглядно показывает проект с `id` = 5. Проект 5 начинается в среду, 10 августа 2022 года, и заканчивается 26 августа 2022 года. Так как все субботы и воскресенья игнорируются, между этими двумя датами насчитывается 13 рабочих дней.

## Пример 2. Один праздник

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий, что и в предыдущем примере.

* Поле даты было предоставлено в формате системной переменной `DateFormat` (MM/DD/YYYY).

* Создание дополнительного поля `net_work_days` для вычисления количества рабочих дней, необходимых для выполнения каждого проекта.

В этом примере на 19 августа 2022 года запланирован один праздничный день.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date,'08/19/2022') as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `id`

* `start_date`

* `end_date`

* `net_work_days`

Результирующая таблица

| id | дата\_начала | дата\_окончания | чистые\_рабочие\_дни |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 18.01.2022 | 12 |
| 2 | 10.02.2022 | 17.02.2022 | 6 |
| 3 | 17.05.2022 | 05.07.2022 | 36 |
| 4 | 01.06.2022 | 12.06.2022 | 8 |
| 5 | 10.08.2022 | 26.08.2022 | 12 |

Один запланированный праздник передан в качестве третьего аргумента функции `networkdays()`.

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (один праздник)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (один праздник)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (один праздник) ![Диаграмма календаря на август, где отображаются рабочие дни проекта с идентификатором 5 из набора данных. Здесь выделены все рабочие дни (понедельник-пятница) с 10 по 26 августа 2022 года, за исключением 19 августа 2022 года (праздник).](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-single-holiday.png)

Приведенный выше календарь наглядно показывает проект 5, демонстрируя эту корректировку с учетом праздника. Этот праздник запланирован в период выполнения проекта 5 — в пятницу, 19 августа 2022 года. В результате этого общее значение `net_work_days` для проекта 5 уменьшается на один день: с 13 до 12 дней.

## Пример 3. Несколько праздников

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий из первого примера.

* Поле даты было предоставлено в формате системной переменной `DateFormat` (MM/DD/YYYY).

* Создание дополнительного поля `net_work_days` для вычисления количества рабочих дней, необходимых для выполнения каждого проекта.

Однако в этом примере запланировано четыре праздничных дня с 18 по 21 августа 2022 года.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date,'08/18/2022','08/19/2022','08/20/2022','08/21/2022') as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `id`

* `start_date`

* `end_date`

* `net_work_days`

Результирующая таблица

| id | дата\_начала | дата\_окончания | чистые\_рабочие\_дни |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 18.01.2022 | 12 |
| 2 | 10.02.2022 | 17.02.2022 | 6 |
| 3 | 17.05.2022 | 05.07.2022 | 36 |
| 4 | 01.06.2022 | 12.06.2022 | 8 |
| 5 | 10.08.2022 | 08.26.2022 | 11 |

Четыре запланированных праздничных дня вводятся в виде списка, разделенного запятыми, начиная с третьего аргумента в функции `networkdays()`.

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (несколько праздников)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (несколько праздников)

Диаграмма календаря, в котором выделены рабочие дни для проекта 5 (несколько праздников) ![Диаграмма календаря на август, где отображаются рабочие дни проекта с идентификатором 5 из набора данных. Здесь выделены все рабочие дни (понедельник-пятница) с 10 по 26 августа 2022 года, за исключением 18 и 19 августа 2022 года (праздники).](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-multiple-holidays.png)

Приведенный выше календарь наглядно показывает проект 5, демонстрируя эту корректировку с учетом этих праздничных дней. Эти запланированные праздники попадают в период выполнения проекта 5, два из них выпадают на четверг и пятницу. В результате этого общее значение `net_work_days` для проекта 5 уменьшается на два дня: с 13 до 11 дней.

## Пример 4. Один праздник

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Используется тот же набор данных и сценарий из первого примера.

* Поле даты было предоставлено в формате системной переменной DateFormat (MM/DD/YYYY).

На 19 августа 2022 года запланирован один праздничный день.

Однако в этом примере в приложение загружается неизмененный набор данных. Значение поля net\_work\_days вычисляется с использованием меры в объекте диаграммы.

Скрипт загрузки

```
SET DateFormat='MM/DD/YYYY';

Projects:
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* id

* start\_date

* end\_date

Создайте следующую меру:

= networkdays(start\_date,end\_date,’08/19/2022’)

Результирующая таблица

| id | дата\_начала | дата\_окончания | чистые\_рабочие\_дни |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 18.01.2022 | 12 |
| 2 | 10.02.2022 | 17.02.2022 | 6 |
| 3 | 17.05.2022 | 05.07.2022 | 36 |
| 4 | 01.06.2022 | 12.06.2022 | 8 |
| 5 | 10.08.2022 | 26.08.2022 | 12 |

Один запланированный праздник передан в качестве третьего аргумента функции networkdays().

Диаграмма календаря, демонстрирующая полезные рабочие дни с учетом одного праздника (объект диаграммы)

Диаграмма календаря, демонстрирующая полезные рабочие дни с учетом одного праздника (объект диаграммы)

Диаграмма календаря, демонстрирующая полезные рабочие дни с учетом одного праздника (объект диаграммы) ![Диаграмма календаря на август, где отображаются рабочие дни проекта с идентификатором 5 из набора данных. Здесь выделены все рабочие дни (понедельник-пятница) с 10 по 26 августа 2022 года, за исключением 19 августа 2022 года (праздник).](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-chart-single-holiday.png)

Приведенный выше календарь наглядно показывает проект 5, демонстрируя эту корректировку с учетом праздника. Этот праздник запланирован в период выполнения проекта 5 — в пятницу, 19 августа 2022 года. В результате этого общее значение net\_work\_days для проекта 5 уменьшается на один день: с 13 до 12 дней.