---
title: Календарные графики
slug: bsp/календарные-графики
---


## ДатыПоКалендарю
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает даты, которые отличаются от указанной даты ДатаОт на количество дней,
// входящих в указанный график ГрафикРаботы.
//
// Параметры:
//   ГрафикРаботы	- СправочникСсылка.Календари
//	             	- СправочникСсылка.ПроизводственныеКалендари - график или
//                    производственный календарь, который необходимо использовать для расчета дат.
//   ДатаОт			- Дата - дата, от которой нужно рассчитать количество дней.
//   МассивДней		- Массив из Число - количество дней, на которые нужно увеличить дату начала.
//   РассчитыватьСледующуюДатуОтПредыдущей	- Булево - нужно ли рассчитывать следующую дату от предыдущей или
//											           все даты рассчитываются от переданной даты.
//   ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика.
//
// Возвращаемое значение:
//   Неопределено, Массив - массив дат, увеличенных на количество дней, входящих в график,
//	                        Если график ГрафикРаботы не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено.
//
Функция ДатыПоКалендарю(Знач ГрафикРаботы, Знач ДатаОт, Знач МассивДней, Знач РассчитыватьСледующуюДатуОтПредыдущей = Ложь, ВызыватьИсключение = Истина) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ДатыПоКалендарю(ГрафикРаботы, ДатаОт, МассивДней, РассчитыватьСледующуюДатуОтПредыдущей, ВызыватьИсключение);
```
</details>

## ДатаПоКалендарю
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает дату, которая отличается указанной даты ДатаОт на количество дней,
// входящих в указанный график или производственный календарь ГрафикРаботы.
//
// Параметры:
//   ГрафикРаботы	- СправочникСсылка.Календари
//	             	- СправочникСсылка.ПроизводственныеКалендари - график или
//                    производственный календарь, который необходимо использовать для расчета даты.
//   ДатаОт			- Дата - дата, от которой нужно рассчитать количество дней.
//   КоличествоДней	- Число - количество дней, на которые нужно увеличить дату начала.
//   ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика.
//
// Возвращаемое значение:
//   Дата, Неопределено - дата, увеличенная на количество дней, входящих в график.
//	                      Если выбранный график не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено.
//
Функция ДатаПоКалендарю(Знач ГрафикРаботы, Знач ДатаОт, Знач КоличествоДней, ВызыватьИсключение = Истина) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ДатаПоКалендарю(ГрафикРаботы, ДатаОт, КоличествоДней, ВызыватьИсключение);
```
</details>

## РазностьДатПоКалендарю
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Определяет количество дней, входящих в график, для указанного периода.
//
// Параметры:
//   ГрафикРаботы	- СправочникСсылка.Календари
//	             	- СправочникСсылка.ПроизводственныеКалендари - график или
//                    производственный календарь, который необходимо использовать для расчета дней.
//   ДатаНачала		- Дата - дата начала периода.
//   ДатаОкончания	- Дата - дата окончания периода.
//   ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика.
//
// Возвращаемое значение:
//   Число		- количество дней между датами начала и окончания.
//	              Если график ГрафикРаботы не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено.
//
Функция РазностьДатПоКалендарю(Знач ГрафикРаботы, Знач ДатаНачала, Знач ДатаОкончания, ВызыватьИсключение = Истина) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.РазностьДатПоКалендарю(ГрафикРаботы, ДатаНачала, ДатаОкончания, ВызыватьИсключение);
```
</details>

## ПараметрыПолученияБлижайшихРабочихДат
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Конструктор параметров получения ближайших рабочих дат по календарю.
//  См. БлижайшиеРабочиеДаты.
//
// Параметры:
//  ПроизводственныйКалендарь	 - СправочникСсылка.ПроизводственныеКалендари	 -
//  	если указан, то НерабочиеПериоды будет по умолчанию заполнен как Массив из описаний,
//  	полученных методом ПериодыНерабочихДней.
//
// Возвращаемое значение:
//  Структура:
//   * ПолучатьПредшествующие - Булево - способ получения ближайшей даты:
//       если Истина - определяются рабочие даты, предшествующие переданным в параметре НачальныеДаты,
//       если Ложь - получаются ближайшие рабочие даты, следующие за начальными датами.
//       Значение по умолчанию - Ложь:
//   * УчитыватьНерабочиеПериоды - Булево - определяет отношение к датам, выпадающим на периоды нерабочих дней календаря,
//       если Истина, даты, выпадающие на период нерабочих дней будут считаться нерабочими,
//       если Ложь, периоды нерабочих дней будут игнорироваться.
//       Значение по умолчанию - Истина:
//   * НерабочиеПериоды - Неопределено - уточняет периоды нерабочих дней, которые нужно учитывать,
//       можно установить Массив номеров периодов или описаний, полученных методом ПериодыНерабочихДней,
//       если Неопределено, будут учтены все периоды,
//       если заполнен параметр ПроизводственныйКалендарь, то все периоды этого календаря будут заполнены в НерабочиеПериоды.
//       Значение по умолчанию - Неопределено:
//   * ВызыватьИсключение - Булево - вызов исключения в случае не заполненного графика
//       если Истина, вызвать исключение, если график не заполнен.
//       если Ложь - даты, по которым не удалось определить ближайшую дату, будут просто пропущены.
//       Значение по умолчанию - Истина.
//   * ПолучатьДатыЕслиКалендарьНеЗаполнен - Булево - если Истина и календарь не заполнен, то даты будут получены из
//       данных заполнения календаря по умолчанию.
//
Функция ПараметрыПолученияБлижайшихРабочихДат(ПроизводственныйКалендарь = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ПараметрыПолученияБлижайшихРабочихДат(ПроизводственныйКалендарь);
```
</details>

