Наши бизнес-аккаунты в Acumatica имеют 13 настраиваемых атрибутов для нашего основного бизнес-класса. Мне удалось успешно сохранить значения атрибутов на основе примера 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 результатов, по одному для каждого атрибута, и значение каждого из них было пустым. Я изменил FieldName на customer.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
Я получил обратно массив из двух элементов для каждого из 13 результатов, но значение во втором поле все еще оставалось пустым.
Кто-нибудь знает, как я могу получить значения? Меня действительно не волнует, нужно ли мне получать их по одному, но я бы предпочел получить их все сразу с их именами или кодами, чтобы мне не приходилось полагаться на то, что индексы всегда остаются неизменными. Ниже приведены изображения отладчика, работающего на моем втором примере и просматриваемого в Acumatica. Спасибо!