#!/usr/bin/env python3 # epf-init v1.1 — Init 1C external data processor scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Generates minimal XML source files for a 1C external data processor.""" import sys, os, argparse, uuid def esc_xml(s): return s.replace('&','&').replace('<','<').replace('>','>').replace('"','"') def new_uuid(): return str(uuid.uuid4()) def write_utf8_bom(path, content): with open(path, 'w', encoding='utf-8-sig', newline='') as f: f.write(content) def main(): sys.stdout.reconfigure(encoding="utf-8") sys.stderr.reconfigure(encoding="utf-8") parser = argparse.ArgumentParser(description='Init 1C external data processor scaffold', allow_abbrev=False) parser.add_argument('-Name', dest='Name', required=True) parser.add_argument('-Synonym', dest='Synonym', default=None) parser.add_argument('-SrcDir', dest='SrcDir', default='src') args = parser.parse_args() name = args.Name synonym = args.Synonym if args.Synonym else name src_dir = args.SrcDir uuid1 = new_uuid() uuid2 = new_uuid() uuid3 = new_uuid() uuid4 = new_uuid() xml = f''' \t \t\t \t\t\t \t\t\t\tc3831ec8-d8d5-4f93-8a22-f9bfae07327f \t\t\t\t{uuid2} \t\t\t \t\t\t \t\t\t\t{uuid3} \t\t\t\t{uuid4} \t\t\t \t\t \t\t \t\t\t{esc_xml(name)} \t\t\t \t\t\t\t \t\t\t\t\tru \t\t\t\t\t{esc_xml(synonym)} \t\t\t\t \t\t\t \t\t\t \t\t\t \t\t\t \t\t \t\t \t ''' root_file = os.path.join(src_dir, f"{name}.xml") processor_dir = os.path.join(src_dir, name) if os.path.exists(root_file): print(f"Файл уже существует: {root_file}", file=sys.stderr) sys.exit(1) os.makedirs(src_dir, exist_ok=True) ext_dir = os.path.join(processor_dir, "Ext") os.makedirs(ext_dir, exist_ok=True) write_utf8_bom(os.path.join(os.path.abspath(src_dir), f"{name}.xml"), xml) # --- Модуль объекта --- module_bsl = """\ #Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти""" module_path = os.path.join(ext_dir, "ObjectModule.bsl") write_utf8_bom(module_path, module_bsl) print(f"[OK] Создана обработка: {root_file}") print(f" Каталог: {processor_dir}") print(f" Модуль: {module_path}") if __name__ == '__main__': main()