Имя: Пароль:
1C
1С v8
ЗУП, срез регистра не выводит последние значения
0 Штурман
 
10.04.12
11:26
Пытаюсь вывести последние оклады сотрудников в ЗУП (2.5.45.3)

Запрос таков:



ВЫБРАТЬ
   ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник,
   ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета,
   ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
ИЗ
   РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&КонецПериода) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
ГДЕ
   ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета = &ВидРасчета



где видрасчета = Оклад по дням

запрос по большинству в принципе выводит правильно последние оклады, однако если у сотрудника было кадровое перемещение с такого-то по такое-то число, то почему-то всегда выводит временный оклад

как собственно вывести последние правильные оклады тогда?
1 dva1c
 
10.04.12
11:37
Из примера взял:

   ТекстЗапроса = "ВЫБРАТЬ
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период,
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Регистратор,
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Организация,
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник,
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета,
                  |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1
                  |ПОМЕСТИТЬ ПоследниеОклады
                  |ИЗ
                  |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(, ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
                  |    ПлановыеНачисленияРаботниковОрганизаций.Регистратор,
                  |    ПлановыеНачисленияРаботниковОрганизаций.Организация,
                  |    ПлановыеНачисленияРаботниковОрганизаций.Период,
                  |    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета,
                  |    ПлановыеНачисленияРаботниковОрганизаций.Показатель1
                  |ПОМЕСТИТЬ ПредыдущиеОклады
                  |ИЗ
                  |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |            ПлановыеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
                  |            ПлановыеНачисленияРаботниковОрганизаций.Организация КАК Организация,
                  |            МАКСИМУМ(ПлановыеНачисленияРаботниковОрганизаций.Период) КАК МаксПериод
                  |        ИЗ
                  |            РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
                  |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеОклады КАК ПоследниеОклады
                  |                ПО ПлановыеНачисленияРаботниковОрганизаций.Сотрудник = ПоследниеОклады.Сотрудник
                  |                    И ПлановыеНачисленияРаботниковОрганизаций.Организация = ПоследниеОклады.Организация
                  |                    И ПлановыеНачисленияРаботниковОрганизаций.Показатель1 <> ПоследниеОклады.Показатель1
                  |                    И ПлановыеНачисленияРаботниковОрганизаций.Период < ПоследниеОклады.Период
                  |        ГДЕ
                  |            ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
                  |        
                  |        СГРУППИРОВАТЬ ПО
                  |            ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
                  |            ПлановыеНачисленияРаботниковОрганизаций.Организация) КАК Подзапрос
                  |        ПО ПлановыеНачисленияРаботниковОрганизаций.Сотрудник = Подзапрос.Сотрудник
                  |            И ПлановыеНачисленияРаботниковОрганизаций.Организация = Подзапрос.Организация
                  |            И ПлановыеНачисленияРаботниковОрганизаций.Период = Подзапрос.МаксПериод
                  |ГДЕ
                  |    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ПоследниеОклады.Организация,
                  |    ПоследниеОклады.Сотрудник,
                  |    ПоследниеОклады.Регистратор,
                  |    ПоследниеОклады.Период,
                  |    ПоследниеОклады.ВидРасчета,
                  |    ПоследниеОклады.Показатель1,
                  |    ПредыдущиеОклады.Регистратор КАК РегистраторНовый,
                  |    ПредыдущиеОклады.Период КАК ПериодНовый,
                  |    ПредыдущиеОклады.ВидРасчета КАК ВидРасчетаНовый,
                  |    ПредыдущиеОклады.Показатель1 КАК Показатель1Новый
                  |ИЗ
                  |    ПоследниеОклады КАК ПоследниеОклады
                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПредыдущиеОклады КАК ПредыдущиеОклады
                  |        ПО ПоследниеОклады.Организация = ПредыдущиеОклады.Организация
                  |            И ПоследниеОклады.Сотрудник = ПредыдущиеОклады.Сотрудник";
2 dva1c
 
10.04.12
11:39
+(1) Т.е. одним ПлановыеНачисленияРаботниковОрганизацийСрезПоследних обойтись трудновато.
3 dva1c
 
10.04.12
11:39
(0) Смотри, пробуй, анализируй.
4 Штурман
 
12.04.12
04:34
спасиб )
5 guitar_player
 
12.04.12
05:29
(0) посмотри как в типовых пишут...

Вместо своих последних 2х полей добавь эти

ВЫБОР
   КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
           И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= &КонецПериода
       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаЗавершения
   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
КОНЕЦ


ВЫБОР
   КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
           И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= &КонецПериода
       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель1Завершения
   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Показатель1
КОНЕЦ
6 guitar_player
 
12.04.12
05:30
(5) Соответственно в условие тоже нужно первое поле вставить
PS Если нужно найти основное начисление, а не только оклад по дням, то нужно писать по другому