на форме 2 значения:
ВыбНачПериода - я выбираю 22.01.2022
ВыбКонПериода - я выбираю 18.02.2022
в запросе у меня это описано таким условием:
Запрос = СоздатьОбъект("Запрос");
.........................
|Условие(отпуск > ВыбНачПериода);
|Условие(отпуск < ВыбКонПериода);
.........................
В 1с8 я б зробив так: Текст умови програмно сформував.
В циклі
1. Перевів введені дати на початок і кінець місяця. На кожній ітерації циклу добавляти рік до кожної з дат (в обидві сторони)
2. умови обєднати приблизно так: ГДЕ (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) - цей текст звичайно формується програмно в циклі . Де Д1 і Д2 на кожній ітерації вже конкретні визначені в циклі значення
3. В 1с7 незнаю чи подібним методом можна сформувати умову.
Тут скоріше потрібно формувати в циклі на кожен період повнісю текст запросу і обєднати ці запроси
p.s.
Ще можливо дуже спростити, якщо в запросі можна використати функцію (Месяц(Дата1). Поді просто порівняти номера місяців
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ДатаДок = Документ.НалоговаяНакладная.ДатаДок;
|НалоговаяНакладная = Документ.НалоговаяНакладная.ТекущийДокумент;
|Функция Счётчик = Счётчик();
|Группировка Месяц;
|"//}}ЗАПРОС
;
МаскаОтбораНачало= ДатаМесяц(ВыбНачПериода);
МаскаОтбораКонец= ДатаМесяц(ВыбКонПериода);
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Если (ДатаМесяц(Запрос.ДатаДок) = МаскаОтбораНачало) или (ДатаМесяц(Запрос.ДатаДок) = МаскаОтбораКонец) Тогда
Таб.ВывестиСекцию("Месяц");
КонецЕсли;
// Заполнение полей Месяц
КонецЦикла;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua