diff --git a/dokogen/dictionaries/criteria_justifications.json b/dokogen/dictionaries/criteria_justifications.json index 203ea92..93c224f 100644 --- a/dokogen/dictionaries/criteria_justifications.json +++ b/dokogen/dictionaries/criteria_justifications.json @@ -6,6 +6,18 @@ "4": "Субъект КИИ не является оператором связи, объекты КИИ организации сферы здравоохранения не относятся к объектам транспортной инфраструктуры.", "5": "Организация сферы здравоохранения является юридическим лицом, обеспечивающим эксплуатацию информационной системы, задействованной в процессе оказания государственной услуги, однако нарушение функционирования информационной системы (рассматриваемого объекта КИИ), не участвующей в обработке информации, необходимой для оказания государственной услуги, не влечет за собой нарушение и (или) прекращение доступа к государственной услуге. Рассматриваемый объект КИИ не участвует в обработке информации, необходимой для оказания государственной услуги.", "6": "Организация сферы здравоохранения не является органом государственной власти, в связи с этим критерий неприменим.", - "7": "Организация сферы здравоохранения не является субъектом политической сферы деятельности, в связи с этим критерий неприменим." + "7": "Организация сферы здравоохранения не является субъектом политической сферы деятельности, в связи с этим критерий неприменим.", + "8": "Организация сферы здравоохранения не является государственной корпорацией, государственным унитарным предприятием, государственной компанией, стратегическим акционерным обществом, стратегическим предприятием, в связи с этим критерий неприменим.", + "9": "Объект КИИ задействован только в предоставлении медицинских услуг, освобожденных от налогообложения, в связи с этим критерий неприменим.", + "10": "Организация сферы здравоохранения не является субъектом банковской сферы деятельности.", + "10.1": "Организация сферы здравоохранения не является центральным контрагентом.", + "10.2": "Организация сферы здравоохранения не является центральным депозитарием.", + "10.3": "Организация сферы здравоохранения не является негосударственным пенсионным фондом.", + "10.4": "Организация сферы здравоохранения не является страховой организацией.", + "10.5": "Организация сферы здравоохранения не является оператором услуг информационного обмена.", + "11": "Объекты КИИ организации сферы здравоохранения не относятся к опасным производственным объектам в соответствии с законодательством Российской Федерации.", + "12": "Организация сферы здравоохранения не выполняет функции пункта управления (ситуационного центра) государственного органа власти или государственной корпорации.", + "13": "Организация сферы здравоохранения не является субъектом обеспечения обороны страны, безопасности государства и правопорядка.", + "14": "Организация сферы здравоохранения не имеет информационных систем, функционирующих в области обеспечения обороны страны, безопасности государства и правопорядка." } } diff --git a/dokogen/ui.py b/dokogen/ui.py index e9439ed..f599d6a 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -1858,6 +1858,16 @@ class DokoGenApp: _sphere_just = self.is_sphere_combo.get() if hasattr(self, 'is_sphere_combo') else '' _just = justifications.get(_sphere_just, {}) if _sphere_just else {} + def _just_text(num): + """Обоснование для показателя: точный ключ, иначе группа по первым цифрам + (2а→2, 3б→3, 10.6→10, 13а→13).""" + if num in _just: + return _just[num] + m = _re.match(r'(\d+)', num) + if m and m.group(1) in _just: + return _just[m.group(1)] + return None + dialog = tk.Toplevel(self.root) dialog.title("Показатели критериев значимости (ПП РФ № 127)") dialog.geometry("980x700") @@ -1924,16 +1934,17 @@ class DokoGenApp: def _on_pick(_e, _num=num, _var=var, _name=name): # При выборе «не применим» — автоподстановка обоснования из словаря сферы - if _var.get().strip() == 'не применим' and _num in _just: - txt = _just[_num] + if _var.get().strip() == 'не применим': + txt = _just_text(_num) prefix = f"Показатель {_num}. {_name} — не применим." - full = prefix + " " + txt - cur = justify_txt.get('1.0', 'end-1c').strip() - if prefix not in cur: - if cur: - justify_txt.insert('end', '\n' + full) - else: - justify_txt.insert('1.0', full) + if txt: + full = prefix + " " + txt + cur = justify_txt.get('1.0', 'end-1c').strip() + if prefix not in cur: + if cur: + justify_txt.insert('end', '\n' + full) + else: + justify_txt.insert('1.0', full) combo.bind('<>', _on_pick) if not applicable_here: @@ -2036,8 +2047,9 @@ class DokoGenApp: ) for num, name, _, _ in not_applicable: base = f"Показатель {num}. {name} — не применим" - if num in _just: - auto_parts.append(base + ": " + _just[num]) + jtxt = _just_text(num) + if jtxt: + auto_parts.append(base + ": " + jtxt) else: auto_parts.append(base + ".") if not_applicable and not chosen: