Обмен ›
Адаптация XML - схем ГИС ЖКХ в XDTO пакетах ›
#2
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");
КонецПроцедуры
|
после этого исправленная схемка успешно подгрузилась и сохранилась без ошибок.