С чего начнем. Наверное, с теории.
Первым делом у нас из входящих данных есть только НачалоПериода и КонецПериода. Соответственно нам нужно с чем-то соединять эти данные. В любой типовой конфигурации более рентабельно было бы использовать Регл.Календарь. Но не тут-то было. Конфа совсем не типовая... Поэтому запрос писался для "вакуума".
* Благодаря товарищу ildarovich, нашлось более лаконичное решение, за что отдельное спасибо. С помощью разности дат с периодом "неделя":
ВЫБРАТЬ
Дни.ДеньНедели,
РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -Дни.ДеньНедели), НЕДЕЛЯ)
, НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, 1 - Дни.ДеньНедели), НЕДЕЛЯ), ДЕНЬ) / 7 КАК КоличествоДней
ИЗ
(ВЫБРАТЬ 1 КАК ДеньНедели ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7) КАК Дни
В результате мы получили таблицу вида:
(параметры:
НачалоПериода = 01.03.2016;
КонецПериода = 31.03.2016)
ДеньНедели | КоличествоДней |
1 | 4 |
2 | 5 |
3 | 5 |
4 | 5 |
5 | 4 |
6 | 4 |
7 | 4 |
upd. 14.03.2016. Добавил обработку-пример