fix: кнопки 🧮 расчёта показателей 8/9 — NameError в _open_calc_dialog

В _open_calc_dialog использовался _num2 (определён только в
_auto_fill_criteria) — tkinter молча глотал исключение, кнопки
«молчали». Заменено на _num (определён внутри _open_calc_dialog).
Дополнительно isys определён в начале диалога ПП 127 для
авторасчёта (доходы/ущерб/балансовая стоимость объекта).
This commit is contained in:
2026-08-04 23:17:48 +04:00
parent 4bffd0e08d
commit 7742cb1e10
+7 -2
View File
@@ -2052,6 +2052,11 @@ class DokoGenApp:
messagebox.showerror("Ошибка", f"Не удалось загрузить таблицу ПП 127: {e}")
return
# Текущий объект КИИ (для авторасчёта п. 8/9: доходы, ущерб, балансовая стоимость)
isys = None
if self._current_is_idx is not None and self._current_is_idx < len(self.model.information_systems):
isys = self.model.information_systems[self._current_is_idx]
# Применимость показателей по сфере объекта (Распоряжение ПРФ № 360-р)
applicable = None # None = все показатели применимы
try:
@@ -2516,10 +2521,10 @@ class DokoGenApp:
e_profit = e_tax = None
# Доходы за 5 лет — из данных организации (поля «Доходы за 5 лет»)
_incs = [_num2(getattr(self.model, f'income_year_{i}', '') or '') for i in range(1, 6)]
_incs = [_num(getattr(self.model, f'income_year_{i}', '') or '') for i in range(1, 6)]
_incs = [x for x in _incs if x is not None]
_d_avg = (sum(_incs) / len(_incs)) if _incs else None
_d_loss = _num2(getattr(self.model, 'income_loss', '') or '')
_d_loss = _num(getattr(self.model, 'income_loss', '') or '')
e_dincome = _row("Суммарный экономический ущерб от нарушения критических процессов (руб.):",
'dincome', f"{_d_loss:,.0f}" if _d_loss else '')
e_budget = _row("Доходы субъекта КИИ, усреднённые за 5 лет (руб.):",