HelpF.pro

Функция дни рождения сотрудников

Данная функция написана для ЗиК 7.7

Код 1C v 7.x
 
//Функция подбирает окончание для возраста
Функция СтрГода(Возраст)
Остаток = Возраст%10;
Если Остаток = 1 Тогда
Стр = "год";
ИначеЕсли ((Остаток > 1) и (Остаток < 5)) Тогда
Стр = "года";
Иначе
Стр = "лет";
КонецЕсли;
Возврат Стр;
КонецФункции

//Формируем дни рождения Сотрудников
Процедура ДниРожденияСотрудников()
ТекстДР="";
Именинники = СоздатьОбъект("СписокЗначений");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()= 1 Цикл
ТекЭлем = СпрСотр.ТекущийЭлемент();
Если ТекЭлем.ЭтоГруппа() = 0 Тогда
Если ((ТекЭлем.Родитель <> "Уволенные")) Тогда
ТекСотр = СпрСотр.ТекущийЭлемент();
Если (ПустоеЗначение(ТекСотр.СостояниеФизЛица.Получить(НачМесяца(ТекущаяДата()))) = 0) Тогда
Если (ДатаМесяц(ТекСотр.ДатаРождения) = ДатаМесяц(ТекущаяДата())) Тогда
Именинники.ДобавитьЗначение(ТекСотр);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Именинники.РазмерСписка() <> 0 Тогда
ТекстДР=ТекстДР+" ********* СПИСОК ИМЕНИННИКОВ *********"+РазделительСтрок+" за месяц "+Формат(ТекущаяДата(),"ДММММ")+РазделительСтрок;
ТекстДР=ТекстДР+"-----------------------------------------------------------------------------------------------------------------------------------------------"+РазделительСтрок;
Для к = 1 по Именинники.РазмерСписка() Цикл
Сотр = Именинники.ПолучитьЗначение(к);
Возраст = (Число(ДатаГод(ТекущаяДата()))-Число(ДатаГод(Сотр.ДатаРождения)));
РазницаДней = (Число(ДатаЧисло(Сотр.ДатаРождения))-Число(ДатаЧисло(ТекущаяДата())));
СтрГода = СтрГода(Возраст);
Если (ДатаЧисло(Сотр.ДатаРождения) < ДатаЧисло(ТекущаяДата())) Тогда
ТекстДР=ТекстДР+" "+Сотр+" "+Сотр.ДатаРождения+" уже исполнилось "+Возраст+" "+СтрГода+"!"+РазделительСтрок;
Иначе
Если (РазницаДней = 2) Тогда
ТекстДР=ТекстДР+"ПОСЛЕЗАВТРА! "+Сотр+" послезавтра "+Сотр.ДатаРождения+" будет праздновать " + Возраст + "-й День Рождения!!!! ";

ИначеЕсли (РазницаДней = 1) Тогда
ТекстДР=ТекстДР+"ЗАВТРА! "+ Сотр + " будет отмечает свой " + Возраст + "-й День рождения!";
ИначеЕсли (РазницаДней = 0) Тогда
ТекстДР=ТекстДР+"СЕГОДНЯ! "+ Сотр + " отмечает свой " + Возраст + "-й День рождения!";
КонецЕсли;
ТекстДР=ТекстДР+" ( "+Сотр.Подразделение.Получить(ТекущаяДата())+" , "+Сотр.Должность.Получить(ТекущаяДата())+" )"+РазделительСтрок;
КонецЕсли;
КонецЦикла;
Иначе
ТекстДР=ТекстДР+"В текущем месяце именинников нет!";
КонецЕсли;
Сообщить(ТекстДР);
КонецПроцедуры


В файловом архиве есть и сама обработка.
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/162.html