From fdfd79346d3bbe651ff68a803814ea1b7cac5059 Mon Sep 17 00:00:00 2001 From: "Satur@it-depot.ru" Date: Fri, 3 Jul 2026 11:50:56 +0300 Subject: [PATCH] =?UTF-8?q?Initial=20commit:=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20Mai?= =?UTF-8?q?n=5Fv3=20(add=20+=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=20?= =?UTF-8?q?=D0=B4=D1=83=D0=B1=D0=BB=D0=B5=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- .gitignore | 4 + Main_v3.py | 357 ++++++++++++++++++++++++ photo_2026-07-03_11-04-21-Photoroom.ico | Bin 0 -> 270398 bytes 3 files changed, 361 insertions(+) create mode 100644 .gitignore create mode 100644 Main_v3.py create mode 100644 photo_2026-07-03_11-04-21-Photoroom.ico diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..147c64c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +__pycache__/ +build/ +dist/ +*.spec diff --git a/Main_v3.py b/Main_v3.py new file mode 100644 index 0000000..c3b24eb --- /dev/null +++ b/Main_v3.py @@ -0,0 +1,357 @@ +import os +import tkinter as tk +from tkinter import messagebox +import pyodbc +import uuid +import sys + +_BANNER = (""" + + + ....::::::::: + ::::::::::-----:::::: + ::::------------=--------::.. + :::--=--============---==+===-:::. + ::---========++=++++======+++++==--:.: + :--==++++++++++++++++++========---==-::. + --==++++++++++++++++++++=====---:::-==--:: + :-==+**++++++++++++++++++====------::-==-:: + -==+**++++++++++++++++++++=====--------=-:: + -=++*++++++++++++++++++++++=========-----:: + -=+++++++++++++++++++++++++===========----: + :=++++++++++++++++++++++++++==========---:: + -=++++++++++++++++++===+++++===-----====-- + -=++++++++++++++++++++==+++++=====-----==- + -++++++++++++++++++++++++++++++++====----- + ==+++++++*#####*******++++++++++++++++=--= + +===++++++****##%%%%##*****++++**###%##*+==- + +*++=++++****#%##%@%%%%###***++*#%%%%%###*===- + +*++=++++**####*#%@%#%%%##**++*#%%%@@%+*%%*+=- + *++=+++++**+****####%%##*++==+#%%#%%#+++*+==- + +*+++++++++++****###****++=====*####*++=====- + +*=+++++++++++++++++++++++=======+**++=----- + +*=+++++++++++++++++***++++==-=====+++==---- + ++=+++++++++++++++*****+++==---===========-- + +=+++++++++++++*****+++++===---++======--=- + ==++++++++++**********+++++==--+++++=====- + -==+++++++++*********##*******==++++++===- + -==++++++++*****#**##*####**+====++++++== + #%%%%%===+++++++++***##*****####**++++++==+++=- + *+*#%%%#*+====++++++++**#%%%##****##********+====- + ++++++*##%@%#+++**====+++++++*##############***###*+====- + ++******###%%@@@@@%####*+=+==+++++**************+++++=+*++===- +#***+**#*###%@@@@@@@@@@@@@%###*+=+==++++*****++*********++==++++=-=+=+=- +#*#%%%###%%@@@@@@@@@@@@@@@@%###*++++++++**+************+++========*****++==- +%%%######%%####%@@@@@@@@@@@@@@%%**+++++++++++++++***+++=========*###******+++++== +%%@@@@%%%%%%%%%#%%@@@@@@@@@@@@@@%#**+*+**++++++++++++++++=====+%###########***++++* +%@@@@@@@@@%%@@%%%%%%%@@@@@@@@@@@@@@###*****++++++*+++++++===+**#%####%###%####***+*** +%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%####**++++***++++*#####*%##%####%#%%%%##******* +%%%%@%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%##%%%@%%####*%%#%####%#%%%%%######### +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%#*#%#%####%##%%%%%%###%#%## +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%###%######%##%#%%%%%%%%%%%## +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%####%%#####%##%%%%%%%%%%%%%### +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####%%#%%##%#%%%%%%%%%%@%@%### +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####%%%#%%%%#%%%%%%%@@@@@@@%%## +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#%%%%##%%#%%%%%%%%%%%%@@@@@@@%%#** +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%#** +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%#%%%%%%%##%%%%%%%%%%%%%%%%%@@@@@@%%%%##** +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%@@@@@@@%%%%%%##%%%%%%%###%%%%%%%%%%%%%%%%%@@%%%%%%%%##*+ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%*# +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%@@@%@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%% +""") + +# В оконном режиме (сборка без консоли) sys.stdout может быть None — не роняем старт +if getattr(sys, "stdout", None): + try: + print(_BANNER) + except Exception: + pass + + +class RemoteFolderSelector(tk.Tk): + def __init__(self): + super().__init__() + self.title("Remote Folder and SQL Database Selector") + self.geometry("620x560") + + # Создадим фреймы для лучшей компоновки элементов + self.frame_left = tk.Frame(self) + self.frame_left.grid(row=0, column=0, padx=10, pady=10, sticky="nsew") + + self.frame_right = tk.Frame(self) + self.frame_right.grid(row=0, column=1, padx=10, pady=10, sticky="nsew") + + # Сделаем окна масштабируемыми + self.grid_columnconfigure(0, weight=1) + self.grid_columnconfigure(1, weight=1) + self.grid_rowconfigure(0, weight=1) + + # Текущий режим подключения (локально либо по IP) + self.ip_address = None + + # Поле ввода IP-адреса + self.ip_label = tk.Label(self.frame_left, text="Enter IP (optional):") + self.ip_label.grid(row=0, column=0, padx=5, pady=5, sticky="w") + + self.ip_entry = tk.Entry(self.frame_left, width=30) + self.ip_entry.grid(row=1, column=0, padx=5, pady=5, sticky="w") + + self.connect_button = tk.Button(self.frame_left, text="Load Users", command=self.load_users) + self.connect_button.grid(row=2, column=0, padx=5, pady=5) + + # Панель "отметить все / снять все" для пользователей + self.user_toolbar = tk.Frame(self.frame_left) + self.user_toolbar.grid(row=3, column=0, padx=5, pady=(5, 0), sticky="w") + tk.Button(self.user_toolbar, text="Отметить все", + command=lambda: self._set_all(self.user_vars, True)).pack(side="left", padx=(0, 4)) + tk.Button(self.user_toolbar, text="Снять все", + command=lambda: self._set_all(self.user_vars, False)).pack(side="left") + + # Список пользователей с чекбоксами + self.user_vars = {} + self.user_container, self.user_inner = self._create_scrollable_checklist(self.frame_left) + self.user_container.grid(row=4, column=0, padx=5, pady=5, sticky="nsew") + self.frame_left.grid_rowconfigure(4, weight=1) + self.frame_left.grid_columnconfigure(0, weight=1) + + # Поля для ввода данных SQL + self.server_label = tk.Label(self.frame_right, text="SQL Server:") + self.server_label.grid(row=0, column=0, padx=5, pady=5, sticky="w") + + self.server_entry = tk.Entry(self.frame_right, width=30) + self.server_entry.grid(row=1, column=0, padx=5, pady=5, sticky="w") + self.server_entry.insert(0, "SERVERSQL") + + self.login_label = tk.Label(self.frame_right, text="SQL Login:") + self.login_label.grid(row=2, column=0, padx=5, pady=5, sticky="w") + + self.login_entry = tk.Entry(self.frame_right, width=30) + self.login_entry.grid(row=3, column=0, padx=5, pady=5, sticky="w") + self.login_entry.insert(0, "sa") + + self.password_label = tk.Label(self.frame_right, text="SQL Password:") + self.password_label.grid(row=4, column=0, padx=5, pady=5, sticky="w") + + self.password_entry = tk.Entry(self.frame_right, show="*", width=30) + self.password_entry.grid(row=5, column=0, padx=5, pady=5, sticky="w") + + self.sql_button = tk.Button(self.frame_right, text="Load Databases", command=self.load_databases) + self.sql_button.grid(row=6, column=0, padx=5, pady=5) + + # Панель "отметить все / снять все" для баз + self.db_toolbar = tk.Frame(self.frame_right) + self.db_toolbar.grid(row=7, column=0, padx=5, pady=(5, 0), sticky="w") + tk.Button(self.db_toolbar, text="Отметить все", + command=lambda: self._set_all(self.db_vars, True)).pack(side="left", padx=(0, 4)) + tk.Button(self.db_toolbar, text="Снять все", + command=lambda: self._set_all(self.db_vars, False)).pack(side="left") + + # Список баз данных с чекбоксами + self.db_vars = {} + self.db_container, self.db_inner = self._create_scrollable_checklist(self.frame_right) + self.db_container.grid(row=8, column=0, padx=5, pady=5, sticky="nsew") + self.frame_right.grid_rowconfigure(8, weight=1) + self.frame_right.grid_columnconfigure(0, weight=1) + + # Кнопка добавления базы + self.add_button = tk.Button(self.frame_left, text="Добавить отмеченные базы", command=self.add_database_to_ibases) + self.add_button.grid(row=5, column=0, padx=5, pady=5) + + # Загрузка пользователей с локального компьютера по умолчанию + self.load_users() + + def _create_scrollable_checklist(self, parent, width=200, height=180): + """Создаём прокручиваемую область для чекбоксов. Возвращаем (container, inner).""" + container = tk.Frame(parent, borderwidth=1, relief="sunken") + canvas = tk.Canvas(container, width=width, height=height, highlightthickness=0) + scrollbar = tk.Scrollbar(container, orient="vertical", command=canvas.yview) + inner = tk.Frame(canvas) + inner.bind("", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) + canvas.create_window((0, 0), window=inner, anchor="nw") + canvas.configure(yscrollcommand=scrollbar.set) + canvas.pack(side="left", fill="both", expand=True) + scrollbar.pack(side="right", fill="y") + + # Прокрутка колесом мыши, когда курсор над областью + def _on_mousewheel(event): + canvas.yview_scroll(int(-event.delta / 120), "units") + + canvas.bind("", lambda e: canvas.bind_all("", _on_mousewheel)) + canvas.bind("", lambda e: canvas.unbind_all("")) + return container, inner + + def _populate_checklist(self, inner, vars_dict, items): + """Пересоздаём чекбоксы в области inner по списку items.""" + for child in inner.winfo_children(): + child.destroy() + vars_dict.clear() + for item in items: + var = tk.BooleanVar(value=False) + vars_dict[item] = var + tk.Checkbutton(inner, text=item, variable=var, anchor="w").pack(fill="x", anchor="w") + + def _set_all(self, vars_dict, value): + """Отмечаем (True) либо снимаем (False) все чекбоксы.""" + for var in vars_dict.values(): + var.set(value) + + def _get_checked(self, vars_dict): + """Возвращаем список отмеченных элементов.""" + return [name for name, var in vars_dict.items() if var.get()] + + def load_users(self): + """Загружаем пользователей с указанного IP-адреса или локального ПК.""" + self.ip_address = self.ip_entry.get() + + if not self.ip_address: # Если IP не указан, используем локальный ПК + local_path = r"C:\Users" + self.load_local_users(local_path) + else: + try: + # Используем указанный IP для подключения к удалённому ПК + remote_path = f"\\\\{self.ip_address}\\C$\\Users" + self.load_remote_users(remote_path) + except Exception as e: + messagebox.showerror("Error", f"Could not load users: {str(e)}") + + def load_local_users(self, path): + """Загружаем список пользователей с локального ПК.""" + try: + folders = [f for f in os.listdir(path) if os.path.isdir(os.path.join(path, f))] + self._populate_checklist(self.user_inner, self.user_vars, folders) + except Exception as e: + messagebox.showerror("Error", f"Could not load local users: {str(e)}") + + def load_remote_users(self, remote_path): + """Загружаем список пользователей с удалённого ПК.""" + try: + folders = [f for f in os.listdir(remote_path) if os.path.isdir(os.path.join(remote_path, f))] + self._populate_checklist(self.user_inner, self.user_vars, folders) + except Exception as e: + messagebox.showerror("Error", f"Could not load remote users: {str(e)}") + + def load_databases(self): + """Подключаемся к SQL серверу и загружаем список баз данных.""" + server = self.server_entry.get() + login = self.login_entry.get() + password = self.password_entry.get() + + try: + connection_string = f"DRIVER={{SQL Server}};SERVER={server};UID={login};PWD={password};" + connection = pyodbc.connect(connection_string) + cursor = connection.cursor() + + cursor.execute("SELECT name FROM sys.databases") + databases = cursor.fetchall() + + # Скрываем служебные базы SQL Server, они не являются базами 1С + system_dbs = {"master", "tempdb", "model", "msdb"} + names = [db[0] for db in databases if db[0].lower() not in system_dbs] + self._populate_checklist(self.db_inner, self.db_vars, names) + + cursor.close() + connection.close() + except Exception as e: + messagebox.showerror("Error", f"Could not connect to SQL server: {str(e)}") + + def get_ibases_path(self, user): + """Возвращаем путь к ibases.v8i выбранного пользователя (локально либо по IP).""" + if not self.ip_address: + base_path = f"C:\\Users\\{user}\\AppData\\Roaming\\1C\\1CEStart" + else: + base_path = f"\\\\{self.ip_address}\\C$\\Users\\{user}\\AppData\\Roaming\\1C\\1CEStart" + return os.path.join(base_path, "ibases.v8i") + + def build_base_entry(self, base, server): + """Формируем запись одной базы для ibases.v8i.""" + return ( + f"\n[{base}]\n" + f'Connect=Srvr="{server}";Ref="{base}";\n' + f"ID={uuid.uuid4()}\n" + "OrderInList=255\n" + "Folder=/\n" + "OrderInTree=16640\n" + "External=0\n" + "ClientConnectionSpeed=Normal\n" + "App=Auto\n" + "WA=1\n" + "Version=8.3\n" + "DefaultApp=ThickClient\n" + "DisableLocalSpeechToText=0\n" + ) + + def add_database_to_ibases(self): + """Добавляем все выбранные базы всем выбранным пользователям.""" + # Актуализируем режим (локально / по IP) на момент добавления + self.ip_address = self.ip_entry.get().strip() + + users = self._get_checked(self.user_vars) + bases = self._get_checked(self.db_vars) + server = self.server_entry.get().strip() + + if not users: + messagebox.showerror("Error", "Не отмечен ни один пользователь!") + return + if not bases: + messagebox.showerror("Error", "Не отмечена ни одна база!") + return + if not server: + messagebox.showerror("Error", "Не указан SQL-сервер!") + return + + added = 0 + skipped = 0 + errors = [] + + for user in users: + try: + ibases_path = self.get_ibases_path(user) + base_dir = os.path.dirname(ibases_path) + + # Создаём каталог, если его нет + if not os.path.exists(base_dir): + os.makedirs(base_dir) + + # Читаем текущее содержимое файла для проверки дублей + existing = "" + if os.path.exists(ibases_path): + with open(ibases_path, "r", encoding="utf-8") as f: + existing = f.read() + + entries_to_add = [] + for base in bases: + # Дубль определяем по строке подключения (сервер + имя базы) + connect_line = f'Connect=Srvr="{server}";Ref="{base}";' + already_present = connect_line in existing or any( + connect_line in e for e in entries_to_add + ) + if already_present: + skipped += 1 + continue + entries_to_add.append(self.build_base_entry(base, server)) + added += 1 + + # Дописываем новые записи одним заходом + if entries_to_add: + with open(ibases_path, "a", encoding="utf-8") as f: + for entry in entries_to_add: + f.write(entry) + except Exception as e: + errors.append(f"{user}: {e}") + + # Итоговый отчёт + summary = ( + f"Пользователей: {len(users)}, баз: {len(bases)}\n" + f"Добавлено записей: {added}\n" + f"Пропущено (уже есть): {skipped}" + ) + if errors: + summary += "\n\nОшибки:\n" + "\n".join(errors) + messagebox.showwarning("Готово с ошибками", summary) + else: + messagebox.showinfo("Готово", summary) + + +if __name__ == "__main__": + app = RemoteFolderSelector() + app.mainloop() diff --git a/photo_2026-07-03_11-04-21-Photoroom.ico b/photo_2026-07-03_11-04-21-Photoroom.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c7a4e16c96d4ca4472b139aa4a747e4599ca1b1 GIT binary patch literal 270398 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

!xC94|d%A;tWdle@CMaVTx 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