diff --git a/dokogen/ui.py b/dokogen/ui.py index 3eb63b6..ab2e98a 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -2368,10 +2368,16 @@ class DokoGenApp: profit = _num2(getattr(self.model, 'profit', '') or '') tax = _num2(getattr(self.model, 'profit_tax', '') or '') if profit and tax: + # Подсказка: балансовая стоимость объекта как ориентир для ΔДоходов + _hint = '' + _bv = getattr(isys, 'balance_value', '') or '' + _bvn = _num2(_bv) + if _bvn: + _hint = f"\n(балансовая стоимость объекта: {_bvn:,.0f} руб. — можно использовать как ориентир)" dincome = simpledialog.askfloat( "Показатель 9 — ущерб бюджетам", "Снижение уровня доходов субъекта КИИ ΔДоходов (руб.):\n" - "(наихудший сценарий компьютерной атаки на объект)", + "(наихудший сценарий компьютерной атаки на объект)" + _hint, parent=dialog, minvalue=0) if dincome is None: continue @@ -2411,12 +2417,19 @@ class DokoGenApp: else: justify_txt.insert('1.0', full) filled.append(f"п. {num}: №9 = {val:.6f}% → {cat or '—'}") + # Что осталось незаполненным (применимые, без значения) + left = [] + for num, name, values, var, applicable_here in rows: + if applicable_here and not var.get().strip(): + left.append(num) + _calc() # пересчитать категорию сразу messagebox.showinfo( "⚡ Автозаполнение ПП 127", "Заполнено автоматически (рекомендации):\n" + ("\n".join(filled) if filled else "— нет") + - "\n\nОстальные применимые показатели заполните вручную.\n" - "Категория объекта будет рассчитана по наивысшей из выбранных.") + (f"\n\nОсталось заполнить вручную (нет данных для расчёта): {', '.join(left)}" + if left else "\n\nВсе применимые показатели заполнены!") + + "\n\nКатегория объекта пересчитана по наивысшей из выбранных.") def _open_calc_dialog(num, name, var, combo): """Авторасчёт показателя 8 или 9 по «Рекомендациям по оценке показателей