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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2014, 14:43   #1  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Ax2012 R2 - обновить model, оставить data?
Есть два приложения:
1) Девелоперское D1
2) Копия раб приложения P1
Задание - заменить код на девелоперском приложении кодом с раб приложения и сверху накатить проекты, созданные в D1 и которых нет пока в раб приложении.

Осложнение:
Раб приложение разрабатывалось на другом девелоперском приложении D2 и имеет объекты, которых нет в D1. Поэтому, если просто скопировать модель (или рестор model базы сделать), то я подозреваю, что без конфликтов ID не обойтись, тк sqlDictionary приложения D1 находится в базe с данными, а не моделью. Поэтому, вопросы:
1) Как разрешать такие конфликты. Можно ли просто , например, скпировать отдельно sqlDictionary table из раб приложения и ее подсунуть в базу D1. А потом уже накатывать новые проекты.
2) Как-то еще?

Последний раз редактировалось kitty; 14.10.2014 в 14:46.
Старый 14.10.2014, 15:10   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А чего вы хотите добиться?
Сохранить данные в D1?

Почему нельзя взять D2 и закинуть проекты в него?

Идентификаторы у вас в любом случае разъехались - в 2012 это обычное явление(
__________________
Axapta v.3.0 sp5 kr2
Старый 14.10.2014, 15:24   #3  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Хотим получить хорошее девелоперское приложение без мусора.
D2 по сути уже не жилец + там оч много мусора. Поэтому хотим взять рабочее оттестированное приложение и накатить новые проекты на него.
Хотим обновить только код, не трогать данные ( тк в девелоперской D1 уж много настроек сделано, которые не хотим пересоздавать c 0)
Так какое оптимальное решение?
Старый 14.10.2014, 15:37   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Может, проектом обновления? Взять P1 за основу, положить D1 в baseline, сравнить и начать поднимать из baseline то, чего в P1 недостает.
Старый 24.01.2015, 11:48   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Может, проектом обновления? Взять P1 за основу, положить D1 в baseline, сравнить и начать поднимать из baseline то, чего в P1 недостает.
Из всего прочитанного уяснил, что надо делать вот это

Только, за основу взять D1, а в бейслайн положить P1

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

Боюсь, такими темпами вы и через год будете иметь, что имеете.
Сори
__________________
Axapta v.3.0 sp5 kr2
Старый 24.01.2015, 21:28   #6  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Цитата:
Сообщение от AndyD Посмотреть сообщение
за основу взять D1, а в бейслайн положить P1
это не будет нормально работать
по крайней мере Detect code upgrade conflicts будет глючить - он как раз по ID сравнивать начнет, а они в этом случае разъехавшиеся будут

бейзлайн нормально работает только если его из того же приложения скопировать

как сделать нормально я уже три раза тут написал, но почему-то вы упорно пытаетесь пойти каким-то сложным путем
если нужно сохранить данные в D1, которые относятся к полям, которых нет в P1, то надо создать копию P1, перенести туда новые модификации любым способом, потом экспортнуть модель и импортнуть её в D1

Последний раз редактировалось lvan; 24.01.2015 в 21:36.
За это сообщение автора поблагодарили: kitty (0).
Старый 28.01.2015, 13:21   #7  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Цитата:
это не будет нормально работать
по крайней мере Detect code upgrade conflicts будет глючить - он как раз по ID сравнивать начнет, а они в этом случае разъехавшиеся будут
бейзлайн нормально работает только если его из того же приложения скопировать
Спасибо за комментарий, думала попробовать
В итоге придется делать именно так как вы описали. Просто хотелось в идеале, чтобы во всех environments везде все одинаково было.

Цитата:
Боюсь, такими темпами вы и через год будете иметь, что имеете.
Сори
я рада, что вы располагаете временем и ресурсами на эксперименты, не на всех проетах так, к сожалению
Старый 14.10.2014, 15:40   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А D1 как было получено?
__________________
Axapta v.3.0 sp5 kr2
Старый 21.01.2015, 13:26   #9  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Можно ли, чтобы сохранить все данные, но заменить модель:
1) в D1 импортировать модель из P1 (Import-AXModelStore -File <Filename> -idconflict: overwrite)
2) скопировать таблицу sqlDictionary из P1 в D1
3) откомпилировать/синхронизовать
я так понимаю, после 1)-3 ) у нас получится приложение как в P1, но данные останутся, что были в D1

4) сверху накатить проекты по-одному, которые были в D1. но отсутствовали в P1.
5) если id-конфликты при импорте объектов, то вручную их починить.Кстати, как импортировать таблицу, если уже есть таблица с таким же ID? (думаю, что можно создать таблицу с тем же именем, таким образом ей выделится нужный ID, а потом этот ID вручную вбить в xpo вместо старого. Есть еще варианты? Может галка Enable data recovery for tables with changed Ids как-то помочь?)
Старый 21.01.2015, 14:41   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Таблицу SystemSequence надо будет лечить. Это следующие значения для RecId. Ссылка на таблицы - через их код.
Импортировать ее из P1 не получится

