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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2017, 22:10   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2014
 
2,704 / 1379 (51) ++++++++
Регистрация: 12.10.2004
Адрес: Химки, Московская область
? Создание классов из кода.
Столкнулся с задачей генерации классов из кода.
Посмотрел примеры, в том числе в стандартном коде.

В связи с этим вопросы:
1. Во многих местах в коде стоит сперва Treenode.AOTcompile() а потом Treenode.AOTsave
(примеры
\Classes\AxGenerateAxBCClass\generate
\Classes\AxGenerateAxdClass\generate
\Classes\AifClassGeneratorBase\compileAndSave

Хотя по логике надо наоборот делать. Сперва сохранять, а потом компилировать.
И такие примеры тоже есть
\Classes\SysClassWizard\run
(Хотя в последнем примере в одном и том же методе и так и сяк делается. Интересно, зачем ? или это пляски с бубном чтобы нормально откомпилировались статические методы типа main ? - Они с первой компиляции могут не видеть run() pack() unpack() методы)

Так как же все-таки правильно делать ?

2. В коде встречаются вызовы AOTrefresh() и AOTRestore(true) после компиляции. Причем AOTrestore() - намного реже. В чем разница и зачем их вызывают ? прочистка кешей ? А что будет если пропустить их вызов ? Чем рискуем ?
Старый 14.03.2017, 23:22   #2  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
хороший вопрос. тоже интересно

могу ответить только на это:
Цитата:
Сообщение от Logger Посмотреть сообщение
2. В коде встречаются вызовы AOTrefresh() и AOTRestore(true) после компиляции. Причем AOTrestore() - намного реже. В чем разница и зачем их вызывают ? прочистка кешей ? А что будет если пропустить их вызов ? Чем рискуем ?
в составных объектах есть автогруппы и автоопределение полей.
AOTrefresh() перечитывает составной объект из АОТ
AOTRestore(true) перечитывает и сам объект, и объекты из которых он состоит и обновляет автогруппы.

например, есть форма.
форма использует датасорс.
у датасорса есть группы полей
на форму выведена группа полей со свойством autogroup=yes.

AOTRestore(true) перечитает и форму, и таблицу, обновит список групп полей, обновит группу полей на форме.
В результате форма может измениться даже если в сам объект изменения не вносились.

то же самое во всех query, view, datasource, где установлено свойство dynamic field = yes.

и так далее.
__________________
Facebook, mazzy.priot, mazzy.music.
За это сообщение автора поблагодарили: Logger (5).
Старый 14.03.2017, 23:42   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2014
 
2,704 / 1379 (51) ++++++++
Регистрация: 12.10.2004
Адрес: Химки, Московская область
По п.1 - разницы похоже нет.
Сделал вариант когда сперва save затем compile - нормально работает. Оставил его, так как так логичнее.
Хотя все равно свербит, зачем для генерации ax классов в стандарте сделали наоборот. И в ISV решении от партнера также сделано. Странно. Неужели ошибка. Или я просто чего-то не понимаю.

Последний раз редактировалось Logger; 14.03.2017 в 23:44.
Старый 15.03.2017, 00:33   #4  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,223 / 1892 (72) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Разве когда начинаешь компилировать оно не сохраняет автоматом?
Скорее всего это объясняет почему работает и так и так

Обратите внимания что это будет недоступна в АХ 7 - в рантайм
Старый 15.03.2017, 10:51   #5  
Ivanhoe is offline
Ivanhoe
КОРУС Консалтинг
Аватар для Ivanhoe
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
КОРУС Консалтинг
 
3,397 / 1592 (60) ++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Разве когда начинаешь компилировать оно не сохраняет автоматом?
Скорее всего это объясняет почему работает и так и так

Обратите внимания что это будет недоступна в АХ 7 - в рантайм
Что именно будет недоступно? Нельзя создавать классы из кода? Product Builder идет лесом?
__________________
Ivanhoe as is..
Старый 15.03.2017, 11:03   #6  
bio_unit is offline
bio_unit
Участник
Аватар для bio_unit
Сотрудники компании GMCS
Ex AND Project
 
114 / 64 (3) ++++
Регистрация: 21.04.2004
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Что именно будет недоступно? Нельзя создавать классы из кода? Product Builder идет лесом?
Кстати, в модуле Retail транспорт Async синхронизации тоже основан на динамической генерации временных таблиц и классов из кода в DAX.
Retail, походу, тоже идет лесом...
Старый 15.03.2017, 11:04   #7  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от bio_unit Посмотреть сообщение
Retail, походу, тоже идет лесом...
не дождетесь )

сейчас там stage таблицы не генерируются динамически.
и слава богу.
__________________
Facebook, mazzy.priot, mazzy.music.
Старый 15.03.2017, 11:06   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2014
 
2,704 / 1379 (51) ++++++++
Регистрация: 12.10.2004
Адрес: Химки, Московская область
Цитата:
Сообщение от bio_unit Посмотреть сообщение
Кстати, в модуле Retail транспорт Async синхронизации тоже основан на динамической генерации временных таблиц и классов из кода в DAX.
Retail, походу, тоже идет лесом...
Ого !
Идея то популярная.
Я генерацию тоже пишу для целей импорта и экспорта данных. Получается, что у разных людей независимо возникли похожие идея по реализации.
Старый 15.03.2017, 11:22   #9  
bio_unit is offline
bio_unit
Участник
Аватар для bio_unit
Сотрудники компании GMCS
Ex AND Project
 
