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

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

Синтаксис:

lastworkdate(start\_date, no\_of\_workdays {, holiday})

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

Календарь, демонстрирующий использование функции `lastworkdate()`

Календарь, демонстрирующий использование функции `lastworkdate()`

Календарь, демонстрирующий использование функции `lastworkdate()`lastworkdate() ![Диаграмма, демонстрирующая календарь на месяц.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-diagram1.png)

Ограничения

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

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

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

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

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: 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).

Аргументы

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

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

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

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

Обзор

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

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

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

* Предшествующая загрузка, которая содержит функцию `lastworkdate()`, настроенную как поле `end_date` и определяющую запланированное окончание каждого проекта.

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

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

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

Результаты

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

* `id`
* `start_date`
* `effort`
* `end_date`

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

| id | start\_date | усилия | дата\_окончания |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 10.02.2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 10.08.2022 | 26 | 09/14/2022 |

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

В следующем календаре показаны даты начала и окончания для проекта 3, рабочие дни выделены зеленым.

Календарь с датами начала и окончания проекта 3

Календарь с датами начала и окончания проекта 3

Календарь с датами начала и окончания проекта 3 ![Диаграмма, демонстрирующая дату начала проекта 3 — 17 мая и последний рабочий день — 23 мая, то есть всего пять рабочих дней.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example1-diagram.png)

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

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

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

Обзор

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

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

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

* Предшествующая загрузка, которая содержит функцию `lastworkdate()`, настроенную как поле `end_date` и определяющую запланированное окончания каждого проекта.

Однако запланирован один государственный праздник 18 мая 2022 года. Функция `lastworkdate()` в предыдущей загрузке включает праздник в третьем аргументе, чтобы определить, когда планируется завершение каждого проекта.

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

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

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

Результаты

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

* `id`
* `start_date`
* `effort`
* `end_date`

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

| id | start\_date | усилия | дата\_окончания |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 10.02.2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/24/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 10.08.2022 | 26 | 09/14/2022 |

Один запланированный праздник передан в качестве третьего аргумента функции `lastworkdate()`. В результате, дата окончания проекта 3 сдвигается на один день вперед, так как праздник выпадает на один из рабочих дней до даты окончания.

В следующем календаре отображаются даты начала и окончания для проекта 3, а также показано, что из-за праздника дата окончания проекта переносится на один день.

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая ![Диаграмма с датой начала проекта 3 17 мая и государственным праздником 18 мая](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)

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

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

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

Обзор

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

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

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

* Предшествующая загрузка, которая содержит функцию `lastworkdate()`, настроенную как поле `end_date` и определяющую запланированное окончания каждого проекта.

Однако запланировано четыре праздничных дня в мае — 19, 20, 21 и 22. Функция `lastworkdate()` в предыдущей загрузке включает все праздничные дни в третьем аргументе, чтобы определить, когда планируется завершение каждого проекта.

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

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

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

Результаты

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

* `id`
* `start_date`
* `effort`
* `end_date`

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

| id | start\_date | усилия | дата\_окончания |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 10.02.2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/25/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 10.08.2022 | 26 | 09/14/2022 |

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

В следующем календаре отображаются даты начала и окончания для проекта 3, а также показано, что из-за праздников дата окончания проекта переносится на три дня.

Календарь с датами начала и окончания проекта 3 и праздниками с 19 по 22 мая

Календарь с датами начала и окончания проекта 3 и праздниками с 19 по 22 мая

Календарь с датами начала и окончания проекта 3 и праздниками с 19 по 22 мая ![Диаграмма, на которой показана дата начала проекта 3 17 мая, последний рабочий день 25 мая и четыре дополнительных праздничных дня, которые откладывают последний рабочий день на три дня — два праздничных дня выпадают на субботу и воскресенье.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example3-diagram.png)

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

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

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

Обзор

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

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

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

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

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

Результаты

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

* `id`
* `start_date`
* `effort`

Чтобы вычислить end\_date, создайте следующую меру:

* `=LastWorkDate(start_date,effort,'05/18/2022')`

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

| id | start\_date | усилия | =LastWorkDate(start\_date,effort,'05/18/2022') |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 10.02.2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 10.08.2022 | 26 | 09/14/2022 |

Один запланированный праздник вводится как мера в диаграмме. В результате, дата окончания проекта 3 сдвигается на один день вперед, так как праздник выпадает на один из рабочих дней до даты окончания.

В следующем календаре отображаются даты начала и окончания для проекта 3, а также показано, что из-за праздника дата окончания проекта переносится на один день.

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая

Календарь с датами начала и окончания проекта 3 и государственным праздником 18 мая ![Диаграмма с датой начала проекта 3 17 мая и государственным праздником 18 мая](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)