From d39618c8910ad0714e470b92591b9787a2c0dedd Mon Sep 17 00:00:00 2001 From: manoraga Date: Thu, 30 Jul 2026 17:11:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=BE=D0=B9=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85.=20=D0=92?= =?UTF-8?q?=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20=D0=BA=D0=B0=D0=B4?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D1=8B=D1=85=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D0=B4=D0=BD=D1=8F=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/excel_exporter.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/excel_exporter.py b/modules/excel_exporter.py index b856ae9..4465afd 100644 --- a/modules/excel_exporter.py +++ b/modules/excel_exporter.py @@ -96,7 +96,7 @@ def format_row_cells(ws, r_num, fill_obj, is_bold=False, align_b="right", bold_f cell_b.alignment = Alignment(horizontal=align_b, vertical="center", wrap_text=wrap_b) -# --- 1. СВОДКА НА СЕГОДНЯ (ОСТАВЛЕНА БЕЗ ИЗМЕНЕНИЙ, КАК ЕСТЬ) --- +# --- 1. СВОДКА НА СЕГОДНЯ --- def generate_summary_excel(merged_df, date_str="27.07.2026", filename=None): if not filename: filename = f"{format_date_ru(date_str)} сводка.xlsx" @@ -162,7 +162,7 @@ def generate_summary_excel(merged_df, date_str="27.07.2026", filename=None): ws.row_dimensions[current_row].hidden = True current_row += 1 - # 5. ИТОГО НА РАБОТЕ (Включает: пришли по СКУД + Командировки + Удаленная работа) + # 5. ИТОГО НА РАБОТЕ (Раскрывающийся список, свернут hidden=True) is_working_mask = (merged_df['Пришел'] == True) | ( merged_df['Вид_отсутствия'].astype(str).str.lower().str.contains('командировк|удален|дистанцион|разъездн', regex=True, na=False) ) @@ -173,6 +173,14 @@ def generate_summary_excel(merged_df, date_str="27.07.2026", filename=None): format_row_cells(ws, current_row, FILL_PRESENT, is_bold=True, bold_font=bold_font) current_row += 1 + if not present.empty: + for idx, fio in enumerate(sorted(present['Сотрудник'].dropna().unique()), 1): + ws.cell(row=current_row, column=1, value=f"{idx}. {fio}") + format_row_cells(ws, current_row, FILL_PRESENT, is_bold=False) + ws.row_dimensions[current_row].outlineLevel = 1 + ws.row_dimensions[current_row].hidden = True + current_row += 1 + # 6. АНОМАЛИИ (В самом низу таблицы, раскрывающийся список) anomalies = merged_df[(merged_df['Пришел'] == True) & (merged_df['Вид_отсутствия'].notna())] @@ -223,7 +231,7 @@ def generate_summary_excel(merged_df, date_str="27.07.2026", filename=None): print(f"[⚠️] Файл открыт в Excel! Сохранено как: {alt_path}") -# --- 2. ДЕТАЛЬНЫЙ ОТЧЕТ ЗА ВЧЕРА (С ДОРАБОТАННЫМ РАСЧЕТОМ И ЗЕЛЕНОЙ ПОДСВЕТКОЙ АНОМАЛИЙ) --- +# --- 2. ДЕТАЛЬНЫЙ ОТЧЕТ ЗА ВЧЕРА --- def generate_detailed_excel(merged_df, date_str="26.07.2026", filename=None): if not filename: filename = f"{format_date_ru(date_str)} отчет.xlsx"