Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выбрать период по месяцу
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
4andriy
на форме 2 значения:
ВыбНачПериода - я выбираю 22.01.2022
ВыбКонПериода - я выбираю 18.02.2022

в запросе у меня это описано таким условием:

Запрос = СоздатьОбъект("Запрос");
.........................
|Условие(отпуск > ВыбНачПериода);
|Условие(отпуск < ВыбКонПериода);
.........................


все работает. но мне нужно что-бы в запросе учитывались все значения где месяц с 01 по 02, и что-бы дату и год не учитывались
тоесть если я выбрал 22.01.2022 до 18.02.2022 в результате я хочу увидеть

01-02 - 2020 года
01-02 - 2021 года
01-02 - 2022 года
volodya1122
В 1с8 я б зробив так: Текст умови програмно сформував.
В циклі
1. Перевів введені дати на початок і кінець місяця. На кожній ітерації циклу добавляти рік до кожної з дат (в обидві сторони)
2. умови обєднати приблизно так: ГДЕ (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) - цей текст звичайно формується програмно в циклі . Де Д1 і Д2 на кожній ітерації вже конкретні визначені в циклі значення

3. В 1с7 незнаю чи подібним методом можна сформувати умову.
Тут скоріше потрібно формувати в циклі на кожен період повнісю текст запросу і обєднати ці запроси

p.s.
Ще можливо дуже спростити, якщо в запросі можна використати функцію (Месяц(Дата1). Поді просто порівняти номера місяців
4andriy
volodya1122 @ Вчера, 18:30 необходимо зарегистрироваться для просмотра ссылки ,
в версії 7.7 якраз треба
Profi_1C77
4andriy @ 26.05.22, 16:47 необходимо зарегистрироваться для просмотра ссылки ,
ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    
    |ДатаДок = Документ.НалоговаяНакладная.ДатаДок;
    |НалоговаяНакладная = Документ.НалоговаяНакладная.ТекущийДокумент;
    |Функция Счётчик = Счётчик();
    |Группировка Месяц;
    
    |"//}}ЗАПРОС
;
    МаскаОтбораНачало= ДатаМесяц(ВыбНачПериода);
    МаскаОтбораКонец= ДатаМесяц(ВыбКонПериода);
    
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        Если (ДатаМесяц(Запрос.ДатаДок) = МаскаОтбораНачало)  или (ДатаМесяц(Запрос.ДатаДок) = МаскаОтбораКонец) Тогда
            
        Таб.ВывестиСекцию("Месяц");
    КонецЕсли;
        
        // Заполнение полей Месяц
        
    КонецЦикла;


это хотели ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.