Рустам Абдрашитов
Мыслитель
(9520)
4 недели назад
Процедура ПроверитьКоличествоДнейОтпуска()
ТаблицаОтпусков = Объект.Сотрудники.Выгрузить();
ТаблицаОтпусков.Свернуть("Сотрудник,ВидОтпуска", "КоличествоДней");
ЛимитыОтпусков = Новый Соответствие;
ЛимитыОтпусков.Вставить(Перечисления.ВидыОтпусков.Основной, 28);
ЛимитыОтпусков.Вставить(Перечисления.ВидыОтпусков.ПоИнвалидности, 7);
// Добавьте другие виды отпусков и их лимиты по необходимости
РезультатыПроверки = Новый ТаблицаЗначений;
РезультатыПроверки.Колонки.Добавить("Сотрудник");
РезультатыПроверки.Колонки.Добавить("ВидОтпуска");
РезультатыПроверки.Колонки.Добавить("КоличествоДней");
РезультатыПроверки.Колонки.Добавить("Лимит");
РезультатыПроверки.Колонки.Добавить("Превышение");
Для Каждого СтрокаОтпуска Из ТаблицаОтпусков Цикл
Лимит = ЛимитыОтпусков.Получить(СтрокаОтпуска.ВидОтпуска);
Если Лимит <> Неопределено И СтрокаОтпуска.КоличествоДней > Лимит Тогда
НоваяСтрока = РезультатыПроверки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОтпуска);
НоваяСтрока.Лимит = Лимит;
НоваяСтрока.Превышение = СтрокаОтпуска.КоличествоДней - Лимит;
КонецЕсли;
КонецЦикла;
Если РезультатыПроверки.Количество() > 0 Тогда
ВывестиРезультатыПроверки(РезультатыПроверки);
Иначе
Сообщить("Проверка пройдена. Превышений лимитов отпусков не обнаружено.");
КонецЕсли;
КонецПроцедуры
Процедура ВывестиРезультатыПроверки(РезультатыПроверки)
ТекстСообщения = "Обнаружены превышения лимитов отпусков:" + Символы.ПС;
Для Каждого Результат Из РезультатыПроверки Цикл
ТекстСообщения = ТекстСообщения + СтрШаблон(
"Сотрудник: %1, Вид отпуска: %2, Указано дней: %3, Лимит: %4, Превышение: %5" + Символы.ПС,
Результат.Сотрудник,
Результат.ВидОтпуска,
Результат.КоличествоДней,
Результат.Лимит,
Результат.Превышение
);
КонецЦикла;
Сообщить(ТекстСообщения);
КонецПроцедуры