From c90660a0f83772e60f38dcb17d21aab54a990426 Mon Sep 17 00:00:00 2001 From: LocoAgent Date: Wed, 5 Aug 2026 15:01:12 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=9F-127=20=D0=BF.6:=20=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=87=D1=91=D1=82=D0=B0=20=D0=BF=D0=BE=20=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=BC=20=D0=BF=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=D0=BC=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D1=81=D0=B2=D0=BE=D0=B5=D0=BD=D0=B8=D0=B8?= =?UTF-8?q?=20I=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B8?= =?UTF-8?q?=20(=D0=B2=20=D0=B0=D0=B2=D1=82=D0=BE=D0=B3=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=E2=80=94=20=C2=AB?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D1=87=D1=91=D1=82=20=D0=BD=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BE=D0=B4=D0=B8=D1=82=D1=81=D1=8F=C2=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dokogen/variables.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/dokogen/variables.py b/dokogen/variables.py index b8a5bf3..ff1fcac 100644 --- a/dokogen/variables.py +++ b/dokogen/variables.py @@ -676,6 +676,7 @@ def _build_categorization_indicators(company, is_list): isys = is_list[0] if is_list else None rows = [] + first_cat_num = None # номер показателя, по которому объект отнесён к I категории (п. 6 ПП-127) for grp in criteria: section = grp.get('criteria', '') for ind in grp.get('indicators', []): @@ -688,7 +689,20 @@ def _build_categorization_indicators(company, is_list): value = '—' justification = '—' category = '—' - if not applicable: + if first_cat_num is not None: + # Остановка расчёта: объект уже отнесён к I категории по одному из показателей + # (п. 6 Правил, утв. ПП РФ № 127: «расчет по остальным показателям не проводится»). + if applicable: + value = '—' + justification = (f"Расчёт по данному показателю не проводится: объект отнесён к " + f"I категории значимости по показателю {first_cat_num} " + f"(п. 6 Правил категорирования, утв. ПП РФ № 127).") + category = '—' + else: + value = 'Показатель не применим.' + justification = (just.get(num) or just.get(grp_num) + or f"Показатель не применим к объекту КИИ организации сферы «{sphere or '—'}».") + elif not applicable: value = 'Показатель не применим.' justification = (just.get(num) or just.get(grp_num) or f"Показатель не применим к объекту КИИ организации сферы «{sphere or '—'}».") @@ -714,6 +728,10 @@ def _build_categorization_indicators(company, is_list): justification = (just.get(num) or just.get(grp_num) or 'Показатель применим к объекту КИИ; значение определяется по данным объекта.') + # Если по показателю присвоена I категория — фиксируем для остановки расчёта + if first_cat_num is None and category.startswith('I'): + first_cat_num = num + rows.append({ 'section': section, 'name': name,