Если у кого-то возникнет похожая проблема, то решение найдено (не прошло и года

). Основные причины следующие:
1. При передаче значений, отличных от целочисленных, в методы объектов Word желательно оборачивать их в класс COMVariant(). Т.е. передавать в качестве параметра не строку, а объект.
Следует обратить внимание на методы создания нового документа на базе шаблона и работу с полями Word.
Например, создание документа на базе шаблона:
X++:
COM comDocuments;
COMVariant varTemlateName;
;
(...)
if (_template)
{
varTemlateName = new COMVariant(COMVariantInOut::IN, COMVariantType::VT_BSTR);
varTemlateName.bStr(_template);
m_comDocument = comDocuments.Add(varTemlateName);
}
else
{
m_comDocument = comDocuments.Add();
}
(...)
2. Следует избегать сложных "вложенных" функций с включением обращений к свойствам Com объектов.
Например, высока вероятность ошибки при использовании такого синтаксиса
X++:
if (str2num(m_comApplication.version()) >= 9)
Однако еще не было ошибок в таком синтаксисе
X++:
numVersion = str2num(m_comApplication.version());
if (numVersion >= 9)
Короче, на терминалке "халява" - не проходит. Необходимо более строго следить за синтаксисом.