Показать сообщение отдельно
Старый 30.12.2010, 02:34   #1  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Глобальная адресная книга. Нулевая ссылка в таблице Address
Доброго времени суток.
И снова глобальная адресная книга в студии!

Попробую зайти с фланга: существует настроенный справочник "глобальная адресная книга", расшареный на несколько компаний через вируальную. Необходимо создать адрес для конкретного клиента через форму CustTable. При этом, как известно, адрес будет связан с клиентом через ту же глобальную адресную книгу (DirPartyTable) следующим образом (вернее 2-мя):

X++:
...
Address.RecId  == DirPartyAddressRelationshipMapping.AddressRecId
Address.DataAreaId  == DirPartyAddressRelationshipMapping.RefCompanyId

DirPartyAddressRelationshipMapping.PartyAddressRelationshipRecId == DirPartyAddressRelationship.RecId

DirPartyAddressRelationship.PartyId == DirPartyTable.PartyId
...
или

X++:
...
Address.AddrTableId   == tableNum(DirPartyTable)
Address.AddrRecId      == DirPartyTable.RecId
...
создаем адрес через форму клиентов и тут выясняется, что ОООЧЕНЬ редко (никому из наших не удалось воспроизвести) вторая ссылка не заполняется. Как результат: адрес видно из глобальной адресной книги и не видно из клиента. (это связанно с тем, что запросы к таблице Address из 2-х форм по-разному строятся)

как вариант поставил такую заглушку в Address.insert(), Address.update()
X++:
if (this.isFormDataSource() && ! this.AddrTableId && ! this.AddrRecId)
    {
        if (this.<DirPartyAddressRelationship>().PartyId)
        {
            this.AddrTableId = tableNum(DirPartyTable);
            this.AddrRecId  = DirPartyTable::find(this<DirPartyAddressRelationship>().PartyId).RecId;
        }        
    }
(в угловых скобках метод, достающий связь)

Не встречалась ли кому такая бага? Если встречалась, то как лечили?
Заранее спасибо!

DAX 2009 RU5
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!