#c# #soap #acumatica
Вопрос:
Я не могу найти пример этого здесь или в образце кода Acumatica. Отправка значений одного атрибута работает нормально, но я не могу найти способ отправки значений нескольких атрибутов. Они возвращаются в виде списка, разделенного запятыми, в строковом значении, но отправка их таким образом не работает. Кроме того, отправка их в виде нескольких экземпляров отдельных значений не работает.
Вот что я попробовал. (В реальном коде я также отправляю некоторые другие отдельные атрибуты в списке, но они отлично работают.)
// this results in nothing being set for the attribute
string interestedIn = "Brochure, Contact, Collecting small stones";
List<Acumatica.AttributeDetail> attributes = new List<Acumatica.AttributeDetail>();
attributes.Add(
new Acumatica.AttributeDetail {
Attribute = new Acumatica.StringValue { Value = "Interested in" },
Value = new Acumatica.StringValue { Value = interestIn }
}
);
custAdd.Attributes = attributes.ToArray();
// this results in the last item in the list being set for the attribute
string interestedIn = "Brochure, Contact, Collecting small stones";
List<Acumatica.AttributeDetail> attributes = new List<Acumatica.AttributeDetail>();
string[] interests = Convert.ToString(interestedIn).Split(',');
foreach (string interest in interests) {
attributes.Add(
new Acumatica.AttributeDetail {
Attribute = new Acumatica.StringValue { Value = "Interested in" },
Value = new Acumatica.StringValue { Value = interest.Trim() }
}
);
};
custAdd.Attributes = attributes.ToArray();
Ответ №1:
Из первоисточника
MappedCustomer obj = bucket.Customer;
Core.API.Customer impl = obj.Local;
impl.Attributes = impl.Attributes ?? new List<AttributeValue>();
AttributeValue attribute = new AttributeValue();
attribute.AttributeID = new StringValue() { Value = attributeID };
attribute.ValueDescription = new StringValue() { Value = attributeValue?.ToString() };
impl.Attributes.Add(attribute);
Здесь есть некоторые тонкие различия. Кроме того, мне интересно, если бы .Необходимо вызвать функцию toArray ().
Комментарии:
1. Это API REST? Я забыл упомянуть, что в этом проекте используется API SOAP, хотя я не забыл пометить вопрос таким образом. Вызов toArray() был необходим, потому что клиент SOAP. Элемент атрибутов представляет собой массив объектов AttributeDetail.
2. Это из исходного кода ERP. Я упоминаю о вызове toArray, потому что вы пытаетесь добавить элемент полезной нагрузки с большим количеством запятых. Вы должны быть в состоянии просто добавить список без этого вызова.
3. Я не вызываю toArray() для списка, разделенного запятыми. Это на другом уровне. В списке атрибутов есть и другие элементы (не показаны выше). Я должен позвонить toArray(), потому что Клиент. Атрибуты-это массив атрибутивных данных. Мне нужно добавить атрибут в этот массив, который сам по себе имеет несколько значений. Я думаю, что Acumatica называет эти атрибуты множественного выбора. При получении значения одного из этих атрибутов оно возвращается в виде строки, разделенной запятыми, но отправка его таким образом, чтобы попытаться обновить его, не работает; в результате для атрибута вообще не задается значение.