В месяце может быть от 4 до 6 недель, как программно определить номер недели в месяце (для даты), в запросе? Номер может варьироваться от 1 до 6.
Краткий ответ
| НЕДЕЛЯ(Документ.Дата) - НЕДЕЛЯ(НАЧАЛОПЕРИОДА(Документ.Дата, МЕСЯЦ)) + 1
Подробный ответ
Пример задачи, условия:
Есть регистр сведений — «Производственный календарь». Необходимо запросом вывести даты из данного регистра и номера недель в месяце.
Программный код запроса:
Запрос = Новый Запрос( "ВЫБРАТЬ | ДанныеПроизводственногоКалендаря.Дата КАК Дата, | НЕДЕЛЯ(ДанныеПроизводственногоКалендаря.Дата) - НЕДЕЛЯ(НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, МЕСЯЦ)) + 1 КАК НеделяНомерВМесяце |ИЗ | РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря |ГДЕ | МЕСЯЦ(ДанныеПроизводственногоКалендаря.Дата) = &НомерМесяца"); Запрос.УстановитьПараметр("НомерМесяца", Число(Объект.Месяц.Код)); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить("Дата " + Строка(Выборка.Дата)); Сообщить("Дата " + Строка(Выборка.НеделяНомерВМесяце)); КонецЦикла;
Данный запрос выводит все даты из календаря и номера недель от 1 до 6 с отбором по номеру месяца.
Как узнать номер недели в году — читайте в статье.
Оставить комментарий