2015-04-11 3 views
1

Наши бизнес-счета в Acumatica имеют 13 настраиваемых атрибутов для нашего основного класса бизнес-счетов. Я смог успешно сохранить значения в атрибутах на основе примера Acumatica «Добавление записей в бизнес-счета и формы возможностей». Но мне не удалось выяснить, как получить значения с помощью Export.Экспорт атрибутов Business Account с API Acumatica

Во-первых, я попытался использовать формат, аналогичный тому, как было указано поле при их сохранении.

Public Function GetCustomerAttributes(ByVal customerID As String) As String()() 
    Dim customer As CR303000Content = m_context.CR303000GetSchema() 
    m_context.CR303000Clear() 

    Dim idFilter As Filter = New Filter() 
    idFilter.Field = customer.AccountSummary.BusinessAccount 
    idFilter.Condition = FilterCondition.Equals 
    idFilter.Value = customerID 

    ' SIMILAR TO EXAMPLE FOR SAVING 
    Dim awdField As Field = New Field() 
    awdField.ObjectName = customer.Attributes.Attribute.ObjectName 
    awdField.FieldName = "AWD Number" 

    Dim searchfilters() As Filter = {idFilter} 
    Dim searchCommands() As Command = {awdField} 
    Dim searchResult As String()() = m_context.CR303000Export(searchCommands, searchfilters, 0, False, False) 
    Return searchResult 
End Function 

Я думал, что это вернет один результат со значением для нашего атрибута с именем «AWD Number». Вместо этого было возвращено 13 результатов, по одному для каждого атрибута, а значение каждого из них было пустым. Я изменил имя поля на client.Attributes.Attribute.FieldName, а затем начал возвращать имя каждого атрибута. Поэтому я подумал, что если я добавил еще одно поле для значения, то я мог бы получить имя и значение в отдельных результатов, например:

Public Function GetCustomerAttributes(ByVal customerID As String) As String()() 
    Dim customer As CR303000Content = m_context.CR303000GetSchema() 
    m_context.CR303000Clear() 

    Dim idFilter As Filter = New Filter() 
    idFilter.Field = customer.AccountSummary.BusinessAccount 
    idFilter.Condition = FilterCondition.Equals 
    idFilter.Value = customerID 

    Dim awdField As Field = New Field() 
    awdField.ObjectName = customer.Attributes.Attribute.ObjectName 
    awdField.FieldName = customer.Attributes.Attribute.FieldName 

    Dim awdValue As Field = New Field() 
    awdValue.ObjectName = customer.Attributes.Attribute.ObjectName 
    awdValue.FieldName = customer.Attributes.Attribute.Value 

    Dim searchfilters() As Filter = {idFilter} 
    Dim searchCommands() As Command = {awdField, awdValue} 
    Dim searchResult As String()() = m_context.CR303000Export(searchCommands, searchfilters, 0, False, False) 
    Return searchResult 
End Function 

я получил массив 2-деталь назад для каждого из 13 результатов но значение во втором поле было по-прежнему пустым.

Кто-нибудь знает, как я могу получить значения? Меня не волнует, должен ли я получать их по одному, но я бы предпочел сразу же получить их всех с их именами или кодами, чтобы мне не приходилось полагаться на индексы, всегда оставаясь неизменными. Ниже приведены изображения отладчика, запущенного на моем втором примере и в Acumatica. Благодаря!

Debugger for 2nd example

Attributes in Acumatica

ответ

1

Ваша первая попытка правильно, однако вы не используете правильное имя объекта и имя поля. Система будет динамически добавлять поля к основному объекту (представлению) экрана, в этом случае имя объекта, представленное customer.AccountSummary.BusinessAccount.ObjectName variable (я предлагаю вам использовать отладчик, чтобы увидеть, что это значение равно - хорошее упражнение по обучению).

Имя поля атрибута будет использовать одно и то же соглашение об именах, которое используется в How To Retrieve An Attribute Field In StockItems In Acumatica API?. Соглашение об именах - это _Attributes. Идентификатор атрибута: не имя атрибута; Я не вижу вашу конфигурацию, но в вашем случае сомневаюсь, что идентификатор атрибута «AWD Number». Подводя итог, код будет выглядеть следующим образом:

Dim awdField As Field = New Field() 
awdField.ObjectName = customer.AccountSummary.BusinessAccount.ObjectName 
awdField.FieldName = "AWDNumber_Attributes" 

В вашем примере, поставив Attributes.Attribute.ObjectName объект, система будет перебирать все значения внутри этой таблицы, а затем вернуться для каждой строки поля, которые вы хотите. Я не совсем уверен, почему вы не видите все значения атрибутов в этом случае, но я думаю, вы должны быть в порядке с приведенным выше примером.

+0

Спасибо! Я действительно пробовал этот формат для FieldName в моем первом примере, но определенно не пробовал это ObjectName. Я был убежден, что это должно быть ссылка на атрибуты –

Смежные вопросы