feat: настройки импорта вынесены в текстовый файл-словарь
- import_settings.json рядом с программой (создаётся автоматически): что импортировать (var), откуда (cell: 'Общие сведения'!B2 или keywords: регэксп поиска по колонке A) - importer.py читает словарь: сначала конкретная ячейка, потом ключевые слова - листы общих сведений/сотрудников/ИС тоже настраиваются (ключевые слова) - UI: меню «Генерация → Файл настроек импорта…» — выбор пути к словарю - при сборке .exe файл остаётся редактируемым без пересборки
This commit is contained in:
+20
-1
@@ -38,6 +38,10 @@ class DokoGenApp:
|
||||
'.autosave', 'autosave_152.json'
|
||||
)
|
||||
|
||||
# Путь к файлу настроек импорта (словарь «что и откуда брать»)
|
||||
# None = import_settings.json рядом с программой (создаётся автоматически)
|
||||
self.import_settings_path: Optional[str] = None
|
||||
|
||||
# Переменные
|
||||
self.doc_number_var = tk.StringVar(value="")
|
||||
self.doc_date_var = tk.StringVar(value="")
|
||||
@@ -83,6 +87,7 @@ class DokoGenApp:
|
||||
gen_menu = tk.Menu(menubar, tearoff=0)
|
||||
menubar.add_cascade(label="Генерация", menu=gen_menu)
|
||||
gen_menu.add_command(label="Импорт из опросника", command=self.import_from_survey)
|
||||
gen_menu.add_command(label="Файл настроек импорта…", command=self.select_import_settings)
|
||||
gen_menu.add_separator()
|
||||
gen_menu.add_command(label="Сгенерировать всё", command=self.generate_all)
|
||||
|
||||
@@ -1267,6 +1272,20 @@ class DokoGenApp:
|
||||
self.log("✅ Склонения краткого названия обновлены")
|
||||
|
||||
# ==================== ИМПОРТ ====================
|
||||
def select_import_settings(self):
|
||||
"""Выбор файла настроек импорта (JSON-словарь)."""
|
||||
from .import_settings import default_import_settings_path, ensure_default_file
|
||||
path = filedialog.askopenfilename(
|
||||
title="Файл настроек импорта (что и откуда брать)",
|
||||
filetypes=[("Настройки импорта", "*.json")]
|
||||
)
|
||||
if not path:
|
||||
self.log(f"Настройки импорта: по умолчанию ({default_import_settings_path()})")
|
||||
self.import_settings_path = None
|
||||
return
|
||||
self.import_settings_path = path
|
||||
self.log(f"Настройки импорта: {path}")
|
||||
|
||||
def import_from_survey(self):
|
||||
path = filedialog.askopenfilename(
|
||||
title="Выберите опросный лист (152-ФЗ)",
|
||||
@@ -1280,7 +1299,7 @@ class DokoGenApp:
|
||||
def _run():
|
||||
try:
|
||||
from .importer import import_152fz
|
||||
data = import_152fz(path, self.log)
|
||||
data = import_152fz(path, self.log, settings_path=self.import_settings_path)
|
||||
if data:
|
||||
self._apply_imported_data(data)
|
||||
except ImportError:
|
||||
|
||||
Reference in New Issue
Block a user