Ну например вот, простейший код для смены валюты в возможной сделке, только что написал его и проверил.
Код:
string _organizationName = "Rainbow";
string _crmServiceUrl = "http://192.168.1.1:5555/mscrmservices/2007/crmservice.asmx";
// GUID существующей активной возможной сделки
Guid _opportunityGuid = new Guid("{9133C5C5-26E9-DD11-9E20-0003FF25A266}");
// GUID валюты, доллара (у возможной сделки валюта - рубли)
Guid _usdCurrencyGuid = new Guid("{E05CCF2C-5D28-DD11-82AF-0003FF25A266}");
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = _organizationName;
CrmService service = new CrmService();
service.Url = _crmServiceUrl;
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
opportunity opportunity = new opportunity();
opportunity.opportunityid = new Key();
opportunity.opportunityid.Value = _opportunityGuid;
// Заодно меняется имя, чтобы было видно, что изменение вообще прошло.
opportunity.name = DateTime.Now.ToShortTimeString();
opportunity.transactioncurrencyid = new Lookup();
opportunity.transactioncurrencyid.type = EntityName.transactioncurrency.ToString();
opportunity.transactioncurrencyid.Value = _usdCurrencyGuid;
service.Update(opportunity);
В результате имеем измененное имя и нетронутую валюту. Возможно конечно есть какие то тонкости смены валюты о которых я не знаю, и приведенного кода мало...