feat: вкладка «Субъект» — кнопка «Заполнить из данных организации»

Если объект КИИ находится в той же организации — одним кликом копирует
наименование, адрес, ИНН, КПП из вкладки «Организация» в поля субъекта.
This commit is contained in:
2026-08-04 16:54:38 +04:00
parent 28cd764795
commit ba2a02d1cd
+31
View File
@@ -857,6 +857,9 @@ class DokoGenApp:
entry = ttk.Entry(subj_frame, width=70)
entry.grid(row=i, column=1, padx=8, sticky=tk.EW, pady=1)
setattr(self, attr, entry)
ttk.Button(subj_frame, text="📋 Заполнить из данных организации",
command=self._fill_subject_from_company).grid(
row=len(subj_fields), column=0, columnspan=2, sticky=tk.W, pady=(8, 0))
subj_frame.columnconfigure(1, weight=1)
# ===== Вкладка «Сеть» =====
@@ -1591,6 +1594,34 @@ class DokoGenApp:
if user:
self.users_listbox.insert(tk.END, user)
def _fill_subject_from_company(self):
"""Заполнить поля субъекта данными организации (если объект в той же организации)."""
if self._current_is_idx is None:
messagebox.showinfo("Субъект", "Сначала выберите объект КИИ в списке слева")
return
c = self.model
if not (c.full_name or c.inn):
messagebox.showinfo("Субъект",
"Вкладка «Организация» пуста.\nСначала заполните данные организации "
"(или импортируйте опросник).")
return
def _set_entry(attr, value):
w = getattr(self, attr, None)
if w is not None:
w.delete(0, tk.END)
w.insert(0, value or '')
_set_entry('is_subject_name_entry', c.full_name or c.short_name)
_set_entry('is_subject_address_entry', c.address)
_set_entry('is_subject_inn_entry', c.inn)
_set_entry('is_subject_kpp_entry', c.kpp)
# Элемент (компонент) объекта — оставляем как есть, заполняется вручную
self.log("📋 Субъект заполнен данными организации")
messagebox.showinfo("Субъект",
"Поля «Наименование», «Адрес», «ИНН», «КПП» заполнены из вкладки «Организация».\n"
"«Элемент (компонент) объекта» заполните вручную.")
def _select_users_from_employees(self):
"""Выбор пользователей ИС из списка сотрудников организации (вкладка «Пользователи»)."""
names = []