Имя: Пароль:
1C
 
anyType в XDTO. Записать набор записей
,
0 Zixxx
 
13.12.21
18:42
Пробую записать набор записей через XDTO
Но не получается установить отбор по регистратору

При попытке установить значение Value появляется ошибка
ЗаписьФильтра_Объект.Value    = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаИдентификатор));

Ошибка отображения типов:
Отображение типа 'ДокументСсылка.ПоступлениеТоваров' в тип '{http://www.w3.org/2001/XMLSchema}anySimpleType'

Делал сериализацию набора записей в XDTO, значение Value содержит ссылку на документ

    Фабрика_Тип        = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "AccumulationRegisterRecordSet.ТоварыОрганизаций");
    Фабрика_Объект    = ФабрикаXDTO.Создать(Фабрика_Тип);
    
    Запись_Тип = Фабрика_Тип.Свойства.Получить("Record").Тип;
    
    Движения = ОбернутьОбъектВМассив(ОбъектXDTO.Движения);
    
    Для Каждого СтрокаДвижения Из Движения Цикл
        
        Запись_Объект = ФабрикаXDTO.Создать(Запись_Тип);
        Запись_Объект.Active            = Истина;
        Запись_Объект.Period            = СтрокаДвижения.Период;
        Запись_Объект.RecordType        = XMLЗначение(Тип("ВидДвиженияНакопления"), СтрокаДвижения.ВидДвижения);
        Запись_Объект.Recorder            = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаДвижения.Регистратор));
        Запись_Объект.Количество        = СтрокаДвижения.Количество;
        Запись_Объект.Номенклатура        = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаДвижения.Номенклатура));
        Запись_Объект.Характеристика    = Справочники.Характеристики.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаДвижения.Характеристика));
        
        Фабрика_Объект.Record.Добавить(Запись_Объект);
        
    КонецЦикла;
    
    Фильтр_Тип        = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise", "Filter");
    Фильтр_Объект    = ФабрикаXDTO.Создать(Фильтр_Тип);

    ЗаписьФильтра_Тип            = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise", "FilterItem");
    ЗаписьФильтра_Объект        = ФабрикаXDTO.Создать(ЗаписьФильтра_Тип);
    ЗаписьФильтра_Объект.Name    = "Recorder";
    
    ЗаписьФильтра_Объект.Value    = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаИдентификатор));
    
    Фильтр_Объект.FilterItem.Добавить(ЗаписьФильтра_Объект);
    
    Фабрика_Объект.Filter = Фильтр_Объект;
    
    ЗаписываемыйОбъект = СериализаторXDTO.ПрочитатьXDTO(Фабрика_Объект);
    ЗаписываемыйОбъект.ОбменДанными.Загрузка = Истина;
    ЗаписываемыйОбъект.Записать();
1 timurhv
 
13.12.21
18:58
2 Fragster
 
гуру
13.12.21
18:59
набор записей, вроде, прям напрямую сериализуется, тупо через СериализаторXDTO.ЗаписатьXML(Набор), не?
3 Zixxx
 
13.12.21
19:05
(1) Что это значит?
4 Zixxx
 
13.12.21
19:06
(2) Мне нужно создать ОбъектXDTO из произвольных внешних данных и сериализовать его в Набор записей
5 Fragster
 
гуру
13.12.21
19:07
Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаДвижения.Регистратор));  - какая-то бессмысленная строка
6 Fragster
 
гуру
13.12.21
19:08
тип значения СтрокаДвижения.Регистратор уже должен быть ДокументСсылка
7 Fragster
 
гуру
13.12.21
19:09
(4) ничего не понятно. по коду - у тебя там что-то очень похожее на набор записей. он прекрасно сериализуется. и документОбъект прекрасно сериализуется
8 Fragster
 
гуру
13.12.21
19:10
еслти нужно получить объектXDTO, то можно воспользоваться не ЗаписатьXML, а ЗаписатьXDTO
9 Zixxx
 
13.12.21
19:14
(5) Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаДвижения.Регистратор));
что значит бессмыслица? Так получается ссылка на документ

(8) Причем тут Запись, если я Читаю?
10 timurhv
 
13.12.21
19:18
(9) Где чтение?
>При попытке установить значение Value появляется ошибка
>ЗаписьФильтра_Объект.Value    = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаИдентификатор));
11 PROGRAM1S
 
13.12.21
19:20
(0) А если так:
Ссылка = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаИдентификатор));
ТипСсылка = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "DocumentRef.ПоступлениеТоваров");
СсылкаXDTO = ФабрикаXDTO.Создать(ТипСсылка, Ссылка);
ЗаписьФильтра_Объект.Value = СсылкаXDTO;
12 Zixxx
 
13.12.21
19:22
(10) СериализаторXDTO.ПрочитатьXDTO(Фабрика_Объект)
13 Zixxx
 
13.12.21
19:24
(11) Все верно, спасибо
14 Fragster
 
гуру
14.12.21
11:11
(9) "Так получается ссылка на документ"
из ссылки на документ?