промежуточный положительный результат. Отчеты коррктно формируются. Перед автоматической загрузкой файлов 1С.

This commit is contained in:
2026-07-30 12:42:41 +03:00
parent 2fc417f3a7
commit 9347c42d22
10 changed files with 477 additions and 237 deletions
+8 -3
View File
@@ -1,5 +1,6 @@
"""
Модуль автоматического экспорта данных СКУД (Orion) из MS SQL Server в Excel.
Исправлена логика определения направления проходов (Mode = 2 -> OUT).
"""
import argparse
@@ -63,15 +64,18 @@ DECLARE @TargetDate DATE = @InputDate;
DECLARE @StartDate DATETIME = CAST(@TargetDate AS DATETIME);
DECLARE @EndDate DATETIME = DATEADD(SECOND, -1, DATEADD(DAY, 1, @StartDate));
-- 1. Фильтруем логи только за нужные 24 часа с ПРАВИЛЬНЫМ ПРИОРИТЕТОМ ВЫХОДА (Mode = 2)
WITH DailyLogs AS (
SELECT
log.HozOrgan AS EmployeeID,
log.TimeVal,
log.Event,
log.Mode,
CASE WHEN log.Event IN (28, 26, 32) OR log.Mode = 1 THEN 'IN'
WHEN log.Event IN (29, 27, 33) OR log.Mode = 2 THEN 'OUT'
ELSE 'OTHER' END AS Direction,
CASE
WHEN log.Mode = 2 OR log.Event IN (29, 27, 33) THEN 'OUT'
WHEN log.Mode = 1 OR log.Event IN (28, 26, 32) THEN 'IN'
ELSE 'OTHER'
END AS Direction,
ROW_NUMBER() OVER (PARTITION BY log.HozOrgan ORDER BY log.TimeVal DESC) AS RowNumDesc
FROM pLogData log WITH (NOLOCK)
WHERE log.TimeVal BETWEEN @StartDate AND @EndDate
@@ -79,6 +83,7 @@ WITH DailyLogs AS (
AND log.HozOrgan > 0
AND (log.Event IN (28, 29, 26, 27, 32, 33) OR log.Mode IN (1, 2))
),
-- 2. Агрегируем первичное время входа и последнее время выхода
Passages AS (
SELECT
EmployeeID,