Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Группировка дат в запросе

Группировка дат в запросе
Я
   Frank13
 
30.07.19 - 23:27
*********Приветствую коллеги!!!**********
Возникла сложность вывода данных в отчете. Ситуация такая: есть сотрудник Иванов И.И. его принимали на работу и увольняли каждый месяц.

   Дата приема  Дата увольнения
1. 15.01.2019   31.01.2019
2. 01.02.2019   28.02.2019
3. 04.03.2019   работает
Если разница в днях 1 день от Даты приема и Даты увольнения (пример выше), то в отчет выводить одной строкой  минимум(датаПриема) максимум(дата увольения), т.е. получается:
    Дата приема  Дата увольнения
1. 15.01.2019   28.02.2019
2. 04.03.2019   (в данном случае, случае разница больше 1 дня). В отчет все как надо выходит

Затруднение вышло в данном случае:
   Дата приема  Дата увольнения
1. 15.01.2019   31.01.2019
2. 01.02.2019   28.02.2019
3. 01.03.2019   работает

В отчете выходит
Дата приема  Дата увольнения
1. 15.01.2019   28.02.2019
что есть не правильно, правильно 15.01.2019 - работает(пустая дата)

ПОДСКАЖИТЕ КАК МОЖНО еще решить данную задачу
 
 
   Ёпрст
 
1 - 30.07.19 - 23:38
(0) Нам отсюда не видно, как выводишь в отчет и текст запроса
   Frank13
 
2 - 30.07.19 - 23:54
(1) Получил таблицу значений, потом в цикле перебрал данные проверяя разницу м/у Датой приема и Датой увольнения предыдущей и текущей строки, присваивая значение НовыйСотрудник(Истина,Ложь), если разница м/у Датой приема текущей строки и ДатойУвольнения предыдущей строки равна или больше 1). Добавил во временную таблицу, где сделал группировку Минимум(ДатаПриема), Максимум(ДатаУвольнения):

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТЗсотрудники",ДанныеПоСотрудникам);
Запрос.Текст = "ВЫБРАТЬ
                   |    ТЗсотрудники.Сотрудник КАК Сотрудник,
                   |    ТЗсотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
                   |    ТЗсотрудники.ФОТ КАК ФОТ,
                   |    ТЗсотрудники.УсловияТруда КАК УсловияТруда,
                   |    ТЗсотрудники.Тариф КАК Тариф,
                   |    ТЗсотрудники.ТабельныйНомер КАК ТабельныйНомер,
                   |    ТЗсотрудники.Ставка КАК Ставка,
                   |    ТЗсотрудники.Состояние КАК Состояние,
                   |    ТЗсотрудники.Подразделение КАК Подразделение,
                   |    ТЗсотрудники.Организация КАК Организация,
                   |    ТЗсотрудники.Оклад КАК Оклад,
                   |    ТЗсотрудники.НовыйСотрудник КАК НовыйСотрудник,
                   |    ТЗсотрудники.Должность КАК Должность,
                   |    ТЗсотрудники.ДатаУвольнения КАК ДатаУвольнения,
                   |    ТЗсотрудники.ДатаПриема КАК ДатаПриема,
                   |    ТЗсотрудники.ГруппаФЗ КАК ГруппаФЗ,
                   |    ТЗсотрудники.ГрафикРаботы КАК ГрафикРаботы,
                   |    ТЗсотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
                   |    ТЗсотрудники.ВидЗанятости КАК ВидЗанятости,
                   |    ТЗсотрудники.ПоказательТарифнойСтавки КАК ПоказательТарифнойСтавки
                   |ПОМЕСТИТЬ ВТ
                   |ИЗ
                   |    &ТЗсотрудники КАК ТЗсотрудники
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    ВТ.ФизическоеЛицо КАК ФизическоеЛицо,
                   |    ВТ.Тариф КАК Тариф,
                   |    ВТ.ТабельныйНомер КАК ТабельныйНомер,
                   |    ВТ.Ставка КАК Ставка,
                   |    ВТ.Подразделение КАК Подразделение,
                   |    ВТ.Организация КАК Организация,
                   |    ЕСТЬNULL(ВТ.Оклад, 0) КАК Оклад,
                   |    ВТ.НовыйСотрудник КАК НовыйСотрудник,
                   |    ВТ.Должность КАК Должность,
                   |    МАКСИМУМ(ВТ.ДатаУвольнения) КАК ДатаУвольнения,
                   |    МИНИМУМ(ВТ.ДатаПриема) КАК ДатаПриема,
                   |    ВТ.ГруппаФЗ КАК ГруппаФЗ,
                   |    ВТ.ГрафикРаботы КАК ГрафикРаботы,
                   |    ВТ.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
                   |    ВТ.Состояние КАК Состояние
                   |ИЗ
                   |    ВТ КАК ВТ
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ВТ.ФизическоеЛицо,
                   |    ВТ.Тариф,
                   |    ВТ.ТабельныйНомер,
                   |    ВТ.Ставка,
                   |    ВТ.Подразделение,
                   |    ВТ.Организация,
                   |    ВТ.НовыйСотрудник,
                   |    ВТ.Должность,
                   |    ВТ.ГруппаФЗ,
                   |    ВТ.ГоловнаяОрганизация,
                   |    ВТ.ГрафикРаботы,
                   |    ЕСТЬNULL(ВТ.Оклад, 0),
                   |    ВТ.Состояние
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ТабельныйНомер,
                   |    ДатаПриема";
    
тзВыборка = Запрос.Выполнить().Выгрузить();
   kumena
 
3 - 31.07.19 - 00:14
Раз пять раз перечитал, пока понял что вместо даты текст. Почему вместо текста текущую дату или дату окончания отчета не может - не понятно!
   kumena
 
4 - 31.07.19 - 00:19
Выбор Когда ДатаОкончания = ДатаВремя(1,1,1) Тогда &ТекущаяДата Конец КАК ДатаОкончания
   Frank13
 
5 - 31.07.19 - 00:24
(3) В дате увольнения, либо есть дата либо она пустая, никакого текста( просто обозначил, что сотрудник работает).
Варианты с текущей датой или датой отчета - не вариант.
   Frank13
 
6 - 31.07.19 - 00:28
(4) Запрос срабатывает нормально, если разница больше 1 дня и выводит как нужно, но загвоздка появилось,когда все равны 1 и Дата увольнения = ПустаяДата. Как подсказать или вывести строку в данном случае
   hhhh
 
7 - 31.07.19 - 00:38
(6) если дата увольнения пустая, тогда берешь ее 3999 год
   kumena
 
8 - 31.07.19 - 00:41
> Варианты с текущей датой или датой отчета - не вариант.

это как раз более правильный вариант.

> если дата увольнения пустая, тогда берешь ее 3999 год

ха ха, и замазываешь её условным оформлением на работает\пустая дата! )))
   kumena
 
9 - 31.07.19 - 00:44
7 я подозреваю, что автор на 3.0 пользуется штатными функциями, которые возвращают пустую дату.
но вобщем в цикле подменит.
   Frank13
 
10 - 31.07.19 - 00:54
(7) (8) Спасибо.Совсем с головы вылетело, что можно ставить 3999. Буду пробовать.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.