1. PythonJ 75 13.04.18 10:43 Сейчас в теме

Фиксированное значение свойства в XDTO

Не получается задать фиксированное значение свойства в фабрике XDTO.
Предыстория такая. Пытаюсь увязать ГИС ЖКХ с фабрикой XDTO в 1С.
В статье на хабре был описан способ это сделать, в общем-то ничего сложного.
Статья писалась давно и в ней есть такой момент
импорт XDTO не обрабатывает аттрибут fixed

Начиная с версии платформы 8.3.10 этот атрибут стал обрабатываться, но при этом 1С не сохраняет XDTO пакет, ругается вот так (на примере импорта файлов ГИС ЖКХ)
Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: exportOrgRegistryRequest пакет: http://dom.gosuslugi.ru/schema/integration/organizations-registry-common/
Неоднозначное определение свойства 'version'

Я вычистил пакеты и оставил только элемент, который вызывает проблему.
Собственно вопрос - каким образом заставить 1С понять, что это атрибут из указанного пространства имен и при этом имеет фиксированное значение?
Пусть даже вручную. Как вообще задавать фиксированные значения в XDTO?
При необходимости можно будет потом перед импортом поправить исходные xsd, главное, чтобы потом на выходе получился правильный XML.
Во вложениях исходная схема XSD, вычищенная схема XSD (только с проблемой) и конфигурация в которую импортирован вычищенный вариант. Но обновить базу не получается из-за указанной проблемы. Импортировать в 1С надо файл hcs-organizations-registry-common-types.xsd
Прикрепленные файлы:
original_XSD.zip
clean_XSD.zip
1Cv8.dt
Вознаграждение за ответ
Показать полностью
Ответы
Избранное Подписка Сортировка: Древо
2. rujiy_kot 13.04.18 11:48 Сейчас в теме
Попробуйте удалить определение типа для свойства "exportOrgRegistryRequest", в свойствах этого свойства "exportOrgRegistryRequest" задайте Тип "String", Фиксированное = Истина, По умолчанию, например, "10.0.2.1".
3. PythonJ 75 13.04.18 11:57 Сейчас в теме
(2) В итоге в свойстве "exportOrgRegistryRequest" должен быть атрибут "version = 10.0.2.1". Само свойство "exportOrgRegistryRequest" не фиксированное. Тут еще надо вспомнить недобрым словом тех кто эту XSD рисовал изначально (разработчики ГИС ЖКХ). Потому что вообще-то "exportOrgRegistryRequest" - это не свойство. В итоговом XML это элемент с вложенными элементами. Вот правильный результат:
<organizations-registry-common:exportOrgRegistryRequest Id="signed-data-container" base:version="10.0.2.1">
	<organizations-registry-common:SearchCriteria>
		<organizations-base:OGRN>1231231231231</organizations-base:OGRN>
	</organizations-registry-common:SearchCriteria>
</organizations-registry-common:exportOrgRegistryRequest>

При этом в "base:version="10.0.2.1" ссылка на пространство имен "base" обязательна.
4. rujiy_kot 13.04.18 14:22 Сейчас в теме
(3) А если в "exportOrgRegistryRequest" в определении типа "{http://dom.gosuslugi.ru/schema/'... убрать признак "Фиксированный" и "По умолчанию", а вот в самом пакете base, где задаётся version - там поставить "Фиксированный" и "По умолчанию "10.0.2.1"?
В этом случае конфа сохраняется и обновляется. А вот при формировании пакета, происходит заполнение как Вам нужно?
5. PythonJ 75 16.04.18 14:10 Сейчас в теме
(4) Так, конечно, работает, но это не решает проблемы. Беда в том, что свойство "version" есть у многих других свойств со ссылкой на пакет "base". И фиксированное значение в разных случаях разное.
6. rujiy_kot 16.04.18 16:46 Сейчас в теме
(5) Думаю, что платформа не позволит это сделать. Если фиксированное значение для определенного типа, то оно для всех мест, где это используется.
Возможно, следует в программном коде обходить этот вариант? И программным кодом заполнять разные "version".
Либо написать на v8@1c.ru
7. PythonJ 75 17.04.18 06:50 Сейчас в теме
Так и заполняю пока, программным кодом. Придется написать разработчикам, наверное, не знаю, будет ли от этого толк. Насколько я могу судить, это все-таки проблема платформы. Другие SOAP-клиенты, тот же SoapUI прекрасно понимает, чего от него требуется. Самое неприятное заключается даже не в программном заполнении поля, это как раз может быть даже лучше, лишняя проверка на совместимость версий. Грабли в том, что в перспективе мне было бы удобнее динамически создавать WSСсылки в коде по ссылке на WSDL и уже оттуда использовать ФабрикуXDTO. Если не установить для конфигурации режим совместимости, то ссылка просто не работает, так как платформа считает XSD некорректным.
8. johnnyshut23 30.04.18 21:40 Сейчас в теме
Отличный пример, спасибо!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
По совместительству

Старший Программист 1С НОВОСИБИРСК
Новосибирск
зарплата до 130 000 руб.
Полный день

Программист 1С
Ростов-на-Дону
зарплата до 120 000 руб.
Полный день