Адаптация XML - схем ГИС ЖКХ в XDTO пакетах

1. kolodinivan 05.04.19 14:14 Сейчас в теме
Всем добрый день, хочу попробовать поднять обсуждения по поводу импорта xml-схем в XDTO-пакеты, которые предоставляет ГИС ЖКХ. При проверки XDTO-пакетов вылетает кучу ошибок, на некоторые получилось найти ответ на форумах, а на другие не нашел.
Допустим начнем с пакета hcs-house-management-types.xsd, он у нас самый большой по методам. Импортирую в XDTO, подтягиваются еще 10 связанных пакетов.
Проверяю основной пакет выкатывается полотно ошибок примерно такие:

1. Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: exportCAChAsyncRequest пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'version'

2. Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'No_RSO_GKN_EGRP_Registered'

Первая ошибка была исправлена путем изменения xsd файла. Решение нашел на https://forum.infostart.ru/forum15/topic190632/ , убрал как советовали фиксированный и по умолчанию.
Было: "<xs:attribute ref="base:version" use="required" fixed="12.2.1.2"/>"
Стало: "<xs:attribute ref="base:version"/>"

Со второй ошибкой не понятно, вообще вот лог ошибки по одному свойству No_RSO_GKN_EGRP_Registered:

Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'No_RSO_GKN_EGRP_Registered'
Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'No_RSO_GKN_EGRP_Registered'
Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'No_RSO_GKN_EGRP_Registered'
Ошибка проверки модели XDTO: xdto-objectType-3.9.1 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
Неоднозначное определение свойства 'No_RSO_GKN_EGRP_Registered'
Ошибка проверки модели XDTO: xdto-objectType-4.1.0 (определение анонимного типа) свойство: BasicCharacteristicts тип: ApartmentHouseUOType пакет: http://dom.gosuslugi.ru/schema/integration/house-management/
При наследовании ограничением, определение новых свойств запрещено. Свойство: 'No_RSO_GKN_EGRP_Registered'


там таких много только в других объектах, но вот возьмем в пример это. Я попробовал пойти по старому пути, убрал в палитре свойств фиксированный и
по умолчанию, ушли 2 строки "Неоднозначное определение свойства", дальше как не тыркался, ничего не помогает. Уже не знаю куда капать.

Прикрепил 2 схемы, одну эталонную без изменений, а другую, где я версию подправил. Можно тестить в принципе в пустой конфе. Может вообще в итоге платформа ущемляет возможности всякие, не знаю.
Прикрепленные файлы:
hcs_wsdl_xsd_v.12.2.2.15 подправлена version.7z
hcs_wsdl_xsd_v.12.2.2.15 Эталон.7z
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RomanVolgograd 12 08.09.20 13:06 Сейчас в теме
Не особо актуальная тема.. полтора года висит вопрос.

Доброго времени суток. Сегодня столкнулся с такой же проблемой. Я так понимаю автор этот вопрос давно решил, но не сказал как. Поделюсь своим опытом (для будущих поколений, благодарить не нужно, вознаграждать тоже).

Итак по первому пункту (Версия) автор дал вполне вменяемое решение. Собственно все остальные ошибки свелись в итоге к этой же проблеме. Но только если в случае с версией нужно пробежаться по всем версиям и поменять, как указал автор, то в случае например с No_RSO_GKN_EGRP_Registered нужно не только поправить свойство, но искать где есть ссылки в типах объектов (в данном случае GKN_EGRP_KeyExportType, GKN_EGRP_KeyRSOType и т.д.) и поправить там.

В общем править руками много, искать ссылки муторно, короче жопуА (прошу прощения за мой французкий).

Мне лично было лень все это искать и править руками, набросал коротенькую обработку. Код примитивный. (За оптимальностью и быстродействием не гнался, ядрёные оптимизаторы пусть пишут свой код, или правят руками)

&НаСервере
Процедура УдалитьПараметр(ТекстXML, ИмяПараметра)
	
	НачПоз = 1;
	Пока НачПоз > 0 Цикл
		// найдем позиции начала и конца
		НачПоз = СтрНайти(ТекстXML, ИмяПараметра);
		Если НачПоз > 0 Тогда
			КонПоз = СтрНайти(ТекстXML, """",, НачПоз, 2) + 1; // кон поз это вторая кавыка
			Если Сред(ТекстXML, КонПоз, 1) = " " Тогда
				КонПоз = КонПоз + 1; // может быть побел в конце. буит мешаться.
			КонецЕсли;
			ЗаменяемыйТекст = Сред(ТекстXML, НачПоз, КонПоз - НачПоз); // возможно такая конструкция встречается несколько раз.
			ТекстXML = СтрЗаменить(ТекстXML, ЗаменяемыйТекст, "");
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ОткоректячитьXML()
	
	ИмяФайлоИсходное = "ТипаНужноУказатьИмяФайло";
	ИмяФайлоИсправленное = "ТипаНужноУказатьИмяФайло";
	
	// прочитаем
	ТекстДок = Новый ТекстовыйДокумент;
	ТекстДок.Прочитать(ИмяФайлоИсходное, "UTF-8");
	ТекстXML = ТекстДок.ПолучитьТекст();
	
	// заменим фикседы
	УдалитьПараметр(ТекстXML, "fixed=");
	// заменим юзы
	УдалитьПараметр(ТекстXML, "use=");
	
	// запишем
	ТекстДок.УстановитьТекст(ТекстXML);
	ТекстДок.Записать(ИмяФайлоИсправленное, "UTF-8");
	
КонецПроцедуры
Показать


после этого исправленная схемка успешно подгрузилась и сохранилась без ошибок.
akR00b; Bene_Valete; +2 Ответить
3. Bene_Valete 188 11.01.21 11:49 Сейчас в теме
(2) Дополню что данная проблема не проявляется на более свежей платформе, пакеты импортируются безо всяких исправлений
4. Darklight 32 01.02.24 11:35 Сейчас в теме
Нашёл эту тему по фразе "При наследовании ограничением, определение новых свойств запрещено". Так как больше нигде я обсуждение данной проблемы не нашёл (на момент комментария), то напишу тут решение:

Ошибка связана с попыткой повторного определения свойства при наследовании типов XDTO. Но на моей платформе (8.3.23.1912) ошибка неправильно ссылается на имена свойств, добавленных в наследнике - просто перечисляет все свойства, но идущих сразу за первым дублирующимся свойством - которое как раз-таки и не выводит даже

Решение: взять имя свойства из самой верхней ошибки, найти его в XDTO типе-потомке и проверить свойство НАД НИМ - скорее всего оно как раз дублируется в потомке по какому-то родительскому типу!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот