Имя: Пароль:
1C
1С v8
Сериализатор XDTO и набор записей регистра бухгалтерии
,
0 Fragster
 
гуру
10.10.12
14:21
Объект = СериализаторXDTO.ЗаписатьXDTO(НаборЗаписейРегистраБухгалтерии);
Набор = СериализаторXDTO.ПрочитатьXDTO(Объект);

в 8.1 не работает. для остальных объектов работает. кто-нибудь побеждал? работает ли в 8.2?
1 Maxus43
 
10.10.12
14:26
может в СП очепятка, не сериализуется набор записей РБ
2 Fragster
 
гуру
10.10.12
14:28
(1) дык сериализуется. и в XML можно записать. только в объекте XDTO почему-то ссылки на счета, измерения и субконто не разыменовываются.

он не десериализуется, вот в чем дело.
3 Maxus43
 
10.10.12
14:29
не читается тока?
4 Fragster
 
гуру
10.10.12
14:30
(3) ага
5 Fragster
 
гуру
10.10.12
14:30
проверьте в 8.2, кому не в падлу
6 Maxus43
 
10.10.12
14:32
Объект - правильный тама?
7 Fragster
 
гуру
10.10.12
14:32
(6) ну да, объектXDTO
8 Maxus43
 
10.10.12
14:33
Объект.Тип - чо там?
9 Fragster
 
гуру
10.10.12
14:39
URIПространстваИмен    "http://v8.1c.ru/8.1/data/enterprise/current-config"    Строка
БазовыйТип    {http://www.w3.org/2001/XMLSchema}anyType    ТипОбъектаXDTO
Имя    "AccountingRegisterRecordSet.Хозрасчетный"    Строка
10 pumbaEO
 
10.10.12
14:44
У меня даже не записывает, пустое значение валюты типа не должно быть.
Проверить на данных не могу.
11 Fragster
 
гуру
10.10.12
14:59
в общем если вид субконто сериализовать, то получается штука с базовым типом AnyRef, а если набор записей - то базовый тип у вида субконто - AnyType... при этом тип - один и тот же.
12 Fragster
 
гуру
10.10.12
15:02
(11) а, не
13 Fragster
 
гуру
10.10.12
15:33
эмпирически выяснилось, что оно работает, только если у счета 1 субконто.

прошу проверить в 8.2, код для проверки:



Функция ПолучитьОбъектНабора(Набор)
   Запрос = Новый Запрос;
   ТекстЗапроса =
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    Таблица.Регистратор
   |ИЗ
   |    &ИмяТаблицы КАК Таблица";
   
   Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ИмяТаблицы", Набор.Метаданные().ПолноеИмя());
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   Выборка.Следующий();
   Набор.Отбор.Найти("Регистратор").Установить(Выборка.Регистратор);
   Набор.Прочитать();
   Возврат СериализаторXDTO.ЗаписатьXDTO(Набор);
КонецФункции

Процедура СообщитьОписаниеОшибки(Информация, Отступ = "", глубина = 10)
   Сообщить(Отступ + Информация.Описание);
   Если Информация.Причина <> Неопределено И Глубина > 0 Тогда
       СообщитьОписаниеОшибки(Информация.Причина, Отступ + Символы.Таб, Глубина - 1);
   КонецЕсли;
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Набор = РегистрыБухгалтерии.РегистрБухгалтерии.СоздатьНаборЗаписей();
   Объект = ПолучитьОбъектНабора(Набор);
   Сообщить(Набор.Количество());
   А = 1;
   Попытка
       Набор3 = СериализаторXDTO.ПрочитатьXDTO(Объект);
   Исключение
       СообщитьОписаниеОшибки(ИнформацияОбОшибке());
   КонецПопытки;
   
   
КонецПроцедуры


14 Fragster
 
гуру
10.10.12
15:39
ну и как побороть в 8.1 если кто знает - тоже буду благодарен
15 acsent
 
10.10.12
15:43
а если ПрочитатьXML
16 Fragster
 
гуру
10.10.12
15:44
(15) Если использовать встроенный объект "сериализаторXDTO", то у него не прокатывает и через ЗаписатьXML...ПрочитатьXML
17 acsent
 
10.10.12
15:45
у тебя веб сервис или что?
18 Fragster
 
гуру
10.10.12
15:45
(17) типа того
19 Fragster
 
гуру
10.10.12
15:52
и на 8.3 тоже проверьте, плиз, кому не впадлу
20 hhhh
 
10.10.12
15:53
(18) вроде субконт нет в регистре бухгалтерии. Там они в отдельной таблице существуют: ДвиженияССубконто.
21 Fragster
 
гуру
10.10.12
15:54
(20) запрос просто чтобы получить какой-то регистратор, у которого есть движения. у набора записей субконто есть.
22 Fragster
 
гуру
10.10.12
16:00
что, всем впадлу проверить, чтоли?
23 pumbaEO
 
10.10.12
16:02
(22) у меня только типовые конфы, а там ошибка при выгрузке.
24 hhhh
 
10.10.12
16:07
(22)

{Форма.Форма.Форма(17)}: Ошибка при вызове метода контекста (ЗаписатьXDTO)
   Возврат СериализаторXDTO.ЗаписатьXDTO(Набор);
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ВалютаDr':
   форма: Элемент
   имя: {http://v8.1c.ru/8.1/data/enterprise/current-config}ВалютаDr
по причине:
Ошибка отображения типов:
Отображение лексического значения '' в значение типа 'СправочникСсылка.Валюты'
по причине:
25 hhhh
 
10.10.12
16:09
(24)+

Ошибка отображения типов:
Отображение лексического значения '' в значение типа 'СправочникСсылка.Валюты'
по причине:
Ошибка преобразования данных XML
26 pumbaEO
 
10.10.12
16:10
(25) УПП?
27 hhhh
 
10.10.12
16:11
БП 2.0
28 Fragster
 
гуру
10.10.12
17:27
хм... они еще больше поломали в 8.2, чтоли?