По желанию. Скриптовый движок сам отлично отслеживает все ссылки, так что особого смысла в таком коде нет, кроме может красоты. Бывает правда необходимо уничтожить объект в определенном месте программы, или просто ссылку убить дабы исключить последующее использование, тогда конечно требуется подобный код. Или скажем после вот такого кода
DOC_module.UserModuleName = DOC_module.UniqueUserModuleName
Call TCSApp.DeleteModuleByUserModuleName(DOC_module.UserModuleName)
....
MsgBox DOC_module.UserModuleName
обращение к DOC_module после вызова DeleteModuleByUserModuleName вызовет ошибку, так как DOC_module в скрипте существует и валиден, а внутренний объект TechnologiCS уже уничтожен. В этом случае сброс DOC_module может быть и полезен, хотя система все равно отслеживает это.
По поводу
не надо пользоваться этим повсеместно
скажем так. Как я говорил выше, объекты, которые создаются от Application как правило глобальные, и создаются один раз на весь сеанс работы программы. Остальные объекты, полученные через Properties, ChildModules и пр. уничтожаются автоматически, и никаких дополнительных действий с ними не требуется. Если же начать пользоваться приведенными выше функциями, то наоборот мы получим кучу глобальных объектов, да еще и с уникальным именем, до которых потом вы уже вряд ли достучитесь, а автоматически они уже не уничтожатся.
Вообще смысл вышеприведенных методов не столько для того, чтобы делать удаление, а для того чтобы можно было создавать свои собственные глобальные настройки и хранить их между запусками скриптов. Способы применения зависят от конкретных задач.
Пример. Запускается скрипт, который просит пользователя сделать кучу настроек, или выбрать что либо. Затем пользователь запускает другой скрипт, которому тоже нужны эти же самые настройки. Мы можем через глобальные объекты создать (или запомнить уже существующий) некий нужный нам модуль и на старте скрипта попытаться найти его, если не нашли, то запустить выбор/создание настроек.
Поэтому и рекомендации по использованию дать сложно, но главное не считать DeleteModuleByUserModuleName панацеей от проблем с памятью и усложнять код постоянными его вызовами.
Кроме того, в вашем примере скорей всего можно было вообще обойтись без создания объекта TCSApp.SingleDoc( CSDN_ … sInteger), так как если он запускается например из режима Папки, то все необходимые свойства для работы не сильно отличаются от доступных в ISingleDoc (а вот в выборках к сожалению не так). Ну тут надо смотреть универсальность/гибкость, и без TCS API Explorer тут никак не обойтись.