Имя: Пароль:
1C
1С v8
Ошибка XMLСтрока(ТипЗнч(ПВХ))
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).
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn