|
|
Ошибка XMLСтрока(ТипЗнч(ПВХ))
IVT_2009, Zamestas, mszsuz, Garykom, Nedomolkov_Ivan, Fragster, ДемьянТ, Spyke, Timon1405, Greeen, RomanYS, lxndr, MWWRuza, Fedor-1971, Доминошник, viraboy, DrLekter, ThreeTONE, Бычье сердце, X Leshiy, Lama12, Злопчинский, Хряк, okmail, Климов Сергей, torgm, mikecool, Гипервизор, kubik_live, ОператорПК, denk32, paramedic, laeg, Галахад, Волшебник, Vstur
| ☑ |
|
0
Garykom
гуру
05.08.26
✎
16:57
|
Для цели отладки запросов через стандартную консоль надо выгружать в формат xml
И там засада
&НаСервере
Процедура Команда1НаСервере()
Значение = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПартииПроизводства;
Тип = ТипЗнч(Значение);
СтрокаXML = XMLСтрока(Тип);
Сообщить(СтрокаXML);
КонецПроцедуры
Как лучше такое обойти?
|
|
|
1
Garykom
гуру
05.08.26
✎
17:01
|
1. Как определить что будет засада?
2. Как лучше такое выгрузить (сохранить в XML) и потом восстановить из XML?
|
|
|
2
Fragster
гуру
05.08.26
✎
17:08
|
сериализаторXDTO же
|
|
|
3
Fragster
гуру
05.08.26
✎
17:09
|
с назначением типа "явное"
|
|
|
4
Fragster
гуру
05.08.26
✎
17:09
|
Функция ДесериализоватьДанные(Знач Данные) Экспорт
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(Данные);
Возврат СериализаторXDTO.ПрочитатьXML(Чтение);
КонецФункции
Функция СериализоватьДанные(Знач Данные) Экспорт
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(Запись, Данные, НазначениеТипаXML.Явное);
Возврат Запись.Закрыть()
КонецФункции
|
|
|
5
Fragster
гуру
05.08.26
✎
17:10
|
у меня такие вот парные функции лежат
|
|
|
6
denk32
05.08.26
✎
17:15
|
(0) Может так?
Значение = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии;
Тип = ТипЗнч(Значение);
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Тип);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
Результат = ЗаписьXML.Закрыть();
Сообщить(Результат);
|
|
|
7
Garykom
гуру
05.08.26
✎
17:17
|
(2)(4) Предлагаешь не проверять а все прогонять через СериализаторXDTO ?
|
|
|
8
Fragster
гуру
05.08.26
✎
17:18
|
(7) ну хочешь, проверяй на типы, указанные в СП
|
|
|
9
Garykom
гуру
05.08.26
✎
17:30
|
Хотелось чтобы типовая консоль запросов с ИТС понимала
Править ее придется :(
|
|
|
10
Garykom
гуру
05.08.26
✎
17:38
|
Просто очень удобно мелкое расширение юзать или в конфу встроить
Взял https://infostart.ru/1c/articles/1054984/
Только допилил слегка, чтобы не обязательно на диск сохранял но и выводил содержимое в строку при отладке
Копируешь, вставляешь в файл .q1c
Типовой консолью с ИТС открываешь
https://its.1c.ru/db/metod8dev/content/4500/hdoc
И не надо монструозных ИР с толстым, чисто УФ
|
|
|
11
Fragster
гуру
05.08.26
✎
17:53
|
(9) собственно, вся процедура заменяется на СериализаторXDTO.ЗаписатьXML(Запись, Данные, НазначениеТипаXML.Явное);
|
|
|
12
Fragster
гуру
05.08.26
✎
17:53
|
вернее на ПрочитатьXML
|
|
|
13
Fragster
гуру
05.08.26
✎
17:54
|
туды же не только примитивные типы можно пихать, а прям вот таблицу значений целиком, соответствия всякие и прочие структуры
|
|
14
Nedomolkov_
Ivan
05.08.26
✎
18:14
|
(1) По первому вопросу: XMLСтрока умеет только значения простых XML-типов, а Тип к ним не относится — отсюда и падение, причём заранее видно по синтакс-помощнику, у каких типов есть XML-представление.
Сам тип сериализуется отдельной парой глобальных функций, без прогона значения через сериализатор:
ТипXML = XMLТип(ТипЗнч(Значение)); // ИмяТипа + URIПространстваИмен
Тип = ТипЗначенияXML(ТипXML);
В файл ложатся две строки, на чтении тип собирается обратно. А для самих данных — да, СериализаторXDTO с явным назначением типа, как в (4).
|
|