Наткнулся на одну особенность парсера XPath в 1С, из-за которой вполне валидные запросы вызывают ошибку "XPath Invalid expression".
Если попытаться, например, выбрать узлы, содержащие некое значение атрибута, но при этом не содержащие дочерние узлы определенного вида, то выражение с функцией not(), примененной к элементу, приводит к ошибке.
/*/ElementA[ElementB[@attrib="value"]/not(ElementC)]
В то же время отрабатывает запрос
/*/ElementA[ElementB[@attrib="value"] and not(descendant::elementC)]
Но, например, в Oxygen XML Editor отрабатывают оба запроса (для демонстрации использована XSD-схема от EnterpriseData 1.17, выбираются узлы вида "simpleType" c типом "string", но не являющиеся перечислениями (то есть не содержащие подузлы вида "enumeration").
Вывод такой: получается, что необходимо пока воздерживаться от применения функции not() непосредственно к элементу поиска, а использовать ось descendant:: .
Возможно, в будущих релизах платформы ситуация изменится.
Может быть, кому-то будет полезно.