![]() |
![]() |
|
XDTO-пакет, вложенный элемент | ☑ | ||
---|---|---|---|---|
0
marinelli
16.08.12
✎
14:07
|
Здравствуйте! Очень нужна помощь...
Пожалуйста, подскажите, где почитать. Есть XDTO-пакет. Не понимаю, как обратиться к подчиненным объектам. Надежда только на форум) заранее премногоблагодарна! |
|||
1
Balonbl4
16.08.12
✎
14:20
|
Просто по имени и обращаешься.
Есть например пакет TestPacket состоящий из TestPacketID (тип строка) и TestPAcketArray тоже строка, но уже массив. К id обращаешься TestPacket.TestPacketID А к массиву, как и к любой другой коллекции. |
|||
2
neomarat
16.08.12
✎
14:21
|
||||
3
neomarat
16.08.12
✎
14:25
|
||||
4
marinelli
16.08.12
✎
14:35
|
Спасибо, ссылки эти я изучила, всё равно ничего не поняла))
покажу на примере помимо понимания у меня ещё и с изложением ситуации проблемы))) http://s001.radikal.ru/i194/1208/dd/7a5f5ca6565d.jpg например, есть такой xdto-пакет. Пока я понимаю только, как обратиться к объектам "Файл", "ИдФайл" и пр. А как обратиться к "СвУчДокОбор" и далее вниз по иерархии - не понимаю ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("c:\1.xml"); ЗаписьXML.ЗаписатьОбъявлениеXML(); // <?xml version="1.0" encoding="UTF-8"?> Тип_Док = ФабрикаXDTO.Тип("SFAKT", "Файл"); Док_XDTO = ФабрикаXDTO.Создать(Тип_Док); Очень дико сорри за многобукв и женскую глупость(( |
|||
5
Balonbl4
16.08.12
✎
14:50
|
(4) Через точку и обращайся, как к обычному объекту
|
|||
6
marinelli
16.08.12
✎
14:55
|
Тут всё ок:
Док_XDTO.ВерсПрог = "1С:Предприятие 8"; Как правильно обратиться в данном случае? Значение не является значением объектного типа (ИдОтпр) Док_XDTO.СвУчДокОбор.ИдОтпр = "тест"; |
|||
7
Balonbl4
16.08.12
✎
15:11
|
(6) сдается мне что СвУчДокОбор - это массив
|
|||
8
marinelli
16.08.12
✎
15:16
|
а как к нему обратиться?..
|
|||
9
Balonbl4
16.08.12
✎
15:19
|
(8) Если это действительно массив, то так:
Для Каждого СтрокаХМЛ Из Док_XDTO.СвУчДокОбор Цикл СтрокаХМЛ.ИдОтпр = "тест"; КонецЦикла; |
|||
10
Serginio1
16.08.12
✎
15:23
|
(8)
Типа такого ФабрикаXDTO=Прокси.ФабрикаXDTO; ТипТаблица = ФабрикаXDTO.Тип(ПространствоИмен, "Таблица"); Таблица = ФабрикаXDTO.Создать(ТипТаблица); ТипСтрокаТаблицы = ФабрикаXDTO.Тип(ПространствоИмен,"СтрокаТаблицы"); СтрокаТаблицы = ФабрикаXDTO.Создать(ТипСтрокаТаблицы ); ОтветТаблицаЦен.СвойствоСписок.Добавить(СтрокаТаблицыЦен); |
|||
11
marinelli
16.08.12
✎
15:33
|
видимо не массив, потому как не получается))
Пробую сделать так: Тип_СвУчДокОбор = ФабрикаXDTO.Тип("SFAKT", "СвУчДокОбор"); СвУчДокОбор_XDTO = ФабрикаXDTO.Создать(Тип_СвУчДокОбор); Ошибка при вызове метода контекста (Создать) СвУчДокОбор_XDTO = ФабрикаXDTO.Создать(Тип_СвУчДокОбор); по причине: Несоответствие типов (параметр номер '1') |
|||
12
marinelli
16.08.12
✎
15:34
|
Тип_СвУчДокОбор - Неопределено
|
|||
13
Serginio1
16.08.12
✎
15:34
|
А "Файл.СвУчДокОбор"
|
|||
14
Serginio1
16.08.12
✎
15:35
|
Вообще посмотри в отладчике пакет фабрики
|
|||
15
marinelli
16.08.12
✎
15:40
|
||||
16
marinelli
16.08.12
✎
15:41
|
||||
17
Serginio1
16.08.12
✎
15:45
|
Посмотри ФабрикаXDTO.Пакеты или что типа этого. Начни с ФабрикаXDTO
|
|||
18
Balonbl4
16.08.12
✎
15:47
|
ТС пора бы уже выкладывать фотку в профиль.
|
|||
19
Serginio1
16.08.12
✎
15:47
|
Ты кстати покажи типы которые справа
|
|||
20
Serginio1
16.08.12
✎
15:49
|
Покажи тип СвУчДокОбор
|
|||
21
marinelli
16.08.12
✎
15:49
|
про ФабрикаXDTO.Пакеты в синтакс-помощнике ничего непонятно(
фотки хоть все выложу, распечатаю и по почте всем "в этом чате" отправлю, если разобраться поможете)) |
|||
22
Serginio1
16.08.12
✎
15:53
|
Да не в синтаксис а в Отладчике.
У тебя обыкновенная структура. У каждого реквизита структуры есть свой тип. Вот по нему и создавай не не по имени реквизита |
|||
23
Serginio1
16.08.12
✎
15:56
|
(22) Да странная структура. Нужно ииследовать пакет. Не сталкивался с таким. Откуда накопала такую схему?
|
|||
24
Serginio1
16.08.12
✎
16:01
|
Посмотри в отладчике ФабрикаXDTO.Тип("SFAKT", "Файл").Свойства
|
|||
25
marinelli
16.08.12
✎
16:02
|
ееее! спасибо огромное!
ФабрикаXDTO.Создать(Тип_Док.Свойства[3].Тип) схема из типовой бухгалтерии 2.0 |
|||
26
Serginio1
16.08.12
✎
17:06
|
(25) Да уж. А какой строковый тип там указан? Вообще номальные люди отдельно тип создают и реквизиту присваивают тип.
|
|||
27
marinelli
16.08.12
✎
17:25
|
а тип никакой не указан))
|
|||
28
Serginio1
16.08.12
✎
17:31
|
(27) А что там показывает Тип_Док.Свойства[3].Тип.Имя или локальноеИмя
|
|||
29
marinelli
16.08.12
✎
18:03
|
Имя = ""
ЛокальноеИмя - имя объекта не обнаружено |
|||
30
Serginio1
16.08.12
✎
18:05
|
(29) Ясно. Спасибо.
|
|||
31
marinelli
17.08.12
✎
15:50
|
Вам спасибо!
|
|||
32
Serginio1
20.08.12
✎
12:24
|
Посмотрел УТ там есть такая функция
Функция ПолучитьТипОбъектаCML(Тип, ВерсияСхемы) Экспорт МассивПути = СтрРазделить(Тип, "."); ПервыйЭлемент = МассивПути[0]; Если Лев(ПервыйЭлемент,1) = "{" И Прав(ПервыйЭлемент,1) = "}" Тогда ИмяПакета = Сред(ПервыйЭлемент, 2, СтрДлина(ПервыйЭлемент) - 2); Коллекция = ФабрикаXDTO.Пакеты.Получить(ИмяПакета).КорневыеСвойства; ИначеЕсли ВерсияСхемы <> "4.02" Тогда ТипОбъекта = ФабрикаXDTO.Тип(ВерсияСхемы, ПервыйЭлемент); Коллекция = ТипОбъекта.Свойства; Иначе ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd", ПервыйЭлемент); Коллекция = ТипОбъекта.Свойства; КонецЕсли; МассивПути.Удалить(0); Пока МассивПути.Количество() > 0 Цикл Если Коллекция = Неопределено Тогда Возврат Неопределено; КонецЕсли; Свойство = Коллекция.Получить(МассивПути[0]); Если Свойство = Неопределено Тогда Возврат Неопределено; КонецЕсли; ТипОбъекта = Свойство.Тип; МассивПути.Удалить(0); Попытка Коллекция = ТипОбъекта.Свойства; Исключение Коллекция = Неопределено; КонецПопытки; КонецЦикла; Возврат ТипОбъекта; КонецФункции |
|||
33
Serginio1
20.08.12
✎
12:26
|
И вызов соответственно
ПространствоИменСхемы = "SFAKT"; СвУчДокОбор = ПолучитьОбъектТипаCML("Файл.СвУчДокОбор", ПространствоИменСхемы); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |