Цитата:
Сообщение от
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);