Одно и то же настраиваемое поле на экране местоположения и на экране клиента - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь добавить одно и то же настраиваемое поле в Acumatica 2017 R2 к и экрана местоположения (AR303020) и экрана клиентов (AR303000). На вкладке «Клиенты> Настройки доставки» находятся другие собственные поля, в которых показано поведение, которое я пытаюсь сопоставить. (Пример: идентификатор налоговой регистрации, налоговая зона и т. Д.) Эти поля можно просматривать / редактировать на экране «Клиенты» или на экране «Местоположения».

Используя браузер проекта настройки, я могу достаточно легко добавить поле на экран местоположения.

CR.Location definition

Далее я хотел бы добавить новое настраиваемое поле в «Клиенты> вкладка Настройки доставки> Группа настроек местоположения по умолчанию», в котором используется тот же ЦАП, что и в настраиваемом поле, добавленном на экран «Местоположения».

Но я не уверен, как правильно определить то же поле для экрана «Клиенты». По умолчанию Браузер настройки добавляет настраиваемое поле в ЦАП CR.Address. Я попытался создать новое поле CR.Address с таким определением:

CR.Address definition

Нет ошибок при публикации, но Acumatica не будет загружать экраны Customer или Locations. Ошибка «Недопустимое имя столбца« UsrCertificateDate ». Я намеренно не добавил столбец для UsrCertificateDate в таблицу базы данных CRAddress, поскольку этот столбец ранее был добавлен в таблицу Location. Я бы предпочел не поддерживать два поля базы данных, если требуется только одно.

Как настроить совместное поле на этих двух экранах? Изменение местоположения по умолчанию на экране «Клиенты» должно изменить значение при просмотре местоположения на экране «Местоположения» и наоборот.

1 Ответ

0 голосов
/ 28 августа 2018

Прежде всего, вы должны рассмотреть декларации местоположения и адреса ЦАП:

Местоположение:

[Serializable]
public class Location : IBqlTable, IPaymentTypeDetailMaster, ILocation
{
  .
  .

Адрес:

[Serializable]
public class Address : IBqlTable, IAddressBase, IValidatedAddress, IPXSelectable
{   
   .
   .
   .

, как вы можете видеть издекларации, оба они реализуют IBqlTable, так что это означает, что Location и Address живут как отдельные объекты в Acumatica.Следующий sql в вашей базе данных покажет вам, что обе таблицы имеют свою собственную жизнь:

select top 10 * from Location

select top 10 * from Address

вы увидите разные результаты.Это также означает, что вы не можете использовать одно расширение DAC для одной и той же таблицы, но вам понадобятся расширения.А также вам нужно будет добавить два столбца для таблицы местоположений и адресов.

Еще один момент, к которому следует быть осторожным, есть разница между ЦАП - CR.Address и CRAddress.

Взгляните на объявление CRAddress:

[Serializable]
public class CRAddress : IBqlTable, IAddress, IAddressBase, IValidatedAddress
{
    .
    .
    .

Как видно из объявления, сущность CRAddress является третьей таблицей.Если предположить все это, вы либо добавите один и тот же столбец дважды к расширениям Location и Address DAC, либо в качестве другого варианта вы можете создать таблицу CertificationDates, в которой даты сертификатов будут в качестве одного из столбцов, а в обоих расширениях - ID.для CertificationDates в качестве внешнего ключа.

...