## БлижайшиеРабочиеДаты
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Определяет для каждой даты дату ближайшего к ней рабочего дня.
//
// Параметры:
//  ПроизводственныйКалендарь	 - СправочникСсылка.ПроизводственныеКалендари	 - календарь, используемый для расчета.
//  НачальныеДаты				 - Массив из Дата - даты, относительно которых будет выполнен поиск ближайших.
//  ПараметрыПолучения			 - см. ПараметрыПолученияБлижайшихРабочихДат.
//
// Возвращаемое значение:
//  Соответствие из КлючИЗначение:
//   * Ключ - Дата - начальная дата,
//   * Значение - Дата - ближайшая к ней рабочая дата (если передана рабочая дата, то она же и возвращается).
//
Функция БлижайшиеРабочиеДаты(ПроизводственныйКалендарь, НачальныеДаты, ПараметрыПолучения = Неопределено) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.БлижайшиеРабочиеДаты(ПроизводственныйКалендарь, НачальныеДаты, ПараметрыПолучения);
```
</details>

## РасписанияРаботыНаПериод
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Составляет расписания работы для дат, включенных в указанные графики на указанный период.
// Если расписание на предпраздничный день не задано, то оно определяется так, как если бы этот день был бы рабочим.
// Необходимо учитывать, что для работы этой функции обязательно наличие подсистемы ГрафикиРаботы.
//
// Параметры:
//  Графики       - Массив - массив элементов типа СправочникСсылка.Календари, для которых составляются расписания.
//  ДатаНачала    - Дата   - дата начала периода, за который нужно составить расписания.
//  ДатаОкончания - Дата   - дата окончания периода.
//
// Возвращаемое значение:
//   ТаблицаЗначений:
//    * ГрафикРаботы    - СправочникСсылка.Календари - график работы.
//    * ДатаГрафика     - Дата - дата в графике работы ГрафикРаботы.
//    * ВремяНачала     - Дата - время начала работы в день ДатаГрафика.
//    * ВремяОкончания  - Дата - время окончания работы в день ДатаГрафика.
//
Функция РасписанияРаботыНаПериод(Графики, ДатаНачала, ДатаОкончания) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.РасписанияРаботыНаПериод(Графики, ДатаНачала, ДатаОкончания) 
```
</details>

## СоздатьВТРасписанияРаботыНаПериод
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Создает в менеджере временную таблицу ВТРасписанияРаботы с колонками, соответствующими возвращаемому значению
// функции РасписанияРаботыНаПериод.
// Необходимо учитывать, что для работы этой функции обязательно наличие подсистемы ГрафикиРаботы.
//
// Параметры:
//  МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - менеджер, в котором будет создана временная таблица.
//  Графики       - Массив - массив элементов типа СправочникСсылка.Календари, для которых составляются расписания.
//  ДатаНачала    - Дата   - дата начала периода, за который нужно составить расписания.
//  ДатаОкончания - Дата   - дата окончания периода.
//
Процедура СоздатьВТРасписанияРаботыНаПериод(МенеджерВременныхТаблиц, Графики, ДатаНачала, ДатаОкончания) Экспорт
```

Пример вызова
```bsl
КалендарныеГрафики.СоздатьВТРасписанияРаботыНаПериод(МенеджерВременныхТаблиц, Графики, ДатаНачала, ДатаОкончания) 
```
</details>

## ЗаполнитьПроизводственныйКалендарьВФорме
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Заполняет реквизит в форме, в том случае, если используется единственный производственный календарь.
//
// Параметры:
//  Форма         - ФормаКлиентскогоПриложения - форма, в которой требуется заполнить реквизит.
//  ПутьРеквизита - Строка           - путь к данным, например: "Объект.ПроизводственныйКалендарь".
//  КПП			  - Строка           - индивидуальный номер налогоплательщика (код причины постановки на учет) для определения региона.
//
Процедура ЗаполнитьПроизводственныйКалендарьВФорме(Форма, ПутьРеквизита, КПП = Неопределено) Экспорт
```

