Показать сообщение отдельно
Старый 19.04.2012, 01:33   #1  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
? AX2012 CU2, разработка Enterprise Portal в Visual Studio 2010 - как убить кэш?
делаю портал для AX2012, естественно разработка ведётся в VS2010.

наблюдаю очень странные вещи, похоже на то, что VS и EP где-то кэшируют метаданные из аксапты (информацию о таблицах, полях, отношениях, составе групп полей и так далее), потому что когда я что-то меняю в аксапте, это не сразу отображается в VS, и иногда очень странные ошибки появляются в портале.

где этот кэш и как его убить?

обычно я делаю так:
1. меняю что-то в аксапте (никогда не делаю много изменений за раз. или добавлю поле, или напишу новый display-метод)
2. иду в VS, на датасорсе нажимаю "Refresh Schema", это должно подтянуть свежую информацию из аксапты
3. использую новое поле на web control'e, сохраняю (новая версия web control'a при этом автоматически загружается в портал)
4. в портале запускаю три пункта меню (Refresh AOD, Refresh Data, Refresh Dictionary), при этом портал должен подтянуть те же изменения из аксапты.

после этого обычно всё работает.

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

пример сегодняшний: в AX2012 стали использовать RecId в качестве foreign key. пользователю показывать RecId ни к чему, он не будет запоминать RecId всех записей, что ему нужны. ему нужно выбирать запись по более понятному ему идентификатору.

например, таблица работников, HcmWorker. все записи в базе данных, которые ссылаются на работников, ссылаются по RecId. в AX2012 для этого ввели концепцию Reference field, когда RecId на форме или веб-контроле "умно" заменяется полем или группой полей из записи таблицы, на которую ссылается RecId.

по умолчанию из таблицы работников подставляется имя работника. клиенту имя ни к чему, он хочет видеть и вводить EmplId, который в AX2012 называется PersonnelNumber. я иду в аксапту и смотрю, что на таблице HcmWorker есть как раз подходящая группа полей с таким же именем, так что я иду в VS и меняю свойство ReferenceFieldGroup на PersonnelNumber.

сохраняю, собираю, запускаю, всё хорошо: на контроле появляется поле, которое принимает и показывает PersonnelNumber из HcmWorker, и пишет правильные значения RecId в показываемую запись.

теперь просят добавить ещё и имя, просто как display-метод отдельным полем под этим. нет проблем, пишу метод, добавляю на контрол, собираю, запускаю, и тут меня ждёт сюрприз. от первого поля осталась метка на контроле и лукап, а само поле пропало. выбор записи из лукапа ничего не даёт, и писать PersonnelNumber теперь вообще некуда, поля физически нет на форме, я смотрел HTML полученной страницы.

думал, проблема в поле, что я добавил. убираю display-метод, убираю поле с контрола - ничего не меняется. метка есть, лукап есть, поля нет на странице, некуда писать PersonnelNumber. что я только не пробовал с тех пор, ничего не помогает.
__________________
our sharp bitter vitriol is not that of the vulgar.