Показать сообщение отдельно
Старый 20.04.2012, 07:01   #5  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
Цитата:
Сообщение от lvan Посмотреть сообщение
Вы наверное забыли, что в ax2012 теперь два кода - интепретируемый X++ и CIL
EP работает через сервисы, а они, как тоже известно, работают только в ЦЫЛе, и никак не в Х++
Соответственно, после того, как вы что-то поменяли в X++ коде, вам нужно коппильнуть в ЦЫЛ, чтобы ваш ЦЫЛ код соответствовал X++сному
Надеюсь, идея ясна.
Если дебажите с VS, то не забудьте также Hotswapping of assemblies включить.
раньше в AX2009 когда делал, то в VS можно было сбросить кэш из Solution Explorer, теперь я нашёл, что точно так же в AX2012 / VS2010 работает корень Application Explorer, вызываешь контекстное меню и выбираешь Refresh All, он подтягивает последнюю метадату и все новые методы и поля видны в студии.

тем не менее порталу это так и не помогло справиться с AxReferenceBoundField, он всё так же не приделывает контрол для PersonnelNumber. лукап есть, метка есть, контрола нет. загадка. добавляю в AutoIdentification поле Person, которое там и было изначально - имя появляется, а номера как не было так и нет (хотя место под него зарезервировано). а выбираю работника через лукап - кидает следующее:

Could not find natural key field 'RespWorker!PersonnelNumber'

System.ArgumentException
at Microsoft.Dynamics.AX.Framework.Portal.Data.DataSetViewRow.GetForeignKeyValue(IAxDataAccessObjectViewDataFieldMetadata foreignKeyField, IDictionary`2 referenceFieldValues, Boolean synchronizeReferenceValues, IAxDataAccessObjectViewFieldGroupMetadata autoIdentificationGroup, Boolean stopOnDuplicates, Boolean& foundMoreThanOneMatch)
at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxReferenceControl.GetForeignKeyValue()

почему "не могу найти"? вот оно, поле.

кончилось всё тем, что я сделал три контрола:

1. edit-метод чтобы вводить PersonnelNumber. когда клиент делает edit, то правильный RecId указывающий на HcmWorker вводится в нашу таблицу.

2. display-метод чтобы показывать имя работника

3. AxReferenceBoundField который показывает имя работника - потому что у него есть лукап, и если надо, клиент может выбрать из лукапа (например если клиент забыл PersonnelNumber).

по идее можно было бы обойтись 1м и 3м, чтобы третий показывал имя, но вот беда, когда я вбиваю в edit-методе новое значение PersonnelNumber и делаю AutoPostBack, то display метод показывает имя нового выбранного работника, а вот третий контрол - нет, хотя должен. после ещё одного постбэка (когда что-то ещё меняю на форме) начинает показывать.

кто-то вообще пользовался уже этими AxReferenceBoundField? может делаю что неправильно. документации-то нет никакой
__________________
our sharp bitter vitriol is not that of the vulgar.