Пример вызова
```bsl
КалендарныеГрафики.ЗаполнитьПроизводственныйКалендарьВФорме(Форма, ПутьРеквизита, КПП);
```
</details>

## ОсновнойПроизводственныйКалендарь
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Возвращает основной производственный календарь, используемый в учете.
//
// Возвращаемое значение:
//   СправочникСсылка.ПроизводственныеКалендари, Неопределено - основной производственный календарь или
//                                                              Неопределено, в случае если он не обнаружен.
//
Функция ОсновнойПроизводственныйКалендарь() Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ОсновнойПроизводственныйКалендарь() 
```
</details>

## ПериодыНерабочихДней
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Готовит описание особых нерабочих периодов, установленных, например, законодательно.
// Такие периоды могут учитываться графиками, переопределяя заполнение по данным производственного календаря.
//
// Параметры:
//   ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - календарь, который является источником.
//   ПериодОтбор - СтандартныйПериод - временной интервал, в пределах которого нужно определить нерабочие периоды.
// Возвращаемое значение:
//   Массив - массив элементов типа Структура с полями:
//    * Номер     - Число - порядковый номер периода, может использоваться для идентификации.
//    * Период    - СтандартныйПериод - нерабочий период.
//    * Основание - Строка - нормативный акт, на основании которого установлен нерабочий период.
//    * Даты - Массив из Дата - даты, входящие в нерабочий период.
//    * Представление  - Строка - пользовательское представление периода.
//
Функция ПериодыНерабочихДней(ПроизводственныйКалендарь, ПериодОтбор) Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ПериодыНерабочихДней(ПроизводственныйКалендарь, ПериодОтбор) 
```
</details>

## ДатыБлижайшихРабочихДней
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">

<summary style="font-weight: bold; cursor: pointer;">Описание, пример вызова</summary>

```bsl

// Устарела. Следует использовать:
// - КалендарныеГрафики.БлижайшиеРабочиеДаты - для производственного календаря,
// - или ГрафикиРаботы.БлижайшиеДатыВключенныеВГрафик - для графика работы.
// Определяет для каждой даты дату ближайшего к ней рабочего дня.
//
// Параметры:
//    График	- СправочникСсылка.Календари
//	        	- СправочникСсылка.ПроизводственныеКалендари - график или
//                    производственный календарь, который необходимо использовать для расчета.
//    НачальныеДаты 				- Массив - массив дат (Дата).
//    ПолучатьПредшествующие		- Булево - способ получения ближайшей даты:
//										если Истина - определяются рабочие даты, предшествующие переданным в параметре НачальныеДаты,
//										если Ложь - получаются даты не ранее начальной даты.
//    ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика.
//    ИгнорироватьНезаполненностьГрафика - Булево - если Истина, то в любом случае будет возвращено соответствие.
//										Начальные даты, для которых не будет значений из-за незаполненности графика, включены не будут.
//
// Возвращаемое значение:
//    - Соответствие из КлючИЗначение:
//      * Ключ - Дата - дата из переданного массива
//      * Значение - Дата - ближайшая к ней рабочая дата (если передана рабочая дата, то она же и возвращается).
//							Если выбранный график не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено
//    - Неопределено
//
Функция ДатыБлижайшихРабочихДней(График, НачальныеДаты, ПолучатьПредшествующие = Ложь, ВызыватьИсключение = Истина, Экспорт
```

Пример вызова
```bsl
Результат = КалендарныеГрафики.ДатыБлижайшихРабочихДней(График, НачальныеДаты, ПолучатьПредшествующие, ВызыватьИсключение, );
```
</details>

---

© 2024, **ООО 1С-Софт**  
Все права защищены. Эта программа и сопроводительные материалы предоставляются  
в соответствии с условиями лицензии [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/legalcode).

---
