Найти в Дзене
1с pro

Как рассчитать возраст сотрудника в запросе 1с?

полный запрос

-2

в тексте

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