Показать сообщение отдельно
Старый 01.04.2015, 18:01   #31  
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. Ну а программистов будить нельзя вообще.