Имя: Пароль:
1C
1С v8
работа с метаданными
0 Black Dragon
 
27.08.13
16:56
Доброго дня!

есть такой код:

                        Для Каждого ТабЧасть Из МетаДок.ТабличныеЧасти Цикл
                            Запись.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");
                            Запись.ЗаписатьАтрибут("Имя",Строка(ТабЧасть.Имя));
                            Для Каждого Реквизит Из ТабЧасть.Реквизиты Цикл
                                Запись.ЗаписатьНачалоЭлемента("Реквизит");
                                    Запись.ЗаписатьАтрибут("Имя",Строка(Реквизит.Имя));
                                    Запись.ЗаписатьАтрибут("Тип",Строка(Реквизит.Тип));
                                    Запись.ЗаписатьАтрибут("Значение",Строка(ТабЧасть[Реквизит.Имя]));
                            КонецЦикла;
                            Запись.ЗаписатьКонецЭлемента();    
                        КонецЦикла;

как получить в атрибуте "Значение" само значение реквизита таб части?
1 Maxus43
 
27.08.13
16:57
не проще сериализовать и записать в xml весь док сразу?
2 Михаил Козлов
 
27.08.13
17:00
Что-то не понял, насчет значения реквизита: откуда Вы собираетесь его получать? Цикл по реквизитам, а не по строкам ТЧ.
(1)+
3 Black Dragon
 
27.08.13
17:02
точно! Семен Семеныч! чего-то туплю)
4 Black Dragon
 
27.08.13
17:09
Премного благодарен!
5 Black Dragon
 
28.08.13
10:42
Однако есть ньюансы! получаю xml с выгрузкой доков

    <Документы>
        <DocumentObject.ЗарплатаКВыплатеОрганизаций>
            <Ref>1d52d517-b4a5-11e2-82b2-001e6712e121</Ref>
            <DeletionMark>false</DeletionMark>
            <Date>2013-05-04T14:57:01</Date>
            <Number>ЦФС00000049</Number>
            <Posted>true</Posted>
            <Организация>2f268184-3f74-11e2-9ac4-001e6712e121</Организация>
            <ПериодРегистрации>2013-04-01T00:00:00</ПериодРегистрации>
            <СпособВыплаты>ЧерезКассу</СпособВыплаты>
            <Ответственный>1140641b-3ed0-11e2-9ac4-001e6712e121</Ответственный>
            <Комментарий/>
            <ДнейНеВыплаты>0</ДнейНеВыплаты>
            <КраткийСоставДокумента>Бурдович Е.В., Ванюшенков О.Ю., Гарипова Е.С., Селицкий А.А.</КраткийСоставДокумента>
            <ХарактерВыплаты>Зарплата</ХарактерВыплаты>
            <ПодразделениеОрганизации>00000000-0000-0000-0000-000000000000</ПодразделениеОрганизации>
            <ДокументОснование xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:nil="true"/>
            <ДатаНачала>0001-01-01T00:00:00</ДатаНачала>
            <ДатаОкончания>0001-01-01T00:00:00</ДатаОкончания>
            <Банк>00000000-0000-0000-0000-000000000000</Банк>
            <ПроцентВыплаты>100</ПроцентВыплаты>
            <ПредварительныйУчетУдержаний>false</ПредварительныйУчетУдержаний>
            <Округление/>
            <СуммаДокумента>18727.15</СуммаДокумента>
            <ДанныеПрошлойВерсии>false</ДанныеПрошлойВерсии>
            <Зарплата>
                <Row>
                    <Физлицо>ad58d764-3d38-11e2-9ac4-001e6712e121</Физлицо>
                    <Сумма>5999.4</Сумма>
                    <ВыплаченностьЗарплаты>Выплачено</ВыплаченностьЗарплаты>
                    <КомпенсацияЗаЗадержкуЗарплаты>0</КомпенсацияЗаЗадержкуЗарплаты>
                    <Авторасчет>true</Авторасчет>
                    <Начислено>5999.4</Начислено>
                    <Удержано>0</Удержано>
                </Row>
                <Row>
                    <Физлицо>147f20a8-b0c4-11e2-82b2-001e6712e121</Физлицо>
                    <Сумма>726.95</Сумма>
                    <ВыплаченностьЗарплаты>Выплачено</ВыплаченностьЗарплаты>
                    <КомпенсацияЗаЗадержкуЗарплаты>0</КомпенсацияЗаЗадержкуЗарплаты>
                    <Авторасчет>true</Авторасчет>
                    <Начислено>726.95</Начислено>
                    <Удержано>0</Удержано>
                </Row>
                <Row>
                    <Физлицо>d2a43e45-8a0d-11e2-9d99-001e6712e121</Физлицо>
                    <Сумма>6000.4</Сумма>
                    <ВыплаченностьЗарплаты>Выплачено</ВыплаченностьЗарплаты>
                    <КомпенсацияЗаЗадержкуЗарплаты>0</КомпенсацияЗаЗадержкуЗарплаты>
                    <Авторасчет>true</Авторасчет>
                    <Начислено>6000.4</Начислено>
                    <Удержано>0</Удержано>
                </Row>
                <Row>
                    <Физлицо>b58c45d1-70eb-11e2-82d8-001e6712e121</Физлицо>
                    <Сумма>6000.4</Сумма>
                    <ВыплаченностьЗарплаты>Выплачено</ВыплаченностьЗарплаты>
                    <КомпенсацияЗаЗадержкуЗарплаты>0</КомпенсацияЗаЗадержкуЗарплаты>
                    <Авторасчет>true</Авторасчет>
                    <Начислено>6000.4</Начислено>
                    <Удержано>0</Удержано>
                </Row>
            </Зарплата>
        </DocumentObject.ЗарплатаКВыплатеОрганизаций>

но ведь здесь нет ни типов данных реквизитов ни их наименований как в конфигураторе)

суть в том, что нужна полная картина взаимосвязей между объектами
6 Black Dragon
 
28.08.13
10:52
хотел сделать универсальный механизм - по реквизитам и так все понятно, однако по табличной части есть вопросы - если у дока несколько таб частей, имена которых нам заранее не известны - тогда как? по метаданным могу получить список таб частей, как затем сделать перебор строк таб частей?
7 Rie
 
28.08.13
10:55
(6) Циклом по таб. части.
8 Rie
 
28.08.13
10:56
+(7) Только почему "строк" - реквизитов (если метаданных)?

Или имеется в виду - получить таб. часть объекта и её строки перебрать?

Для каждого СтрокаТЧ из Док[ИмяТабЧасти] Цикл
9 Maxus43
 
28.08.13
11:01
типы и т.д. у xml в xmlschema указывается
10 Black Dragon
 
28.08.13
11:23
я предполагаю такую систему:
<Документ "Имя"=... "Номер"=.... "Дата"=...>
<Реквизиты>
<Реквизит "Имя"=... "Тип"=... "Значение"=...>
.....
</Реквизиты>
<ТабличныеЧасти>
<ТабличнаяЧасть "Имя"=...>
<СтрокаТЧ "НомерСтроки"=...>
<РевизитТЧ "Имя"=... "Тип"=... "Значение"=...>
...
</СтрокаТЧ>
</ТабличнаяЧасть>
....
</ТабличныеЧасти>
</Документ>

как-то так
11 Serginio1
 
28.08.13
11:35
Или создать свою схему по метаданным
v8: XSD схема программно с нуля.
Независимо от того, куда вы едете — это в гору и против ветра!