feat: в выпадающем списке показателей — «—» (применим без категории) и «не применим»

- options показателя: пусто / «—» (показатель применим, но категория
  не присвоена) / «не применим» / III / II / I
- _selected различает «прочерк» и «не применим» (оба не влияют
  на категорию, но сохраняются в список показателей)
- список показателей: «применим, категория не присвоена (—)» /
  «не применим»
- авто-обоснование: прочерк — «применим, категория не присвоена»,
  не применим — текст из словаря сферы
This commit is contained in:
2026-08-04 20:55:03 +04:00
parent 972ff11b49
commit 7f70bb0792
+19 -10
View File
@@ -1935,9 +1935,9 @@ class DokoGenApp:
# Текст показателя
lbl_name = ttk.Label(row, text=name, wraplength=640, justify=tk.LEFT)
lbl_name.pack(side=tk.LEFT)
# Выбор значения (категория) + вариант «не применим»
# Выбор значения: пусто / «—» (применим, без категории) / «не применим» / категории
var = tk.StringVar(value='')
options = ['', 'не применим']
options = ['', '', 'не применим']
for cat in ('III', 'II', 'I'):
v = values.get(cat, '')
if v:
@@ -2005,6 +2005,9 @@ class DokoGenApp:
s = var.get().strip()
if not s:
continue
if s == '':
out.append((num, name, '', 'прочерк')) # применим, категория не присвоена
continue
if s == 'не применим':
out.append((num, name, '', 'не применим'))
continue
@@ -2039,11 +2042,13 @@ class DokoGenApp:
def _save():
selected = _selected()
# Заполняем список показателей (включая «не применим»)
# Заполняем список показателей (включая «—» и «не применим»)
lines = []
for num, name, cat, val in selected:
if cat == '':
if cat == '' and val == 'не применим':
lines.append(f"Показатель {num}. {name} — не применим")
elif cat == '':
lines.append(f"Показатель {num}. {name} — применим, категория не присвоена (—)")
else:
lines.append(f"Показатель {num}. {name}{cat} категория: {val}")
if hasattr(self, 'is_criteria_values_listbox'):
@@ -2067,13 +2072,17 @@ class DokoGenApp:
f"Объект отнесён к {cat} категории значимости. Основания: "
+ "; ".join(f"показатель {num} ({c} категория)" for num, _, c, _ in chosen) + "."
)
for num, name, _, _ in not_applicable:
base = f"Показатель {num}. {name}не применим"
jtxt = _just_text(num)
if jtxt:
auto_parts.append(base + ": " + jtxt)
for num, name, _, val in not_applicable:
if val == 'не применим':
base = f"Показатель {num}. {name} — не применим"
jtxt = _just_text(num)
if jtxt:
auto_parts.append(base + ": " + jtxt)
else:
auto_parts.append(base + ".")
else:
auto_parts.append(base + ".")
auto_parts.append(
f"Показатель {num}. {name} — применим, категория значимости не присвоена.")
if not_applicable and not chosen:
auto_parts.insert(0, "Категория значимости: не присвоена (показатели критериев значимости неприменимы к объекту).")
auto_just = "\n".join(auto_parts) if auto_parts else ""