114 / 64 (3) ++++
Регистрация: 21.04.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
сейчас там stage таблицы не генерируются динамически.
и слава богу.
там же не только stage таблицы генерировались динамически, но и сами классы выгрузки пакета с данными из DAX
Старый 15.03.2017, 11:38   #10  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от bio_unit Посмотреть сообщение
там же не только stage таблицы генерировались динамически, но и сами классы выгрузки пакета с данными из DAX
вместо классов объекты нового типа - dataEntity.

Ребяты, не надо, не пишите динамическую генерацию кода и схему данных!
Пожалуйста.

Вспомните табель в русской зарплате.
стоило часть работ сделать в одном слое (например, в USR), а другую часть работ в другом слое (USP)... так все накрывалось медным тазом - система не могла динамически изменить объекты, созданные в другом слое.

проверки и компиляция тоже уходит в ран-тайм.
а главное - в ран-тайм уходит отладка. там ее на порядок сложнее вести.

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

если уж так свербит сделать меганастраиваемое,
то лучше заложите в статическую структуру максимально возможный вариант, а динамически только выключайте видимость/доступность.
__________________
Facebook, mazzy.priot, mazzy.music.

Последний раз редактировалось mazzy; 15.03.2017 в 13:37.
За это сообщение автора поблагодарили: Ivanhoe (5).
Старый 15.03.2017, 13:00   #11  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
 
1,636 / 804 (30) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ребяты, не надо, не пишите динамическую генерацию кода и данных!
Пожалуйста.
А данные почему нельзя генерировать? А что тогда программа вообще будет делать?
За это сообщение автора поблагодарили: mazzy (2).
Старый 15.03.2017, 13:04   #12  
trud is offline
trud
Участник
 
309 / 196 (7) ++++++
Регистрация: 07.06.2003
Цитата:
Сообщение от mazzy Посмотреть сообщение
вместо классов объекты нового типа - dataEntity.
классы кстати по прежнему генерятся, только при компиляции дата ентити. в АОТ они не видны, расположены в папке
J:\AosService\PackagesLocalDirectory\ApplicationSuite\bin\GeneratedXppSource
имеют названия
DataEntityView_AgingPeriodDefinitionEntity+__Persister__.xpp и т.п.
За это сообщение автора поблагодарили: Logger (1), AlGol (1).
Старый 15.03.2017, 13:27   #13  
Logger is offline
Logger
Участник
Лучший по профессии 2014
 
2,704 / 1379 (51) ++++++++
Регистрация: 12.10.2004
Адрес: Химки, Московская область
Цитата:
Сообщение от trud Посмотреть сообщение
классы кстати по прежнему генерятся, только при компиляции дата ентити. в АОТ они не видны, расположены в папке
Это в Ax7 ?
Старый 15.03.2017, 13:37   #14  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А данные почему нельзя генерировать? А что тогда программа вообще будет делать?
да, конечно!
конечно, схему данных, а не данных.
я неправильно написал. извините. исправил.
__________________
Facebook, mazzy.priot, mazzy.music.
Старый 15.03.2017, 13:39   #15  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от trud Посмотреть сообщение
классы кстати по прежнему генерятся, только при компиляции дата ентити. в АОТ они не видны, расположены в папке
Угу-угу.
Вот именно так и не делайте.
__________________
Facebook, mazzy.priot, mazzy.music.
Старый 15.03.2017, 13:50   #16  
bio_unit is offline
bio_unit
Участник
Аватар для bio_unit
Сотрудники компании GMCS
Ex AND Project
 
114 / 64 (3) ++++
Регистрация: 21.04.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
Угу-угу.
Вот именно так и не делайте.
Типа "Что дозволено Юпитеру, то не дозволено быку"?
Если великий Майкрософт так делает, то почему простым смертным так же не делать?
Старый 15.03.2017, 14:32   #17  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,242 / 3057 (142) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
а... в таком ключе я не думал...

у нас свободная страна и делать можно как угодно, конечно.
просто огребете те же проблемы )))
__________________
Facebook, mazzy.priot, mazzy.music.
Старый 16.03.2017, 07:58   #18  
dech is offline
dech
Участник
Аватар для dech
 
367 / 130 (5) +++++
Регистрация: 25.06.2009
Адрес: Омск
В направлении ускорения разработки очень даже полезная штука. Можно, допустим, наследника RunBase по-быстрому забабахать. Включил галочки, задал поля для диалога и класс готов!
__________________
// no comments
Старый 16.03.2017, 10:42   #19  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
 
1,636 / 804 (30) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Речь не идет об утилитах для разработки. Имеются ввиду ситуации, когда какие-то объекты создаются/модифицируются при работе пользователей, при настройке каких-то алгоритмов и т.п.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 аналог friend классов. Как сделать? Raven Melancholic DAX: Программирование 9 07.11.2015 23:50
Изменения Свойств поля из кода, при создание отчета АртемМелихов DAX: Программирование 2 04.02.2014 20:34
Небольшой тюнинг редактора кода AX2012 kart DAX: Программирование 6 22.02.2013 17:21
Создание классов программно Beast-L DAX: Программирование 8 22.11.2006 13:40
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:51.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.