Посмотрите, в каком контексте возникает указанная ошибка. Если поискать метки для текста ошибки, то найдем @SYS335397 и @SYS320343. Судя по перекрестным ссылкам, нам нужна именно вторая, она используется в следующих интересных местах:
- \Classes\AfDataContainerSerializer\moveToNextElement
- \Classes\AfDataContainerSerializer\skipEndElement
- \Classes\AxdBaseCreate\checkCurrentElement
- \Classes\AxdBaseCreate\moveToNextElement
- \Classes\AxdBaseCreate\moveToNextXmlElement
- \Classes\AxdBaseCreate\readDimensionAttributeValues
- \Classes\AxdBaseCreate\skipEndElement
В свою очередь, скажем, \Classes\AxdBaseCreate\checkCurrentElement вызывается из \Classes\AxdBaseCreate\readSurrogateForeignKeyValue, что уже наводит на размышления. Посмотрим, как вы передаете ссылку на классификацию договоров:
PHP код:
<SalesAgreementHeaderT class="entity">
<AgreementClassification>
<Name xmlns="http://schemas.microsoft.com/dynamics/2008/01/sharedtypes">B2B</Name>
</AgreementClassification>
А теперь взгляните на ключ замены на таблице AgreementClassification: в него кроме поля Name еще входит поле AgreementRelationType

В поле AgreementRelationType в вашем случае должно быть значение tableNum(SalesAgreementHeader), т.е. 4903. Таким образом, есть версия, что вы передаете не все поля ключа замены для таблицы AgreementClassification.