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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.04.2015, 13:42   #1  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Цитата:
Сообщение от RVS Посмотреть сообщение
А в чем в целом задача-то состоит? Куда вы этот "список изменений на VAR" потом деть хотите?
1. Ситуация следующая:
1.1. Перед обновлением АХ подрядчиком, я сохраняю VAR слой в VAR_OLD;
1.2. Для обновления АХ, подрядчик подменяет VAR слой своим;
1.3. Мои объекты, и модификации объектов VAR слоя, находятся на CUS.

2. Задача:
2.1. Выбрать все объекты CUS;
2.2. Выбрать все объекты VAR, которые также существуют на CUS;
2.3. Выбрать все объекты VAR_OLD, соответствующие выборке п.2.2;
2.4. Сравнить п.2.3 и п.2.4. В случае нахождения различий— сообщить.

3. Возможные решения п.2.4:
3.1. Используя SysCompare;
3.2. Используя экспорт объекта в XPO с последующим сравнением.

4. Проблема использования возможных решений состоит в том, как писал KIA:
Цитата:
Для слоя берет все, а ОЛД без нижних слоев
Старый 01.04.2015, 15:58   #2  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Понятно.

Не знаю. Я всегда делал так :

- создаю проект "различий" при помощи Сравнения слоев с именем, например, zzz
- создаю еще один проект zzz_ready. Пустой.
- иду по проекту zzz, начиная с EDT, таблиц, и т.д.
- сравниваю каждый объект (в вашем случае - CUS и VAR слои)
- если Акса говорит "Расхождений не обнаружено" - тупо удаляю объект из zzz
- если Акса находит расхождения - мержу эти расхождения и переношу объект в zzz_ready

По окончании работы - проект zzz пуст, в zzz_ready - реально изменившиеся объекты.

Тоталь :

1. Все, что вы экономите своей доработкой со сравнением слоев - это суммарное время на (сравнение + удаление) "одинаковых" объектов из проекта zzz. Вопрос : а оно правда того стоит?

2. Ситуация, когда "объекты различаются на более низком слое" может быть вызвана, в том числе, и тем, что один из партнеров накатил у себя обновление (от Микрософта которое), а другой партнер этого не сделал. Другого объяснения мне как-то не видится. Понятно, что это.. нехорошо и делать так не стОит. Но это уже вам решать с вашим подрядчиком.
__________________
Best Regards,
Roman
За это сообщение автора поблагодарили: MazZzDaI (1).
Старый 01.04.2015, 18:01   #3  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от MazZzDaI Посмотреть сообщение
1. Ситуация следующая:
1.1. Перед обновлением АХ подрядчиком, я сохраняю VAR слой в VAR_OLD;
1.2. Для обновления АХ, подрядчик подменяет VAR слой своим;
1.3. Мои объекты, и модификации объектов VAR слоя, находятся на CUS.

2. Задача:
2.1. Выбрать все объекты CUS;
2.2. Выбрать все объекты VAR, которые также существуют на CUS;
2.3. Выбрать все объекты VAR_OLD, соответствующие выборке п.2.2;
2.4. Сравнить п.2.3 и п.2.4. В случае нахождения различий— сообщить.

3. Возможные решения п.2.4:
3.1. Используя SysCompare;
3.2. Используя экспорт объекта в XPO с последующим сравнением.

4. Проблема использования возможных решений состоит в том, как писал KIA:
Если так не работает:
1. Утилитой сравнения слоев получить проект между var и old var.
2. Удалить из проекта, например джобом, все объекты отсутствующие на cus слое.

То можно написать своё сравнение с шахматами и куртизанками, метод отсутствующий в 2009 и пример его работы:
X++:
/// <summary>
/// Checks whether an item exists in the given layer
/// </summary>
/// <param name="_node">The tree node instance.</param>
/// <param name="_layer">The layer.</param>
/// <returns>true if an item exists in the given layer; otherwise, false.</returns>
public static boolean existsInLayer(TreeNode _node, UtilEntryLevel _layer)
{
    return SysTreeNode::isNodeInLayer(_node, _layer) ||
    (_node.applObjectLayerMask() & (1 << _layer)); // check if sub-elements' layer is in layer mask
}
X++:
    treeNode = TreeNode::findNode(_treeNodePath);

    if (treeNode && SysTreeNode::existsInLayer(treeNode, _layer))
    {
        for (layerCnt = UtilEntryLevel::usp; layerCnt >= _layer; layerCnt--)
        {
            if (SysTreeNode::existsInLayer(treeNode, layerCnt))
                i++;
        }
    }
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибки при установке SP и русского слоя. (AX 2009) lekonstantine DAX: Администрирование 6 30.11.2011 12:48
Экспорт отдельного слоя приложения S.Kuskov DAX: Программирование 2 26.01.2010 08:34
Экспорт слоя USR st_msav DAX: Администрирование 2 10.02.2006 13:56
Программынй экспорт из определенного слоя Vasilenko Alexsandr DAX: Программирование 14 08.12.2005 15:07
Экспорт таблиц и форм с указанием слоя Zepp DAX: Администрирование 8 31.10.2005 20:16

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

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

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