Files
autodesk/migration/audits/p-rec-bop-plant3d-2019/document-generation-flow.md
T

10 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Формирование Word-документа
`ReportWithWorder.OutputReport` проверяет `.docx`-шаблон, создает каталог проекта и имя `Ведомость объемов работ (yyyy.MM.dd HH.mm.ss).docx` (`ReportWithWorder.cs:30-54`). Движок по умолчанию — Microsoft Office Interop, но пользователю предлагается переключиться на SautinSoft (`ReportWithWorder.cs:54-85`).
`Worder.Load` копирует шаблон в `%TEMP%` (`Worder.cs:305-322`). Office-ветка создает `Word.Application`, открывает временный документ, берет `Tables[1]`, таблицы footer первой и основной страницы, делает Word видимым и меняет View/Selection (`Worder.cs:326-355`). SautinSoft-ветка загружает DocumentCore и берет первую таблицу и footer-таблицы по индексам (`Worder.cs:357-370`).
Основные строки результата строятся `ReportWithWorder.cs:93-1287`: группы `PipingElement` и сварные стыки превращаются в строки `Cells12345TableRow`; строки добавляются через `Worder.AddNewRowToTable`. `Worder.cs:588-626` показывает, что Office использует `_wordTable.Rows.Add(ref oMissing)`, а SautinSoft клонирует вторую строку.
Поля обновляются в основном тексте и headers/footers (`Worder.cs:742-763`), затем документ сохраняется, закрывается и Word завершается (`Worder.cs:383-420`). Важный риск: COM-объекты не освобождаются через `Marshal.FinalReleaseComObject`, а `Load`/`SaveAndUnload` ловят исключения и продолжают путь копирования (`Worder.cs:372-380`, `508-519`); возможны поврежденный результат и зависший WINWORD.EXE.