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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.06.2015, 10:05   #1  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
? Восстановление DeleteAction после обновления
Доброго времени суток.
Столкнулся с очень досадной недоработкой механизма сравнения объектов в AOT и удалением изменений в узлах таблицы. Ни первый, ни второй механизм не дает возможности "восстановить" DeleteAction с родительских слоев после обновления.
Яркий пример - таблица CustTable на AX 2012R3 CU8. Гроздь MCR* delete action. Если внесены корректировки на верхних слоях, то восстановление DeleteAction становится очень трудоемкой работой. И если на тестовом приложении можно пойти по пути потери данных: выгрузка в XPO, удаление верхних слоев, загрузка полей и изменений в коде через сравнение XPO и текущего состояния, а потом ручное добавление "потерявшихся" узлов таблицы; то как быть на активно используемом приложении.
У кого-нибудь есть рецепт для восстановления deleteaction с нижних слоев?
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 02.06.2015, 10:18   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Как минимум 3 способа.
1. Создать их руками.
или
2. Выгрузить в XPO с каждого из слоев. Редактором Notepad скпировать соответсвующие куски XPO - импортнуть обратно.
или
3. Закомментить вызов синхронизации внутри метода Application.dbSynchronize
Грохнуть что вам надо. Импортнуть снова. При этом в базе ничего не должно удалиться. Затем раскомментить.
Правда если в приложении работает еще кто-то кроме вас, то такой подход может не сработать.
Старый 02.06.2015, 13:19   #3  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Как минимум 3 способа.
1. Создать их руками.
или
2. Выгрузить в XPO с каждого из слоев. Редактором Notepad скпировать соответсвующие куски XPO - импортнуть обратно.
или
3. Закомментить вызов синхронизации внутри метода Application.dbSynchronize
Грохнуть что вам надо. Импортнуть снова. При этом в базе ничего не должно удалиться. Затем раскомментить.
Правда если в приложении работает еще кто-то кроме вас, то такой подход может не сработать.
1, создать вручную 25 DA с разными видами настроек? "Шурик, это не наш метод".
2. Вариант неплохой, но только при малом количестве слоев, на которых были изменения в DA. Т.к. импорт в XPO со слоя выдает только то, что было на этом слое. Вот если бы можно было выгрузку по списку слоев или с включением всех нижележащих слоев.
3. Не вариант. Часть объектов в таблице с помощью инструмента сравнения XPO и AOT не удастся добавить (понажимать на стрелочки). Опять придется вручную создавать некоторые потерянные объекты.

(Не совсем понятно, почему удаление нельзя вызвать по узлу DeleteAction.)
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 02.06.2015, 14:01   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Стрелки в любом случае нажимать не выйдет так как они работают через drag and drop, а DeleteAction его не поддерживает потому стрелочек там и нет
Как по мне самый оптимальный вариант через мержинг xpo в любой мержилке.
За это сообщение автора поблагодарили: Bergman (1).
Старый 02.06.2015, 16:41   #5  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от skuull Посмотреть сообщение
Как по мне самый оптимальный вариант через мержинг xpo в любой мержилке.
Все было бы хорошо, если бы структура оставалась постоянной, так ведь нет: при выгрузке в XPO с определенного слоя выгружаются только те разделы, в которых были изменения на слое. Мержинка не поймет, в какой узел добавить изменения следующего слоя, т.к. такой структуры может не быть в сравниваемом файле.
И еще, как быть с тем случаем, если что-то удалили, например, на syp? Что мы увидим в xpo с sys слоя и с syp слоя?

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

Последний раз редактировалось KiselevSA; 02.06.2015 в 16:42. Причина: (очепятки)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009: Ошибка оптимистической модели обновления DSPIC DAX: Программирование 25 22.01.2021 11:53
Задержка при открытии клиента после обновления перекрёстных ссылок MazZzDaI DAX: Администрирование 4 27.05.2015 07:53
Восстановление фильтров грида после смены Query HorrR DAX: Программирование 3 15.05.2014 17:46
axforum blogs: Ошибка обновления Организации при установке UpdateRollup Blog bot DAX Blogs 0 11.04.2013 20:11
Суммовые после списания со склада Ann DAX: Функционал 1 26.10.2004 14:33

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

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

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