Можно ещё написать или немного доработать такое условие:
Отчет (личные данные сотрудников).
Выбор
Когда ДобавитьКДате([Сотрудник.Дата последнего мед. осмотра
(Сотрудники)], "МЕСЯЦ", 6) >= НачалоПериода([Параметры.Дата], "Месяц") И
ДобавитьКДате([Сотрудник.Дата последнего мед. осмотра (Сотрудники)],
"МЕСЯЦ", 6) <= КонецПериода([Параметры.Дата], "Месяц")
Тогда Истина
Иначе Ложь
Далее сделать отбор по данному полю с признаком "Да", тогда в отчет попадут только те сотрудники, которым требуется пройти медосмотр в определенном месяце.
Как я считал, например сотрудник проходил осмотр в январе 2018, программа вернет месяц осмотра и прибавит к нему 6,
получится 7 месяц - июль 2018. Как раз с периодичностью полгода.
1 в январе прошел медосмотр (прибавляем к нему 6 месяцев, получаем 7 и так далее) 2 3 4 5 6 7.
Вместо цифры 6 лучше прописать периодичность медосмотра как доп. реквизит для должности и поставить весовой коэффициент 6.
А уже в поле использовать наименование именно этого доп. реквизита.
Минусы:
не понятно, что нужно делать с сотрудниками, которые ещё вообще не проходили медосмотр.
С такими условиями, они не смогут быть отобраны. Данные условия работают только по людям, для
которые уже были заданы даты ранее пройденного медосмотра.
Но в условиях задачи не написано, что делать с этими людьми, нам нужно додумываться самим
Можно добавить в полях в условие ещё:
Когда [Сотрудник.Дата последнего мед. осмотра (Сотрудники)] Есть Null
Тогда "данный сотрудник ещё не проходил медосмотр"
Но тогда нужно ещё делать отбор в отчете по сотрудникам, которые должны пройти медосмотр, чтобы отделить от всех остальных.
Так как медосмотр привязан к должности, сделать просто отбор в отчете по должности.
И второй минус: если полгода прошло, например, проходил в январе, должен был в июле, сформируем отчет в августе 2018,
сотрудник не попадет в отчет. Что делать с сотрудниками, у которых срок превысил полгода тоже не написано. Думайте сами