NUMBERSEQUENCEDATATYPE так же надо будет лечить - номерные серии съедут

Привязку пользователей к ролям так же надо будет лечить (если были такие настройки)

Так же, синхронизация убьет объекты, которых не было в P1 (речь о полях).


Импорт сейчас вообще не смотрит на идентификаторы
Любые два идентичных приложения уже после пары-тройки переносов проектов разъезжаются по идентификаторам

PS Еще будет нюанс с объектами с длинными именами (у таблиц, полей, вьюх).
В сиквеле такие имена хранятся урезанными с добавлением идентификатора объекта.
Если поменяется идентификатор, то Аксапта существующие в базе не увидит и создаст заново (а поля просто удалит)
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 21.01.2015 в 15:07.
Старый 21.01.2015, 15:12   #11  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Роли на D1 не настраивали, должно быть ок
Почему SystemSequence и NUMBERSEQUENCEDATATYPE могут съехать?
Старый 21.01.2015, 15:45   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Потому-что в этих таблицах хранятся идентификаторы объектов, привязанных к текущему приложению

В SystemSequence.TabId - ссылки на TableId таблиц
В NUMBERSEQUENCEDATATYPE.DatatypeId - ссылка на Id EDT
__________________
Axapta v.3.0 sp5 kr2
Старый 21.01.2015, 21:00   #13  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
вот вы извращенцы
в ax2012 ведь специально сделали так, чтобы не было гемора с ID, но нет - вы его сами находите и пытаетесь с ним бороться

просто импортируйте новую модель и всё (axutil import /replace)
если имя модели и паблишер совпадают, то /replace подразумеваться будет

Последний раз редактировалось lvan; 21.01.2015 в 21:07.
Старый 23.01.2015, 19:14   #14  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
Согласна, мы - извращенцы, но также и те, кто завязывает данные на ID в приложении ..

У нас на D1 забита уже куча данных, например, те же новые NumberSeq. В старом приложении их нет.
Моя задача - обновить код на D1 кодом с рабочего приложения(тк некоторые багфиксы у нас отсутствуют) и добавить сверху все наши модификации (на самом деле надо на D1 и T1, где T1 - тестовое приложение). При этом надо оставить в живых многомесячные эксперименты консультантов, что не возможно, как я понимаю, тк в White paper, открытым текстом сказано " we recommend that you use test data that you can import after each deployment."

Я восстанавливаю в D1 модель из старого приложения P1 и импортирую новую модель (или даже проекты). При этом некий EDT из D1, на кот основана ном серия, обретает новый ID и синхронизация данных тут же улетает в трубу.
Пара конструктивных вопросов:
1) Может, в такой ситуации экспортировать номерные серии и заново импортировать после обновления кода?
2) Как удалить номерную серию (кроме как руками удалять данные в системных таблицах numberseqDatatype, numberseqref etc) и создать заново? (фиг с ним, что в таблицах будут данные, завязанные на сгенерированные ею "старые значения".)
3) Я так понимаю, что, чтобы осуществить "we recommend that you use test data that you can import after each deployment.", нужно для каждой новой таблицы сразу писать еще и DIXF код, так??

Последний раз редактировалось kitty; 23.01.2015 в 19:39.
Старый 24.01.2015, 03:48   #15  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
у вас каша в голове, DIXF тут ни при чем, вы не то читаете вообще. вот что вам надо читать https://technet.microsoft.com/en-us/.../hh352326.aspx

что вы под "восстанавливанием" понимаете?
я ведь написал, что надо сделать - просто заменить модель (например, "USR Model")
при импорте новой модели AX автоматически присвоит правильные ID, вам вообще не надо ни о чем думать.
единственно важный момент: нужно именно _заменить_ (replace), а не удалить старую и импортнуть новую

Последний раз редактировалось lvan; 24.01.2015 в 04:07.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axsa: Microsoft Dynamics AX 2012 Data Import/Export Framework standalone version for AX 2012 R2 without installing full CU7 Blog bot DAX Blogs 0 04.12.2013 04:13
emeadaxsupport: SEPA affected objects Blog bot DAX Blogs 0 29.11.2013 13:11
atinkerersnotebook: Using PowerPivot to Analyze Dynamics AX Data Blog bot DAX Blogs 1 05.10.2013 07:23
axaptacorner: Model, Model Stores and Base Line Data base in ax 2012 Blog bot DAX Blogs 0 10.01.2013 13:11
ax-erp: Walkthrough: Creating a Report Bound to a Report Data Provider Class (X++ Business Logic) [AX 2012] Blog bot DAX Blogs 0 20.09.2012 11:11

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

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

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