AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.03.2011, 17:21   #1  
patron is offline
patron
Участник
 
19 / 12 (1) ++
Регистрация: 29.03.2007
ax2009 игнорирует изменения кода
Всем здравствуйте!
Возникла следующая проблема: есть Map в DataDictionary, для таблицы Table настроен Mapping. В последствии в Map добавили новое поле, обновили Mapping для таблицы, но при попытке в коде обратиться к новому полю через Map, вываливается трассировка стека с ошибкой "Поле с кодом '0' не найдено в таблице Table". Чтобы проверить, удалил полностью Mapping для данной таблице, но ситуация не изменилась, т.е.:
X++:
Table table;
Map map;
select table;
Map = table;
info(Map.Oldfield); //проходит (хотя mapping отсутствует)
info(Map.NewField); //здесь вываливает трассировку стека
Пробовал очищать клиентский кеш, удалял индексные файлы (ali, alc, alt, aoi,udb,add, adi), рестарт АОСа. На ситуацию никак не повлияло.
Есть еще одна проблема, возможна причина у них одна: создали класс, потом поменяли название, после рестарта АОС, класс имеет старое имя, делаем восстановить, компилировать и вуаля, класс уже имеет новое имя.
Если кто сталкивался с проблемой, подскажите пожалуйста куда смотреть.
Версия Ax2009 SP1 RU5, kernel=application = 5.0.1500.2985
Старый 03.03.2011, 17:27   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Со слоями ничего не напутали? Версионность включена?
Старый 03.03.2011, 17:32   #3  
patron is offline
patron
Участник
 
19 / 12 (1) ++
Регистрация: 29.03.2007
Со слоями вроде все нормально, все происходит в одном слое. Версионность не включена.
Старый 03.03.2011, 18:03   #4  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от patron Посмотреть сообщение
Всем здравствуйте!
Возникла следующая проблема: есть Map в DataDictionary, для таблицы Table настроен Mapping. В последствии в Map добавили новое поле, обновили Mapping для таблицы, но при попытке в коде обратиться к новому полю через Map, вываливается трассировка стека с ошибкой "Поле с кодом '0' не найдено в таблице Table". Чтобы проверить, удалил полностью Mapping для данной таблице, но ситуация не изменилась, т.е.:
прикольный глюк, у меня такой был.
Как то я такое тоже делал http://axforum.info/forums/blog.php?b=225 с Maps\AddressMap и Maps\AddressMap_RU.

Надо в моем случае добавить в метод\Classes\FormRunListener_Address_RU\addressInfo код
X++:
            case formstr(NewMyForm) :
                return [[#AddressGroup, tablenum(AddressMap)]];
Прочитай как я делал http://axforum.info/forums/blog.php?b=225
Может натолкнет на мысль. Там к мапам надо еще классы проверить. При открытии формы вызывается класс, который накидывает доп. поля или отключает лишние. (В твоем случае класс ищи сам)

Стек трассировки проверь.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.

Последний раз редактировалось Poleax; 03.03.2011 в 18:07.
Старый 04.03.2011, 09:41   #5  
patron is offline
patron
Участник
 
19 / 12 (1) ++
Регистрация: 29.03.2007
Map как раз-таки AddressMap_RU как и в Вашем случае Poleax. Но классы все настроены, проблема именно при обращении к полю через Map, на форме поля отображаются верно. Проблемы происходит при смене, например, города, при котором очищаются нижестоящие поля через метод modifiedTown на Map и вот как раз в этом методе происходит обращения к новому полю для его очистки и трассировка стека.
X++:
public server void modifiedTown()
{
...
this.NewField = ''; //здесь трассировка стека
...
}
К тому же как и указал в первом посте, ошибка легко эмулируется указанным джобом без открытия формы вообще.

Последний раз редактировалось patron; 04.03.2011 в 09:45.
Старый 04.03.2011, 10:25   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от patron Посмотреть сообщение
В последствии в Map добавили новое поле, обновили Mapping для таблицы, но при попытке в коде обратиться к новому полю через Map, вываливается трассировка стека с ошибкой "Поле с кодом '0' не найдено в таблице Table".
В большинстве случаев Аксапта корректно распознает изменения.
Однако бывает, что Аксапта "не ловит" изменения, которые произошли в косвенных объектах.

типичные случаи:
класс -> таблица -> мап
форма -> таблица -> поле -> тип

в этом случае надо (упорядочено по возрастанию надежности и возрастанию геморройности для программиста)
= восстановить объект (правай кнопка мыши восстановить)
= обновить объекты AOD (сервис \ средства разработки \ Объекты приложения \ Обновить AOD)
= или выйти и зайти в аксапту
= удалить индексные файлы приложения
= выполнить глобальную перекомпиляцию.
__________________
полезное на axForum, github, vk, coub.
Старый 04.03.2011, 10:33   #7  
patron is offline
patron
Участник
 
19 / 12 (1) ++
Регистрация: 29.03.2007
Спасибо за совет. Но, к сожалению, все эти операции были проделаны и к результату не привели. Помог следующий способ: экспорт объекта, затем удаление его полностью из слоя, а затем обратный экспорт. Всем спасибо за советы!
За это сообщение автора поблагодарили: mazzy (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отладка кода C# при разработке под EP AX2009 player DAX: Программирование 4 24.09.2008 19:38
Как получить стек вызовов без изменения кода? Ilia# DAX: Программирование 2 24.01.2006 11:04
траблы при выделении черным цветом и указанием слоя изменения кода... NetBus DAX: Программирование 8 14.07.2005 18:31
Сводное планирование - изменения&изменения мин. Alexm DAX: Прочие вопросы 1 05.04.2005 10:43
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:06.