1С:ЗУП как вывести список юбиляров текущего года

В 1С:ЗУП есть типовой отчет с личными данными: меню «Кадры — Кадровые отчеты — Личные данные сотрудников».

Этот отчет можно настроить на вывод юбиляров следующим образом.

В отчете нажмите на кнопку «ЕЩЕ», выберите пункт «Прочее — Изменить вариант отчета…»

Откройте вкладку Пользовательские поля». Нажмите на кнопку «Добавить — Новое поле выражение…». В поле «Заголовок» напишите «Юбилей». В поле Выражение детальных записей вставьте текст:

Выбор
	Когда [Дата рождения] <> ДатаВремя(1, 1, 1)
		Тогда Выбор
				Когда (РазностьДат([Дата рождения], [Параметры.Дата], "год") + Выбор
						Когда ДобавитьКДате([Дата рождения], "МЕСЯЦ", РазностьДат([Дата рождения], [Параметры.Дата], "ГОД") * 12) < [Параметры.Дата]
							Тогда 1
						Иначе 0
					Конец) % 5 = 0
					Тогда РазностьДат([Дата рождения], [Параметры.Дата], "год") + Выбор
							Когда ДобавитьКДате([Дата рождения], "МЕСЯЦ", РазностьДат([Дата рождения], [Параметры.Дата], "ГОД") * 12) < [Параметры.Дата]
								Тогда 1
							Иначе 0
						Конец
				Иначе 0
			Конец
	Иначе Null
Конец

Нажмите "ОК".
Перейдите на вкладку "Поля", раскройте в дереве доступных полей раздел "Пользовательские поля" и двойным щелчком на слове "Юбилей" поместите поле в таблицу выбранных полей справа.
Нажмите на кнопку "Завершить редактирование".
Если теперь нажать на кнопку Сформировать", то в отчет в графе "Юбилей" появятся числа с количеством лет юбиляров.
Осталось сохранить новую настройку отчета - иконка с желтой папкой рядом с кнопкой "Настройки" - Сохранить вариант отчета", укажите наименование, например, "Юбиляры", и сохраните нажатием на кнопку "Сохранить".

Примечание
Отчет показывает список людей, которым исполнится круглое количество лет (с точностью до пяти) от даты отчета - в ближайший год.
Т.е. если дата отчета 25.03.2019 года, сотрудник родился 02.01.1985, то 35 лет ему исполнится 02.01.2020, т.е. до того, как истечет период 25.03.2019 - 24.03.2020.
Если Вам необходимо получить юбиляров календарного года, т.е. в интервале с 01.01.2019 - 31.12.2019, то просто установите дату отчета 01.01.2019

Пояснения для начинающих программистов
В приведенном коде используется конструкция "% 5", означающая, что требуется определить остаток от деления на 5. Эта конструкция не является доступной в языке запросов. Т.к. "Выражение детальных записей" не является итерпретатором языка запросов, то такая конструкция тут доступна. Если появится необходимость отладить этот код в конструкторе запросов, то можно использовать вычитание с преобразованием типа "ВЫРАЗИТЬ".
Например, для отладки можно написать такой запрос:

ВЫБРАТЬ
	ФизическиеЛица.Ссылка КАК Ссылка,
	ФизическиеЛица.ДатаРождения КАК ДатаРождения,
	ВЫБОР
		КОГДА ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА ВЫБОР
					КОГДА (РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) + ВЫБОР
							КОГДА ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, МЕСЯЦ, РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) * 12) < &ДатаОтчета
								ТОГДА 1
							ИНАЧЕ 0
						КОНЕЦ) / 5 - (ВЫРАЗИТЬ((РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) + ВЫБОР
								КОГДА ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, МЕСЯЦ, РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) * 12) < &ДатаОтчета
									ТОГДА 1
								ИНАЧЕ 0
							КОНЕЦ) / 5 КАК ЧИСЛО(10, 0))) = 0
						ТОГДА РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) + ВЫБОР
								КОГДА ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, МЕСЯЦ, РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) * 12) < &ДатаОтчета
									ТОГДА 1
								ИНАЧЕ 0
							КОНЕЦ
					ИНАЧЕ 0
				КОНЕЦ
		ИНАЧЕ NULL
	КОНЕЦ КАК Юбилей
ИЗ
	Справочник.ФизическиеЛица КАК ФизическиеЛица

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.