Вход | Регистрация
 

Как в запросе выбрать не максимальную запись, а все предыдущие

Как в запросе выбрать не максимальную запись, а все предыдущие
Я
   1сЮлия
 
13.03.20 - 12:58
Доброе утро! Запрос работает,но отбирает не все записи, а последнюю,где не равны виды расчета, а мне все нужны
ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Актуальность КАК Актуальность,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период КАК ДатаВидаРасчета,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Регистратор КАК Регистратор,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ТекущаяДата, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение = ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка)
    И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Активность
;

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

СГРУППИРОВАТЬ ПО
    ВТ_Данные.Сотрудник,
    ВТ_Данные.ВидРасчета,
    ВТ_Данные.Регистратор,
    ВТ_Данные.ДатаВидаРасчета,
    ВТ_Данные.ВидРасчетаИзмерение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_2.ДатаВидаРасчета КАК НовыйПериод,
    ВТ_2.Сотрудник КАК Сотрудник,
    ВТ_2.Регистратор КАК КонфликтныйДокумент,
    ВТ_2.ВидРасчета КАК НазначенныйВидРасчета,
    ВТ_2.ПредДатаВидаРасчета КАК ПредыдущееНазначениеДата,
    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета КАК ПредыдущийВидРасчета,
    ВЫБОР
        КОГДА ПлановыеНачисленияРаботниковОрганизаций.Актуальность = ИСТИНА
            ТОГДА "Действует"
        ИНАЧЕ "Не действует"
    КОНЕЦ КАК АктуальностьПредыдущегоВидаРасчета
ИЗ
    ВТ_2 КАК ВТ_2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
        ПО ВТ_2.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
            И ВТ_2.ПредДатаВидаРасчета = ПлановыеНачисленияРаботниковОрганизаций.Период
            И ВТ_2.ВидРасчета <> ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
            И ВТ_2.ВидРасчетаИзмерение = ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение
            И (ПлановыеНачисленияРаботниковОрганизаций.Актуальность = ИСТИНА)
ГДЕ
    НЕ ВТ_2.ПредДатаВидаРасчета = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
   1сЮлия
 
1 - 13.03.20 - 13:06
Нужны все неравные предыдущие и актуальные.
   Ёпрст
 
2 - 13.03.20 - 13:27
(1) предыдущие это какие ? По дате ?
   Homer
 
3 - 13.03.20 - 13:30
Найти максимум и исключить их из общей таблицы
   1сЮлия
 
4 - 13.03.20 - 13:46
Из запроса в выборку попадает последний предыдущий не закрытый вид расчета основной с максимальной датой,а если не закрыто не сколько видов расчета,мне нужно чтобы в выборку попали все не закрытые виды расчета предыдущие, а не только последний.
   Homer
 
5 - 13.03.20 - 13:52
//Функция возвращает актуальные плановые начисления сотрудников на заданную дату в виде таблицы значений


ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(Сотрудник, ТекущаяДата(),,);

//Или для списка сотрудников


ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудников(МассивСотрудник, ТекущаяДата(),,);
   1сЮлия
 
6 - 13.03.20 - 13:53
У меня конфа УТП
   1сЮлия
 
7 - 13.03.20 - 13:55
А в запросе как это  реализовать?
   Homer
 
8 - 13.03.20 - 13:59
(7) Руками. Я не вижу сложности. если за вас сделают, то вы никогда не станете программистом. Надо пробовать)
В ЗУП2,5 в карточки сотрудника есть отображения всех актуальных начислений. Моно взять код оттуда
   1сЮлия
 
9 - 13.03.20 - 14:03
За меня не надо делать запрос я сама написала,мне нужно в запросе добавить чтобы учитывалась не только последний не равный док, а и другие с меньшей датой.
   1сЮлия
 
10 - 13.03.20 - 14:03
ЗУП мне не подойдет, это совсем другая конфа.
   МимохожийОднако
 
11 - 13.03.20 - 21:35
(9) Сделай запрос не по срезу, а по всему регистру
   1сЮлия
 
12 - 16.03.20 - 10:17
Доброе утро! Сделала можете посмотреть
ВЫБРАТЬ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Актуальность КАК Актуальность,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период КАК ДатаВидаРасчета,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Регистратор КАК Регистратор,
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
ГДЕ
    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение = ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка)
    И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Активность
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_Данные.Сотрудник КАК Сотрудник,
    ВТ_Данные.ВидРасчета КАК ВидРасчета,
    МАКСИМУМ(ПлановыеНачисленияРаботниковОрганизаций.Период) КАК ПредДатаВидаРасчета,
    ВТ_Данные.Регистратор,
    ВТ_Данные.ВидРасчетаИзмерение
ПОМЕСТИТЬ ВТ_2
ИЗ
    ВТ_Данные КАК ВТ_Данные
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
        ПО ВТ_Данные.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
            И ВТ_Данные.ДатаВидаРасчета >= ПлановыеНачисленияРаботниковОрганизаций.Период
            И ВТ_Данные.ВидРасчетаИзмерение = ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение
            И (ПлановыеНачисленияРаботниковОрганизаций.Активность)
            И (НЕ ВТ_Данные.ВидРасчета = ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета)

СГРУППИРОВАТЬ ПО
    ВТ_Данные.Сотрудник,
    ВТ_Данные.ВидРасчета,
    ВТ_Данные.Регистратор,
    ВТ_Данные.ВидРасчетаИзмерение
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_2.Сотрудник КАК Сотрудник,
    ВТ_2.Регистратор КАК КонфликтныйДокумент,
    ВТ_2.ВидРасчета КАК НазначенныйВидРасчета,
    ВТ_2.ПредДатаВидаРасчета КАК ПредыдущееНазначениеДата,
    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета КАК ПредыдущийВидРасчета,
    ВЫБОР
        КОГДА ПлановыеНачисленияРаботниковОрганизаций.Актуальность = ИСТИНА
            ТОГДА "Действует"
        ИНАЧЕ "Не действует"
    КОНЕЦ КАК АктуальностьПредыдущегоВидаРасчета
ИЗ
    ВТ_2 КАК ВТ_2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
        ПО ВТ_2.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
            И ВТ_2.ПредДатаВидаРасчета = ПлановыеНачисленияРаботниковОрганизаций.Период
            И ВТ_2.ВидРасчета <> ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
            И ВТ_2.ВидРасчетаИзмерение = ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение
            И (ПлановыеНачисленияРаботниковОрганизаций.Актуальность = ИСТИНА)
ГДЕ
    НЕ ВТ_2.ПредДатаВидаРасчета = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    
    Сотрудник,
    ПредыдущееНазначениеДата
   1сЮлия
 
13 - 16.03.20 - 10:28
Логически запрос правильный?

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