Условия в запросе.

1. JustaUser 01.10.19 10:35 Сейчас в теме
Помогите исправить запрос, плиз.

Если "Действует до" < значения параметра ДатаСреза (=31.10.19), тогда в выборку должна попадать предыдущая строка (см. скрин).

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

УПОРЯДОЧИТЬ ПО
	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
15. Lenten 25 03.10.19 17:57 Сейчас в теме
Жаль нет этой конфы под рукой.
Сначала из таблицы выберите записи, которые можно считать действующими.
Условие:

КадроваяИсторияСотрудников.Период > ДатаСреза и
ВЫБОР 
	КОГДА КадроваяИсторияСотрудников.ДействуетДо=  ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
 	ТОГДА ДАТАВРЕМЯ(2099, 1, 1, 0, 0, 0)
	ИНАЧЕ КадроваяИсторияСотрудников.ДействуетДо
КОНЕЦ	< ДатаСреза 

и запихнуть результат во временную таблицу.

после этого отсортировать ее по периоду и выбрать запись с самой последней датой
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. rusdenol 01.10.19 11:35 Сейчас в теме
(1) А если в условие виртуальной таблицы добавить это условие? (я не уверен, поэтому со знаком вопроса)
12. rusdenol 01.10.19 11:50 Сейчас в теме
(10) Проверил. Должно сработать. Условия по организации и подразделению тоже лучше перенести в условия виртуальной таблицы

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

УПОРЯДОЧИТЬ ПО
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование
Показать
13. JustaUser 01.10.19 12:08 Сейчас в теме
(12) Спасибо, но нет, получила ту же строку - Кадровик, а требуется Главный экономист.
2. platonov.e 158 01.10.19 10:47 Сейчас в теме
А что устанавливаете в период?
4. JustaUser 01.10.19 11:05 Сейчас в теме
(2) Вы про то какая дата? 31.10.2019
5. platonov.e 158 01.10.19 11:18 Сейчас в теме
(4) а ну так это ведь срез последних. наверняка эта запись не является последней по тем измерениям
6. JustaUser 01.10.19 11:20 Сейчас в теме
(5) Да, эта запись не является последней.
7. platonov.e 158 01.10.19 11:22 Сейчас в теме
(6) Ну, а вы выбираете срез последних, а запись не последняя, а выбираете срез последних... чувствуете связь7
8. nomad_irk 72 01.10.19 11:25 Сейчас в теме
9. JustaUser 01.10.19 11:34 Сейчас в теме
11. VmvLer 01.10.19 11:36 Сейчас в теме
(9) Сбраться с мыслями и понять что нужно сделать?

Можно прослушать курс https://www.youtube.com/watch?v=zcoGTd6I1PM
3. VmvLer 01.10.19 10:56 Сейчас в теме
14. nestokay 62 01.10.19 12:41 Сейчас в теме
КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудники,"Должность",ДатаДляДолжности)
где - истина - только разрешённые (для запроса)
МассивСотрудники - ну это понятно
"Должность" - Реквизит для получения
ДатаДляДолжности - Аналог Даты среза
получите актуальные должности на дату, если я правильно понял суть запроса
15. Lenten 25 03.10.19 17:57 Сейчас в теме
Жаль нет этой конфы под рукой.
Сначала из таблицы выберите записи, которые можно считать действующими.
Условие:

КадроваяИсторияСотрудников.Период > ДатаСреза и
ВЫБОР 
	КОГДА КадроваяИсторияСотрудников.ДействуетДо=  ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
 	ТОГДА ДАТАВРЕМЯ(2099, 1, 1, 0, 0, 0)
	ИНАЧЕ КадроваяИсторияСотрудников.ДействуетДо
КОНЕЦ	< ДатаСреза 

и запихнуть результат во временную таблицу.

после этого отсортировать ее по периоду и выбрать запись с самой последней датой
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот