перед внедрением API и веб интерфейса.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import pyodbc
|
||||
from config import ZUP_SQL_CONFIG
|
||||
|
||||
print("="*60)
|
||||
print("🔍 ЗАПУСК СКАНЕРА СТРУКТУРЫ 1С:ЗУП 3.1")
|
||||
print("="*60)
|
||||
|
||||
conn_str = (
|
||||
f"DRIVER={ZUP_SQL_CONFIG['driver']};"
|
||||
f"SERVER={ZUP_SQL_CONFIG['server']};"
|
||||
f"DATABASE={ZUP_SQL_CONFIG['database']};"
|
||||
f"UID={ZUP_SQL_CONFIG['user']};"
|
||||
f"PWD={ZUP_SQL_CONFIG['password']};"
|
||||
f"TrustServerCertificate=yes;"
|
||||
f"Encrypt=no;"
|
||||
)
|
||||
|
||||
with pyodbc.connect(conn_str) as conn:
|
||||
cursor = conn.cursor()
|
||||
|
||||
print("⏳ Анализ справочников...")
|
||||
cursor.execute("SELECT name FROM sys.tables WHERE name LIKE '_Reference%'")
|
||||
for row in cursor.fetchall():
|
||||
t = row[0]
|
||||
try:
|
||||
cursor.execute(f"SELECT TOP 5 CAST(_Description AS NVARCHAR(255)) FROM {t} WITH (NOLOCK) WHERE _Description <> ''")
|
||||
vals = [r[0].strip() for r in cursor.fetchall() if r[0]]
|
||||
if not vals: continue
|
||||
text = " ".join(vals).lower()
|
||||
|
||||
# Ищем сотрудников (исключая физлиц _Reference299)
|
||||
if t != '_Reference299' and any(w in text for w in ["александров", "иванов", "смирнов", "петрова", "сергеев"]):
|
||||
print(f"👤 СОТРУДНИКИ ({t}): {vals[:3]}")
|
||||
# Ищем должности
|
||||
elif any(w in text for w in ["инженер", "специалист", "директор", "уборщик"]):
|
||||
print(f"💼 ДОЛЖНОСТИ ({t}): {vals[:3]}")
|
||||
# Ищем подразделения
|
||||
elif any(w in text for w in ["отдел", "управление", "служба"]):
|
||||
print(f"🏢 ПОДРАЗДЕЛЕНИЯ ({t}): {vals[:3]}")
|
||||
except:
|
||||
pass
|
||||
|
||||
print("\n⏳ Анализ регистров кадровой истории...")
|
||||
cursor.execute("SELECT name FROM sys.tables WHERE name LIKE '_InfoRg%'")
|
||||
for row in cursor.fetchall():
|
||||
t = row[0]
|
||||
try:
|
||||
# Ищем широкие регистры (Текущие кадровые данные имеют много колонок)
|
||||
cursor.execute(f"SELECT COUNT(*) FROM sys.columns WHERE object_id = OBJECT_ID('{t}')")
|
||||
col_count = cursor.fetchone()[0]
|
||||
|
||||
cursor.execute(f"SELECT COUNT(*) FROM {t} WITH (NOLOCK)")
|
||||
row_count = cursor.fetchone()[0]
|
||||
|
||||
if col_count > 15 and row_count > 500:
|
||||
print(f"📋 ШИРОКИЙ РЕГИСТР КАДРОВ ({t}) -> Колонок: {col_count}, Строк: {row_count}")
|
||||
except:
|
||||
pass
|
||||
|
||||
print("\n✅ Сканирование завершено!")
|
||||
Reference in New Issue
Block a user