feat: импорт новых переменных из опросника 152-ФЗ

- {{security_department}} — наименование структурного подразделения
  по безопасности (из поля 'структурное подразделение')
- {{item.pd_actions}} — действия с ПДн в цикле ИС
- {{item.structure}} — структура ИС импортируется из листов ИС
- КПП уже импортировался ({{company_kpp}})
- UI: применение подразделения, структуры и действий при импорте
This commit is contained in:
2026-08-03 12:00:57 +04:00
parent ee76fabdf6
commit 9998410dd6
4 changed files with 16 additions and 0 deletions
+4
View File
@@ -195,6 +195,10 @@ def _import_152_is_list(wb, data, log_fn):
if 'перечисленные пдн принадлежат' in field_lower or 'принадлеж' in field_lower:
current_section = 'subjects'
continue
if 'структура ис' in field_lower or 'структура информационной' in field_lower or 'структур.*ис' in field_lower:
if val_b:
is_obj['structure'] = val_b
continue
if 'количество записей' in field_lower or 'количество субъект' in field_lower:
if val_b:
is_obj['personalDataCount'] = val_b
+3
View File
@@ -94,6 +94,9 @@ class Company:
paper_documents_list: List[PaperDocument] = field(default_factory=list)
employees_access: List[Dict[str, str]] = field(default_factory=list)
# Наименование структурного подразделения по безопасности
security_department: str = ""
def update_declensions(self, inflect_func):
"""Обновить склонения полного названия"""
if self.full_name:
+6
View File
@@ -1358,6 +1358,10 @@ class DokoGenApp:
if data.get('contractDate'):
self.doc_date_var.set(data['contractDate'])
# Наименование структурного подразделения по безопасности
if data.get('ispdnDepartment'):
self.model.security_department = data['ispdnDepartment']
# Информационные системы
if data.get('informationSystems'):
self.model.information_systems.clear()
@@ -1375,6 +1379,8 @@ class DokoGenApp:
processing_modes=is_data.get('processing_mode', ''),
purpose=is_data.get('description', ''),
room=is_data.get('room', ''),
structure=is_data.get('structure', ''),
pd_actions_list=is_data.get('pd_actions', []),
)
self.model.information_systems.append(isys)
self._refresh_is_listbox()
+3
View File
@@ -50,6 +50,8 @@ VARIABLE_DEFS = [
('{{company_ogrn}}', 'A', 'ОГРН', 'company:ogrn'),
('{{company_ogrn_date}}', 'A', 'Дата ОГРН', 'company:ogrn_date'),
('{{company_kpp}}', 'A', 'КПП', 'company:kpp'),
('{{security_department}}', 'A', 'Наименование структурного подразделения по безопасности', 'company:security_department'),
('{{item.pd_actions}}', 'B', 'Действия с ПДн (в цикле ИС)', 'item:pd_actions'),
# === Комиссия ===
('{{commission_list}}', 'A', 'Список комиссии', 'commission_list'),
@@ -281,6 +283,7 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]:
'is_purpose': isys.purpose or '',
'structure': getattr(isys, 'structure', '') or '',
'software': getattr(isys, 'software', '') or '',
'pd_actions': '; '.join(isys.pd_actions_list or []) or '',
})
loops['information_systems'] = items