Добрый день!
Есть документ, в котором прописывается период с - по. И надо вывести в отчет период и количество дней в этом периоде, но за вычетом праздников. Как это можно сделать? Сейчас такой запрос

```1c
    ВЫБРАТЬ
    Документ.Сотрудник,
    Документ.ДатаНачалаПериода,
    Документ.ДатаОкончанияПериода
    ИЗ
    Документ.Документ КАК Документ
    ГДЕ
    Документ.ДатаНачалаПериодаМЕЖДУ &ДатаНачала И &ДатаОкончания
```

Спасибо!
---
Яволь, натурлих + Вид Дня (Рабочий + Предпраздничный)
---
Если есть производственный календарь или его аналог - обращением к нему за период между &ДатаНачала И &ДатаОкончания
Ели нет, то - никак.
---
Производственный календарь есть. Ок, я могу получить все даты из производсвенного календаря. Но как разложить период из документа по дням?
---
через производственный календарь, там каждый день описан.
---
Да, но в документе не все дни есть. Только начало периода и окончания.
Т.е например есть документ, в нем есть такие данные - Дата начала - 01.10.2019 и дата окончания 10.01.2019. Надо как то получить все даты - 01, 02, 03...10. И тогда да, уже можно соединить с календарем, отобрать по типу дня - не праздники и получить количество дней.
Затык пока в части - "получить все даты из периода в документе."
---
Да вы опять прикалываетесь что ли? :)
У производственного календаря каждый день описан, вам не нужно каждый день еще и в документе при этом иметь.
---
Да вообще ни разу не прикалываюсь! :-)
Спасибо, попробую.
---
берется таблица с датами к которым надо добавлять
группируется календарь с нужными отборами дней
25 не помню что это
а 10 сколько надо рабочих дней

ВЫБРАТЬ
 тАвто.ДатаОкончания КАК Дата
ПОМЕСТИТЬ Даты
ИЗ
 тАвто КАК тАвто
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.зпКалендарьПроизводственный КАК зпКалендарьПроизводственный
  ПО (НАЧАЛОПЕРИОДА(тАвто.ДатаОкончания, ДЕНЬ) = зпКалендарьПроизводственный.Дата)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 Даты.Дата,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ зпКалендарьПроизводственный.Дата) КАК КоличествоРабДней,
 МАКСИМУМ(зпКалендарьПроизводственный.Дата) КАК ДатаКалендаря,
 зпКалендарьПроизводственный1.Дата КАК ДатаКалендаряДляГруппировки
ПОМЕСТИТЬ РабочиеДаты
ИЗ
 РегистрСведений.зпКалендарьПроизводственный КАК зпКалендарьПроизводственный
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты
  ПО (Даты.Дата <= зпКалендарьПроизводственный.Дата)
   И (ДОБАВИТЬКДАТЕ(Даты.Дата, ДЕНЬ, 25) > зпКалендарьПроизводственный.Дата)
  ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.зпКалендарьПроизводственный КАК зпКалендарьПроизводственный1
  ПО зпКалендарьПроизводственный.Дата <= зпКалендарьПроизводственный1.Дата
ГДЕ
 (зпКалендарьПроизводственный.ВидДня = ЗНАЧЕНИЕ(Перечисление.зпВидыДня.Рабочий)
   ИЛИ зпКалендарьПроизводственный.ВидДня = ЗНАЧЕНИЕ(Перечисление.зпВидыДня.Предпраздничный))

СГРУППИРОВАТЬ ПО
 Даты.Дата,
 зпКалендарьПроизводственный1.Дата

ИМЕЮЩИЕ
 МАКСИМУМ(зпКалендарьПроизводственный.Дата) = зпКалендарьПроизводственный1.Дата И
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ зпКалендарьПроизводственный.Дата) = 10
;
---
первоисточник
https://helpf.pro/faq/view/1727.html
---
Что, так не работает?
ВЫБРАТЬ
 КОЛИЧЕСТВО(ДанныеПроизводственногоКалендаря.Дата) КАК КоличествоДнейЗаВыбранныйПериод
ИЗ
 РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
 ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
 И (ДанныеПроизводственногоКалендаря.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий))
---
В этом случае просто выведется количество дней в выбранном периоде отчета. А нужно вывести количество рабочих дней по каждому документу. В котором период не равен периоду отчета.
Т.е. например формируем отчет за сентябрь. В нем 10 документов.
В первом документе дата с 2 по 6. Получается 5 дней.
Во втором 9-11. Количество дней 3.
И если бы были в эти дни праздники, то дней было бы меньше.
---
В документе начальная и конечная даты, соединяйте по ним производственный календарь, получайте количество строк по условиям соединения таблиц, дальше группируйте по документу.
---
Таким образом соединять?

```1c
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    ПО Документ.ДатаНачала <= РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
    И Документ.ДатаОкончания >= РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
```
---
Яволь, натурлих + Вид Дня (Рабочий + Предпраздничный)