|
![]() |
#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: Цитата:
Для слоя берет все, а ОЛД без нижних слоев
|
|
![]() |
#2 |
Сенбернар
|
Понятно.
Не знаю. Я всегда делал так : - создаю проект "различий" при помощи Сравнения слоев с именем, например, zzz - создаю еще один проект zzz_ready. Пустой. - иду по проекту zzz, начиная с EDT, таблиц, и т.д. - сравниваю каждый объект (в вашем случае - CUS и VAR слои) - если Акса говорит "Расхождений не обнаружено" - тупо удаляю объект из zzz - если Акса находит расхождения - мержу эти расхождения и переношу объект в zzz_ready По окончании работы - проект zzz пуст, в zzz_ready - реально изменившиеся объекты. Тоталь : 1. Все, что вы экономите своей доработкой со сравнением слоев - это суммарное время на (сравнение + удаление) "одинаковых" объектов из проекта zzz. Вопрос : а оно правда того стоит? 2. Ситуация, когда "объекты различаются на более низком слое" может быть вызвана, в том числе, и тем, что один из партнеров накатил у себя обновление (от Микрософта которое), а другой партнер этого не сделал. Другого объяснения мне как-то не видится. Понятно, что это.. нехорошо и делать так не стОит. Но это уже вам решать с вашим подрядчиком.
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: MazZzDaI (1). |
![]() |
#3 |
Британский учённый
|
Цитата:
Сообщение от 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. Ну а программистов будить нельзя вообще. |
|