From 9998410dd6de6cbf5183b68db6b658b96cc877fe Mon Sep 17 00:00:00 2001 From: DokoGen Date: Mon, 3 Aug 2026 12:00:57 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=D0=B7=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=BD=D0=B8=D0=BA=D0=B0=20152-=D0=A4=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - {{security_department}} — наименование структурного подразделения по безопасности (из поля 'структурное подразделение') - {{item.pd_actions}} — действия с ПДн в цикле ИС - {{item.structure}} — структура ИС импортируется из листов ИС - КПП уже импортировался ({{company_kpp}}) - UI: применение подразделения, структуры и действий при импорте --- dokogen/importer.py | 4 ++++ dokogen/models.py | 3 +++ dokogen/ui.py | 6 ++++++ dokogen/variables.py | 3 +++ 4 files changed, 16 insertions(+) diff --git a/dokogen/importer.py b/dokogen/importer.py index 39fb109..cb79c85 100644 --- a/dokogen/importer.py +++ b/dokogen/importer.py @@ -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 diff --git a/dokogen/models.py b/dokogen/models.py index 05abad1..4b51360 100644 --- a/dokogen/models.py +++ b/dokogen/models.py @@ -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: diff --git a/dokogen/ui.py b/dokogen/ui.py index 0f30192..e4a0919 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -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() diff --git a/dokogen/variables.py b/dokogen/variables.py index 61d22ec..a6e1c8c 100644 --- a/dokogen/variables.py +++ b/dokogen/variables.py @@ -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