Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:11

Запрос по уволенным сотрудникам

Автор has, 11 мая 2011, 08:28

0 Пользователей и 1 гость просматривают эту тему.

has

Туплю с утра, прошу помощи. Есть такой запрос, который показывает даты увольнения физ лиц.

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

Результат запроса вот

Проблема в том, что физ лицо в выбранном периоде было уволенным и снова принято. Пробовал так, считает как уволенным. Поместил данный результат во временную таблицу

ВЫБРАТЬ
ВТУволенные.ДатаУвольнения,
ВТУволенные.ФизЛицо
ИЗ
ВТУволенные КАК ВТУволенные
ГДЕ
ВТУволенные.ДатаУвольнения МЕЖДУ &ДатаНачала И &ДатаОкончания


has

Вобщем вопрос решен, кому интересно вот полный текст. Вроде рабочий.

"ВЫБРАТЬ
ВЫБОР
КОГДА ВЫБОР
КОГДА РаботникиОрганизации.ПериодЗавершения < &ДатаОкончания
И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА РаботникиОрганизации.ПричинаИзмененияСостоянияЗавершения
ИНАЧЕ РаботникиОрганизации.ПричинаИзмененияСостояния
КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
ТОГДА ВЫБОР
КОГДА РаботникиОрганизации.ПериодЗавершения < &ДатаОкончания
И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ДОБАВИТЬКДАТЕ(РаботникиОрганизации.ПериодЗавершения, ДЕНЬ, -1)
ИНАЧЕ ДОБАВИТЬКДАТЕ(РаботникиОрганизации.Период, ДЕНЬ, -1)
КОНЕЦ
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
КОНЕЦ КАК ДатаУвольнения,
РаботникиОрганизации.Сотрудник.Физлицо КАК ФизЛицо
ПОМЕСТИТЬ ВТУволенные
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(
&ДатаОкончания,
Организация = &Организация
И Сотрудник.Физлицо В (&МассивФизлиц)) КАК РаботникиОрганизации
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МИНИМУМ(ВТУволенные.ДатаУвольнения) КАК ДатаУвольнения,
ВТУволенные.ФизЛицо
ИЗ
ВТУволенные КАК ВТУволенные

СГРУППИРОВАТЬ ПО
ВТУволенные.ФизЛицо

ИМЕЮЩИЕ
(НЕ МИНИМУМ(ВТУволенные.ДатаУвольнения) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))";

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск