Всем спасибо огромное за помощь разобралися. Вопрос снимается.
blokva Вы правы. Так мы и поступили
Кому интересно как это реализовать вот пример, на вход передаем COM объект message на выходе получаем строку адреса отправителя. Маленько геморно получилось, но работает
Процедуру combyDisp взял
тут
X++:
str SenderEMail(Com _message)
{
#define.PR_SENDER_EMAIL_ADDRESS(0x0C1F001F)
#Define.CdoPR_SENDER_EMAIL_ADDRESS(0x39FE001E)
#Define.CdoPR_EMAIL_ADDRESS(0x3003001E)
#Define.CdoPR_ADDRTYPE(0x3002001E)
COMVariant to;
COM recipients;
COM fields;
COM obj;
COM comAddressType;
COM field;
ComVariant fieldId, fieldName;
ComVariant toField;
ComVariant addressType;
str strAddressType;
str s;
COM combydisp(COMVariant _var)
{
;
if (_var.variantType() != COMVariantType::VT_DISPATCH)
throw Error(strfmt("bad variant type (%1)",_var.variantType()));
if (!_var.iDispatch())
return null;
return COM::createFromVariant(_var);
}
;
recipients = combydisp(_message.Sender());
fields = combydisp(recipients.Fields());
comAddressType = combydisp(fields.Item(#CdoPR_ADDRTYPE));
addressType = comAddressType.Value();
strAddressType = addressType.bStr();
switch(strAddressType)
{
case "SMTP" :
obj = combydisp(fields.Item(#CdoPR_EMAIL_ADDRESS));
toField = obj.Value();
break;
default:
obj = combydisp(fields.Item(#CdoPR_SENDER_EMAIL_ADDRESS));
toField = obj.Value();
break;
}
s = toField.bStr();
return s;
}