Вопрос по формированию запроса в Консоли 1С.

1. user1937902 15.06.23 10:37 Сейчас в теме
Доброго времени суток.Пользователи Infostart,подскажите пожалуйста.Сейчас смотрю уволенных сотрудников. Мне помогли сделать запрос,но в конце у меня появляется 3-4 записи об одном человеке.Подскажите,можно ли сделать так, что бы одна ФИО не могла более 1 раза появляться в конце,или что-бы оставалась только запись о последнем увольнении.
ВЫБРАТЬ    
     ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
     ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
     ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ИЗ
     РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
     
         
ГДЕ ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1,1,1)

АВТОУПОРЯДОЧИВАНИЕ
Показать
По теме из базы знаний
Найденные решения
6. Sashares 35 15.06.23 11:10 Сейчас в теме
(5)Тогда так:
Добавить в выборку физлицо сотрудника.
Поместить данные исходного запроса во временную таблицу Т1.
В следующем запросе сгруппировать по физлицу и максимальным датам, поместить во временную таблицу Т2.
В следующем запросе выбрать данные из Т2, внутреннее соединение с Т1 по физлицу и датам, и из Т1 взять сотрудника.

Если нужен именно сотрудник в результате.
user1937902; +1 Ответить
8. nomad_irk 76 15.06.23 11:33 Сейчас в теме
(7)Возможно, вам хватит этого:

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

СГРУППИРОВАТЬ ПО
     ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо

АВТОУПОРЯДОЧИВАНИЕ
Показать
user1937902; +1 Ответить
12. user1937902 21.06.23 10:57 Сейчас в теме
в итоге остановился на этом
ВЫБРАТЬ
	ДанныеДляПодбораСотрудников.ФизическоеЛицо КАК ФИО,
	МАКСИМУМ(ДанныеДляПодбораСотрудников.Начало)КАК Начало,
  	МАКСИМУМ(ДанныеДляПодбораСотрудников.Окончание)КАК Окончание,
        МАКСИМУМ(ДанныеДляПодбораСотрудников.ПометкаУдаления)КАК ПометкаУдаления
ИЗ
	РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбораСотрудников	
ГДЕ

     ДанныеДляПодбораСотрудников.Начало <> ДАТАВРЕМЯ(1,1,1)И
     ДанныеДляПодбораСотрудников.Окончание <> ДАТАВРЕМЯ(1,1,1)  

СГРУППИРОВАТЬ ПО

     ДанныеДляПодбораСотрудников.ФизическоеЛицо         
                                               
 АВТОУПОРЯДОЧИВАНИЕ
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 35 15.06.23 11:04 Сейчас в теме
(1)Сгруппировать по сотруднику и Максимум по датам.
user1937902; AR18; +2 Ответить
5. nomad_irk 76 15.06.23 11:07 Сейчас в теме
(3).....и получить 4 строки с одинаковыми датами :)
6. Sashares 35 15.06.23 11:10 Сейчас в теме
(5)Тогда так:
Добавить в выборку физлицо сотрудника.
Поместить данные исходного запроса во временную таблицу Т1.
В следующем запросе сгруппировать по физлицу и максимальным датам, поместить во временную таблицу Т2.
В следующем запросе выбрать данные из Т2, внутреннее соединение с Т1 по физлицу и датам, и из Т1 взять сотрудника.

Если нужен именно сотрудник в результате.
user1937902; +1 Ответить
7. user1937902 15.06.23 11:25 Сейчас в теме
(6)хм,ничего пока не понятно,как это сделать,но за наводку спасибо. Пойду, почитаю, как это сделать.
8. nomad_irk 76 15.06.23 11:33 Сейчас в теме
(7)Возможно, вам хватит этого:

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

СГРУППИРОВАТЬ ПО
     ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо

АВТОУПОРЯДОЧИВАНИЕ
Показать
user1937902; +1 Ответить
10. user1937902 15.06.23 11:42 Сейчас в теме
(8)да,это решение моё,как раз читал сейчас про МАКСИМУМ,но спасибо вам огромное.
2. user1937902 15.06.23 10:38 Сейчас в теме
к примеру вот,1 сотрудник 4 раза увольнялся,последняя запись 2022 годом числится,только она(Как самая новая) мне и нужна.
Прикрепленные файлы:
4. nomad_irk 76 15.06.23 11:07 Сейчас в теме
(2)это 4 разных сотрудника. у этих сотрудников одинаковое физлицо.
Ваша задача выводить данные физлица и нахождение максимальной даты увольнения/приема
user1937902; +1 Ответить
9. soft_wind 15.06.23 11:40 Сейчас в теме
а срез последних не пробовали?
ВЫБРАТЬ    
     ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
     ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
     ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ИЗ
     РегистрСведений.ТекущиеКадровыеДанныеСотрудников.СрезПоследних КАК ТекущиеКадровыеДанныеСотрудников
     
         
ГДЕ ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1,1,1)

АВТОУПОРЯДОЧИВАНИЕ
Показать
11. user1937902 15.06.23 13:09 Сейчас в теме
(9)Попробовал,не получилось,но почитаю позже про срез,спасибо.
12. user1937902 21.06.23 10:57 Сейчас в теме
в итоге остановился на этом
ВЫБРАТЬ
	ДанныеДляПодбораСотрудников.ФизическоеЛицо КАК ФИО,
	МАКСИМУМ(ДанныеДляПодбораСотрудников.Начало)КАК Начало,
  	МАКСИМУМ(ДанныеДляПодбораСотрудников.Окончание)КАК Окончание,
        МАКСИМУМ(ДанныеДляПодбораСотрудников.ПометкаУдаления)КАК ПометкаУдаления
ИЗ
	РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбораСотрудников	
ГДЕ

     ДанныеДляПодбораСотрудников.Начало <> ДАТАВРЕМЯ(1,1,1)И
     ДанныеДляПодбораСотрудников.Окончание <> ДАТАВРЕМЯ(1,1,1)  

СГРУППИРОВАТЬ ПО

     ДанныеДляПодбораСотрудников.ФизическоеЛицо         
                                               
 АВТОУПОРЯДОЧИВАНИЕ
Показать
Оставьте свое сообщение

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