Имя: Пароль:
1C
1С v8
Обмен. ВидДвижения 1с81
,
0 masenshi
 
02.09.11
12:44
Значит написал обмен между разными конфигурациями. Все работает хорошо, но упустил один момент. В регистрах накопления указать вид движения. Думал ерунда вопрос но не тут то было. Выгрузка идет, а вот загрузка пишет:
Ошибка при вызове метода контекста (ПрочитатьXML): Значения данного типа не могут быть представлены в XML

вот фрагмент файла обмена

- <РегистрНакопленияНаборЗаписей.БалансКонтрагента.Вручную>
- <Filter>
 <Регистратор xmlns="" xsi:type="DocumentRef.РазрешениеМест">95ae3f6f-867c-11e0-bb74-002618db7707</Регистратор>
 </Filter>
- <Records>
- <Record>
 <Период xsi:type="xsd:dateTime">2011-05-25T09:12:35</Период>
 <Регистратор xmlns="" xsi:type="DocumentRef.РазрешениеМест">95ae3f6f-867c-11e0-bb74-002618db7707</Регистратор>
 <ВидДвижения xsi:type="v8:AccumulationRecordType">Expense</ВидДвижения>
 <Контрагент xmlns="" xsi:type="CatalogRef.Контрагенты">2e92bfb2-b9d1-11dd-9ae5-001966796491</Контрагент>
 <Сумма xsi:type="xsd:decimal">123</Сумма>
 </Record>
- <Record>

Проблема 100% в этой строке
<ВидДвижения xsi:type="v8:AccumulationRecordType">Expense</ВидДвижения>

что ему тут не нравится? Пробовал даже "Expense" поменять на "Расход".

НазначениеТипаXML Явное как видно
1 masenshi
 
02.09.11
12:48
Если конкретнее то при загрузке не может прочитать эту строчку

ПрочитатьXML(ЧтениеXML);
2 hhhh
 
02.09.11
13:28
а почему v8: ??
3 masenshi
 
05.09.11
03:05
(2) НазначениеТипаXML.Явное. А что не нравится?
4 masenshi
 
05.09.11
09:28
(2) ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");

если будет
<ВидДвижения xmlns:v8="http://v8.1c.ru/data" xsi:type="v8:AccumulationRecordType">Expense</ВидДвижения>

то результат тот же
5 hhhh
 
05.09.11
09:31
(4) ну просто если пишем

xsi:type="CatalogRef.Контрагенты" без v8, а в другом случае почему-то с v8.
6 masenshi
 
05.09.11
09:40
(5) ну так это 1с со своими пространствами имен

все же не могу понять почему пишет XML но не может его прочитать. Проблема все в этой строчке
7 masenshi
 
05.09.11
09:41
(5) видимо это фитча 1С. Нигде наверное больше нет ВидДвижения.
8 masenshi
 
05.09.11
09:45
можно конечно попробовать выпендриться и писать туда ложь или истину и читать соответсвенно. Но это как-то совсем нестандартно, да и выглядеть будет не очень. Должно как то штатно работать.
9 masenshi
 
05.09.11
10:06
(8) только что проверил. такой вариант работает. Но хотелось бы выяснить как все-таки обменивать видДвижения
10 masenshi
 
06.09.11
05:30
<Файл xsi:type="v8:ValueStorage">БЛАБЛАБЛАБЛАБЛАБЛАБЛАAAAAAAAAAAAAAAAA==</Файл>

Хранилище значения тоже не обменивается и здесь булеаном не выкрутиться. Везде где-стоит v8 спотыкается при чтении (загрузке) с ошибкой

Ошибка при вызове метода контекста (ПрочитатьXML): Значения данного типа не могут быть представлены в XML

Помогите разобраться с ошибкой. Что тут за хитрость скрывается
11 skunk
 
06.09.11
05:53
хмлФайл.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/");
хмлФайл.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
хмлФайл.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
хмлФайл.ЗаписатьСоответствиеПространстваИмен("v8",  "http://v8.1c.ru/data");
12 masenshi
 
06.09.11
06:56
(11) такой фрагмент получился но ошибка осталась та же

- <v8msg:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data" xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/">
- <V8Exch:СправочникОбъект.ХранилищеФайлов.Вручную>
 <Ссылка xmlns="" xsi:type="CatalogRef.ХранилищеФайлов">3cd94509-6ee4-11df-9b3b-002618d67f5f</Ссылка>
 <Код xsi:type="xsd:string">0000002764</Код>
 <Файл xsi:type="v8:ValueStorage">БЛАБЛАAAAAAAAA==</Файл>
 </V8Exch:СправочникОбъект.ХранилищеФайлов.Вручную>

может дело в другом? почему с типовых обменах все четко проходит и без

хмлФайл.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/");

хмлФайл.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
?
13 skunk
 
06.09.11
06:58
а это что?
<РегистрНакопленияНаборЗаписей.БалансКонтрагента.Вручную>
</V8Exch:СправочникОбъект.ХранилищеФайлов.Вручную>
14 skunk
 
06.09.11
06:59
как вообще объект выгружаешь
15 masenshi
 
06.09.11
07:07
с регистром была проблема в ВидДвижения. Но пока ее решил заменой вида на буль.

Проблема повторилась с реквизитом ХЗ в справочнике.

(14) сделал как ты подсказал в (11) вроде ХЗ обменялся. Тока теперь стал ругаться на реквизит на который ранее не ругалось. реквизит с типом СправочникСсылка.

так вот так должно было получиться?
<V8Exch:СправочникОбъект.ХранилищеФайлов.Вручную>
16 skunk
 
06.09.11
07:33
вечером давай перетрем ... буду дома что-то около 20 по москве
17 masenshi
 
06.09.11
08:33
(16) с ХЗ разобрался.Все там и так работает. Я ошибся в другом. xsi:type="v8:ValueStorage нормально читает и без (11)

А вот <ВидДвижения xsi:type="v8:AccumulationRecordType">Expense</ВидДвижения> по прежнему никак не хочет читать. Замена на булево пока временный вариант.
18 Defender aka LINN
 
06.09.11
08:36
А что, КД - не айс?
19 masenshi
 
06.09.11
08:41
(18) а что за КД?
20 Defender aka LINN
 
06.09.11
08:44
(19) Конвертация данных. Она, какбе, для того и придумана.
21 masenshi
 
06.09.11
08:45
(20) ну а примерчик?
22 masenshi
 
06.09.11
08:48
НС = ПрочитанныйОбъект.Добавить();

Пока ЧтениеXML.КоличествоАтрибутов() > 0 Цикл
//НС[ЧтениеXML.Имя] = ПрочитатьXML(ЧтениеXML);
                       ИмяРеквизита = ЧтениеXML.Имя;

Если ИмяРеквизита = "ВидДвижения" Тогда
                           МойВидДвижения = ?(ПрочитатьXML(ЧтениеXML) = Истина,ВидДвиженияНакопления.Приход,ВидДвиженияНакопления.Расход);
                           НС[ИмяРеквизита] = МойВидДвижения;

Иначе

НС[ЧтениеXML.Имя] = ПрочитатьXML(ЧтениеXML);

КонецЕсли;
КонецЦикла;

пришлось вот так вот извратиться. В идеале в цикле должна быть только одна закомментированная строчка. Преобразование ВидаДвижения к булеву привело к такому адскому условию
23 skunk
 
06.09.11
08:51
все проще делалось-бы
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн