From ba2a02d1cddc5d469041d2d9b5325f4bf4da17bc Mon Sep 17 00:00:00 2001 From: prog1764 Date: Tue, 4 Aug 2026 16:54:38 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA?= =?UTF-8?q?=D0=B0=20=C2=AB=D0=A1=D1=83=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=C2=BB?= =?UTF-8?q?=20=E2=80=94=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=20=C2=AB?= =?UTF-8?q?=D0=97=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D1=8C=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BE=D1=80?= =?UTF-8?q?=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Если объект КИИ находится в той же организации — одним кликом копирует наименование, адрес, ИНН, КПП из вкладки «Организация» в поля субъекта. --- dokogen/ui.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/dokogen/ui.py b/dokogen/ui.py index dcc27d7..bfdbb9c 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -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 = []