Доступ к атрибутам клиента из общего запроса

Мне нужно использовать Атрибуты клиентов в Общий запрос. Я придумываю большинство своих общих запросов, начиная с необработанного SQL в Server Management Studio. Мне намного проще найти нужные мне данные таким способом. Тем не менее, мне очень трудно понять, как атрибуты привязаны к клиентам. Атрибуты добавляются к Класс клиента, а затем клиент связывается с классом клиента. Это позволяет изменять любые атрибуты, доступные для этого класса клиента, для клиента.

Используя базу данных, я обнаружил следующее:

  • Отдельные объекты атрибутов хранятся в таблице CSAttribute
  • Параметры атрибутов (например, поле со списком) хранятся в таблице CSAttributeDetail.
  • Отдельные экземпляры каждого атрибута хранятся в CSAnswers таблице.
  • Существует также CSAttributeGroup таблица, которая, как мне кажется, связывает CSAttributeDetail записей с CSAttribute записями.

Итак, можно было бы ожидать, что таблица CSAnswers будет иметь ссылку на клиента, к которому прикреплен ответ ... но это не так. Эта таблица определяется как:

  • CompanyID (PK, int, не нуль)
  • RefNoteID (PK, уникальный идентификатор, не ноль)
  • AttributeID (PK, nvarchar (10), не нуль)
  • Значение (nvarchar (255), null)

Чтобы добавить оскорбление к травме, имена таблиц в базе данных не всегда совпадают 1 к 1 с тем, что доступно в общем запросе. Например, многие поля, доступные ARInvoice в GI, фактически хранятся в таблице ARRegister в базе данных. Я подозреваю, что что-то очень похожее происходит с атрибутами.

Может ли кто-нибудь указать мне в правильном направлении определения того, как атрибуты связаны с клиентами как на уровне базы данных, так и на уровне GI?


person Aaron St Clair    schedule 15.05.2018    source источник


Ответы (2)


Я создал несколько GI с использованием атрибутов клиента, уникальный идентификатор RefNoteID в таблице CSAnswers связан с уникальным идентификатором NoteID в таблице клиентов, а AttributeID является конкретным атрибутом. Чтобы получить все атрибуты для клиента в нескольких строках, присоединитесь только к RefNoteID, если вы хотите, чтобы определенные атрибуты добавляли дополнительные условия соединения для каждого AttributeID. введите здесь описание изображения

person Casval    schedule 15.05.2018
comment
Я предположил, что refNoteID был ссылкой на заметки, которые вы можете добавлять по всей системе. При попытке реализовать это в SQL меня расстраивает то, что в таблице Customers нет столбца noteID ... Я потрачу некоторое время на поиск соединения для использования с noteID. Спасибо за вклад. Я отмечу как ответ, как только получу, что он будет работать как GI. - person Aaron St Clair; 16.05.2018

Атрибуты связаны с записью с полем RefNoteID; он будет соответствовать NoteID другой записи (обратите внимание, что в вашем случае он будет не в таблице Customers, а в BAccount, который является соединением 1: 1 с клиентами). Вам редко, если вообще когда-либо, нужно напрямую ссылаться на таблицу CSAnswers. На внутреннем уровне Acumatica сгенерирует набор виртуальных полей в основной таблице, которые соответствуют имени атрибута с суффиксом _Attributes:

Поля атрибутов для таблицы BAccount

Обратите внимание, что вы не сможете ссылаться на атрибут на вкладке «Условия», однако вы можете фильтровать по этому столбцу в сетке и создавать предопределенные фильтры.

person Gabriel    schedule 16.05.2018
comment
Спасибо, что указали, что noteID находится в BAccount таблице. Как только я установил это соединение, я смог успешно построить свой SQL и удовлетворить его потребности. Я бы возражал против того, чтобы вам редко, если вообще когда-либо, нужно было напрямую ссылаться на таблицу CSAnswers. При использовании предварительно заполненных полей атрибутов в GI система генерирует предупреждение и предлагает добавить соединение к таблицам / отношениям для повышения производительности. - person Aaron St Clair; 17.05.2018
comment
Предупреждение - это просто общее предупреждение для полей, которые выдают подзапросы, но я могу гарантировать, что атрибуты были специально оптимизированы и протестированы и работают с запросами с сотнями тысяч строк и десятками атрибутов. - person Gabriel; 17.05.2018