|
![]() |
#1 |
HAI; CAN HAS STDIO?
|
Цитата:
Сообщение от lvan
![]() Вы наверное забыли, что в ax2012 теперь два кода - интепретируемый X++ и CIL
EP работает через сервисы, а они, как тоже известно, работают только в ЦЫЛе, и никак не в Х++ Соответственно, после того, как вы что-то поменяли в X++ коде, вам нужно коппильнуть в ЦЫЛ, чтобы ваш ЦЫЛ код соответствовал X++сному Надеюсь, идея ясна. Если дебажите с VS, то не забудьте также Hotswapping of assemblies включить. тем не менее порталу это так и не помогло справиться с 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. |
|
![]() |
#2 |
HAI; CAN HAS STDIO?
|
оказалось всё-таки, что невнимательно прочитал гайд.
для того, чтобы использовать ReferenceBoundField, не нужно добавлять Reference DataSource, просто Relation на таблице достаточно, аксапта сама поймёт, что куда нужно добавить. кончилось тем, что убрал все Reference Data Source, потому что именно они почему-то мешали. нигде не сказано, что они могут мешать, вот в чём дело. для новой таблицы нужно делать так: 1. создал таблицу 2. добавил на неё поле типа HcmWorkerRecId 3. добавил Relation (можно посмотреть настройки нужные на таблице smmActivities, там есть два Relation'a на HcmWorker) 4. остальное как обычно. когда в студии делаю контрол, кроме обычного Bound Field будет доступно и BoundReferenceField для этого поля. а ещё проще создать на таблице группу полей, и на контрол выводить группу, а не по одному полю, так быстрее будет. может, все так и делают, но этот проект я делаю апгрейд с 2009 до 2012, и приходится разбирать творение чужих рук.
__________________
our sharp bitter vitriol is not that of the vulgar. |
|
|
За это сообщение автора поблагодарили: Logger (2), S.Kuskov (2). |
Теги |
ax2012, enterprise portal, ep, visual studio |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|