Да, действительно, собака была зарыта именно там. Если коннекшн роль подходит только для указанной сущности, то внутри connectionroleobjecttypecode в нужной записи поле
associatedobjecttypecode будет содержать имя сущности, а если для всех - то "none". Соответственно, указанный выше код достаточно переписать на
X++:
Conditions = {
new ConditionExpression("associatedobjecttypecode", ConditionOperator.In, new []{entityName, "none"})
}
Когда переписывал запрос под fetchXml, столкнулся с неожиданностью, что вместо символьного имени сущности необходимо подставлять код. Н-р:X++:
<fetch distinct="true" mapping="logical" output-format="xml-platform" version="1.0">
<entity name="connectionrole">
<attribute name="category"/>
<attribute name="name"/>
<attribute name="connectionroleid"/>
<order descending="false" attribute="category"/>
<link-entity name="connectionrole" to="connectionroleid" from="connectionroleid">
<link-entity name="connectionroleobjecttypecode" to="connectionroleid" from="connectionroleid" alias="ab">
<filter type="and">
<condition attribute="associatedobjecttypecode" operator="in">
<value>0</value> <!-- none 0 -->
<value>1</value> <!-- account -->
</condition>
</filter>
</link-entity>
</link-entity>
</entity>
</fetch>
Если кто подскажет, почему так, буду благодарен.