Показать сообщение отдельно
Старый 15.07.2014, 19:03   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от magicandy Посмотреть сообщение
Разве это не оно?
Код:
regardingCase = service.Retrieve("incident", regardingCaseId, new ColumnSet(new string[] { "dt_ustomerrating" }));
Оно. Так и нужно делать.
Цитата:
Сообщение от magicandy Посмотреть сообщение
Не совсем понимаю необходимость этого действия. Ведь я уверен, что атрибут там есть (а вот значения может и не быть). В частности "dt_ustomerrating". Или проверка изменит ситуацию в моём случае?
Беда в том, что для экономии трафика, даже если вы просили вернуть вам только 1 атрибут, система не вернет вам значение этого атрибута, если он пустой.
Цитата:
Сообщение от magicandy Посмотреть сообщение
Ведь метод service.Update обновляет сущность. А GetAttributeValue возвращает значение атрибута. Поправьте меня, если я не прав. в service.Retrieve я получаю сущность, а потом её же обновляю. А как я обновлю сущность по GetAttributeValue?
Я полагаю, сейчас вы делаете что-то вроде:
X++:
regardingCase = service.Retrieve("incident", regardingCaseId, new ColumnSet(new string[] { "dt_ustomerrating" }));
ustomerrating = regardingCase["dt_ustomerrating"];
В результате, если поле было постое вы получаете исключение. Поэтому, нужно делать вот так:
X++:
regardingCase = service.Retrieve("incident", regardingCaseId, new ColumnSet(new string[] { "dt_ustomerrating" }));
ustomerrating = regardingCase.GetAttributeValue<Type>("dt_ustomerrating");
Аналогично при обновлении любого атрибута. Если его нет в коллекции, а вы пытаетесь его обновить, то будет ошибка:
X++:
regardingCase.["someattribute"] = value;
Так что лучше делать:
X++:
regardingCase.SetAttributeValue("someattribute", value);
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional