Цитата:
Сообщение от
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++;
}
}