feat: вкладка «Субъект» — как в опроснике (5 полей)

- Наименование организации, эксплуатирующей объект
- Адрес местонахождения
- Элемент (компонент) объекта, который эксплуатируется лицом
- ИНН лица, эксплуатирующего объект
- КПП его обособленных подразделений

Убраны лишние поля субъекта (руководитель, отв. за безопасность, подразделение, телефон, email), модель/UI/импорт/variables приведены в соответствие
This commit is contained in:
2026-08-04 15:35:53 +04:00
parent ed71343d92
commit ffbe96d8c0
4 changed files with 18 additions and 70 deletions
+3 -6
View File
@@ -285,10 +285,7 @@ def _import_187_is_list(wb, data, settings, log_fn):
'sphere': '', 'purpose': '', 'object_type': '', 'architecture': '',
'typical_object': '',
'subject_name': '', 'subject_address': '',
'subject_chief_position': '', 'subject_chief_fio': '',
'subject_security_position': '', 'subject_security_fio': '',
'subject_department': '', 'subject_department_chief': '',
'subject_phone': '', 'subject_email': '',
'subject_element': '',
'subject_inn': '', 'subject_kpp': '',
'net_category': '', 'net_operator': '', 'net_purpose': '', 'net_method': '',
'hw_sw': '', 'os_sw': '', 'app_sw': '',
@@ -397,8 +394,8 @@ def _import_187_is_list(wb, data, settings, log_fn):
if _set(field_lower, 'subject_kpp', val_b):
log_fn(f" КПП субъекта: {val_b[:60]}")
continue
if 'элемент (компонент) объекта, который эксплуатируется' in field_lower:
if _set(field_lower, 'subject_department', val_b):
if 'элемент (компонент) объекта' in field_lower or 'элемент объекта' in field_lower:
if _set(field_lower, 'subject_element', val_b):
log_fn(f" Элемент объекта: {val_b[:60]}")
continue
# --- Сети электросвязи ---
+6 -13
View File
@@ -33,19 +33,12 @@ class InformationSystem:
architecture: str = "" # Архитектура объекта
typical_object: str = "" # Наименование типового отраслевого объекта КИИ
# Субъект (владелец объекта)
subject_name: str = "" # Наименование субъекта
subject_address: str = "" # Адрес местонахождения субъекта
subject_chief_position: str = "" # Должность руководителя субъекта
subject_chief_fio: str = "" # ФИО руководителя субъекта
subject_security_position: str = "" # Должность ответственного за безопасность ЗОКИИ
subject_security_fio: str = "" # ФИО ответственного за безопасность ЗОКИИ
subject_department: str = "" # Структурное подразделение по безопасности
subject_department_chief: str = "" # Руководитель структурного подразделения
subject_phone: str = "" # Телефон
subject_email: str = "" # Адрес электронной почты
subject_inn: str = "" # ИНН субъекта
subject_kpp: str = "" # КПП обособленных подразделений
# Субъект (организация, эксплуатирующая объект — как в опроснике)
subject_name: str = "" # Наименование организации, эксплуатирующей объект
subject_address: str = "" # Адрес местонахождения
subject_element: str = "" # Элемент (компонент) объекта, который эксплуатируется лицом
subject_inn: str = "" # ИНН лица, эксплуатирующего объект
subject_kpp: str = "" # КПП его обособленных подразделений
# Сети электросвязи
net_category: str = "" # Категория сети электросвязи
+8 -43
View File
@@ -846,18 +846,11 @@ class DokoGenApp:
subj_frame = ttk.Frame(subj_tab, padding=8)
subj_frame.pack(fill=tk.BOTH, expand=True)
subj_fields = [
("Наименование субъекта:", "is_subject_name_entry"),
("Наименование организации, эксплуатирующей объект:", "is_subject_name_entry"),
("Адрес местонахождения:", "is_subject_address_entry"),
("Должность руководителя:", "is_subject_chief_position_entry"),
("ФИО руководителя:", "is_subject_chief_fio_entry"),
("Должность отв. за безопасность:", "is_subject_security_position_entry"),
("ФИО отв. за безопасность:", "is_subject_security_fio_entry"),
("Структурное подразделение:", "is_subject_department_entry"),
("Руководитель подразделения:", "is_subject_department_chief_entry"),
("Телефон:", "is_subject_phone_entry"),
("Эл. почта:", "is_subject_email_entry"),
("ИНН субъекта:", "is_subject_inn_entry"),
("КПП обособленных подразделений:", "is_subject_kpp_entry"),
("Элемент (компонент) объекта, который эксплуатируется лицом:", "is_subject_element_entry"),
("ИНН лица, эксплуатирующего объект:", "is_subject_inn_entry"),
("КПП его обособленных подразделений:", "is_subject_kpp_entry"),
]
for i, (label, attr) in enumerate(subj_fields):
ttk.Label(subj_frame, text=label).grid(row=i, column=0, sticky=tk.W, pady=2)
@@ -1176,14 +1169,7 @@ class DokoGenApp:
('is_typical_object_combo', 'typical_object'),
('is_subject_name_entry', 'subject_name'),
('is_subject_address_entry', 'subject_address'),
('is_subject_chief_position_entry', 'subject_chief_position'),
('is_subject_chief_fio_entry', 'subject_chief_fio'),
('is_subject_security_position_entry', 'subject_security_position'),
('is_subject_security_fio_entry', 'subject_security_fio'),
('is_subject_department_entry', 'subject_department'),
('is_subject_department_chief_entry', 'subject_department_chief'),
('is_subject_phone_entry', 'subject_phone'),
('is_subject_email_entry', 'subject_email'),
('is_subject_element_entry', 'subject_element'),
('is_subject_inn_entry', 'subject_inn'),
('is_subject_kpp_entry', 'subject_kpp'),
('is_net_category_entry', 'net_category'),
@@ -1416,14 +1402,7 @@ class DokoGenApp:
('is_typical_object_combo', 'typical_object'),
('is_subject_name_entry', 'subject_name'),
('is_subject_address_entry', 'subject_address'),
('is_subject_chief_position_entry', 'subject_chief_position'),
('is_subject_chief_fio_entry', 'subject_chief_fio'),
('is_subject_security_position_entry', 'subject_security_position'),
('is_subject_security_fio_entry', 'subject_security_fio'),
('is_subject_department_entry', 'subject_department'),
('is_subject_department_chief_entry', 'subject_department_chief'),
('is_subject_phone_entry', 'subject_phone'),
('is_subject_email_entry', 'subject_email'),
('is_subject_element_entry', 'subject_element'),
('is_subject_inn_entry', 'subject_inn'),
('is_subject_kpp_entry', 'subject_kpp'),
('is_net_category_entry', 'net_category'),
@@ -1490,14 +1469,7 @@ class DokoGenApp:
typical_object=src.typical_object,
subject_name=src.subject_name,
subject_address=src.subject_address,
subject_chief_position=src.subject_chief_position,
subject_chief_fio=src.subject_chief_fio,
subject_security_position=src.subject_security_position,
subject_security_fio=src.subject_security_fio,
subject_department=src.subject_department,
subject_department_chief=src.subject_department_chief,
subject_phone=src.subject_phone,
subject_email=src.subject_email,
subject_element=src.subject_element,
subject_inn=src.subject_inn,
subject_kpp=src.subject_kpp,
net_category=src.net_category,
@@ -2061,14 +2033,7 @@ class DokoGenApp:
typical_object=is_data.get('typical_object', ''),
subject_name=is_data.get('subject_name', ''),
subject_address=is_data.get('subject_address', ''),
subject_chief_position=is_data.get('subject_chief_position', ''),
subject_chief_fio=is_data.get('subject_chief_fio', ''),
subject_security_position=is_data.get('subject_security_position', ''),
subject_security_fio=is_data.get('subject_security_fio', ''),
subject_department=is_data.get('subject_department', ''),
subject_department_chief=is_data.get('subject_department_chief', ''),
subject_phone=is_data.get('subject_phone', ''),
subject_email=is_data.get('subject_email', ''),
subject_element=is_data.get('subject_element', ''),
subject_inn=is_data.get('subject_inn', ''),
subject_kpp=is_data.get('subject_kpp', ''),
net_category=is_data.get('net_category', ''),
+1 -8
View File
@@ -313,14 +313,7 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]:
'typical_object': getattr(isys, 'typical_object', '') or '',
'subject_name': getattr(isys, 'subject_name', '') or '',
'subject_address': getattr(isys, 'subject_address', '') or '',
'subject_chief_position': getattr(isys, 'subject_chief_position', '') or '',
'subject_chief_fio': getattr(isys, 'subject_chief_fio', '') or '',
'subject_security_position': getattr(isys, 'subject_security_position', '') or '',
'subject_security_fio': getattr(isys, 'subject_security_fio', '') or '',
'subject_department': getattr(isys, 'subject_department', '') or '',
'subject_department_chief': getattr(isys, 'subject_department_chief', '') or '',
'subject_phone': getattr(isys, 'subject_phone', '') or '',
'subject_email': getattr(isys, 'subject_email', '') or '',
'subject_element': getattr(isys, 'subject_element', '') or '',
'subject_inn': getattr(isys, 'subject_inn', '') or '',
'subject_kpp': getattr(isys, 'subject_kpp', '') or '',
'net_category': getattr(isys, 'net_category', '') or '',