|
Не могу понять - "Данный объект может быть сериализован в/из XML." | ☑ | ||
---|---|---|---|---|
0
sergei123654
24.11.11
✎
07:32
|
Доброго времени суток.
Путаюсь добавить/удалить в тело макета компоновки данных макет. Добавлять/удалять в тело макета комновки нужно свойство "Макет" В СП пишут что "Макет" - Сервер, толстый клиент, внешнее соединение. Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data-composition-system/composition-template}. Имя типа XDTO: DataCompositionPartTemplate Но как с этим работать? Есть ли у вас примеры работы с такими объектами? Подскажите кто сталкивался с подобными задачами. |
|||
1
sergei123654
24.11.11
✎
08:28
|
ап
|
|||
2
andrewks
24.11.11
✎
08:35
|
что именно тебе не понятно? что такое сериализация? или как её сделать?
|
|||
3
aleks-id
24.11.11
✎
08:36
|
(2) видимо что с ней потом делать
|
|||
4
sergei123654
24.11.11
✎
08:40
|
(2) непонимаю для чего она...
Это надо мой добавляемый макет как то в XML сохранить а потом от туда подгружать его? в xml вообще чайник я.. |
|||
5
sergei123654
24.11.11
✎
08:41
|
(2) или как её сделать )
|
|||
6
sergei123654
24.11.11
✎
08:58
|
пишу так:
МакетКомпановки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровкиКомпоновки); СвойМакет = МакетКомпановки.Макеты.Добавить(); СвойМакет.Имя = "МакетОтбора"; СвойМакет.Макет = Новый МакетОбластиКомпоновкиДанных; МакетОбластиСвойМакет = СвойМакет.Макет.Добавить(Тип("СтрокаТаблицыОбластиКомпоновкиДанных")); ЯчейкиМакетОбластиСвойМакет = МакетОбластиСвойМакет.Ячейки.Добавить(); ЭлементЯчейкиМакетОбластиСвойМакет = ЯчейкиМакетОбластиСвойМакет.Элементы.Добавить(Тип("ПолеОбластиКомпоновкиДанных")); ЭлементЯчейкиМакетОбластиСвойМакет.Значение = "ЖЖЖЖ"; //МакетКомпановки.Тело.Очистить(); - эта строка отрабатывает //ДобавлениеСвойМакетВТелоМакета = МакетКомпановки.Тело.Добавить(Тип("МакетОбластиМакетаКомпоновкиДанных")); а вот сдесь вот засада полная, совсем не смекаю как его черех XML закикинуть в тело. |
|||
7
sergei123654
24.11.11
✎
09:26
|
Кто нибудь знает как работать с МакетОбластиМакетаКомпоновкиДанных?
|
|||
8
sergei123654
24.11.11
✎
10:11
|
Вверх!
|
|||
9
andrewks
24.11.11
✎
10:20
|
ничо не пойму. ты работаешь в пределах одной базы - наюх тебе через XML? или мантра такая?
|
|||
10
sergei123654
24.11.11
✎
10:30
|
(9) мне нужно в тело макета добавить свой макет.
при формировании отчета СКД: .......................................... МакетКомпановки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровкиКомпоновки); МакетКомпановки.Тело.Добавить(???????????????); ................................ СП говорит что вместо ??????????????? нужно вставить МакетОбластиМакетаКомпоновкиДанных так же СП говорит что МакетОбластиМакетаКомпоновкиДанных (DataCompositionTemplateAreaTemplate) Свойства: Макет (Template) Описание: Макет макета компоновки данных. Доступность: Сервер, толстый клиент, внешнее соединение. Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data-composition-system/composition-template}. Имя типа XDTO: DataCompositionPartTemplate а вот как создать этот МакетОбластиМакетаКомпоновкиДанных??? |
|||
11
QLgKR
24.11.11
✎
14:13
|
Получаешь копию с помощью функции все ок
Функция ПолучитьКопиюОписанияМакета(ОписаниеМакета, ФормаЗаписи = Неопределено) Экспорт Если ФормаЗаписи = Неопределено Тогда ФормаЗаписи = "{http://v8.1c.ru/8.1/data-composition-system/composition-template}"; КонецЕсли; ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОписаниеМакета, "item", ФормаЗаписи); СтрокаXML = ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(СтрокаXML); Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML, ТипЗнч(ОписаниеМакета)); КонецФункции |
|||
12
sergei123654
25.11.11
✎
07:46
|
(11) круто! Спасибо.
Только вот не работает что то.. ........................................................ СвойМакет = МакетКомпановки.Макеты.Добавить(); СвойМакет.Имя = "МакетОтбора"; СвойМакет.Макет = Новый МакетОбластиКомпоновкиДанных; МакетОбластиСвойМакет = СвойМакет.Макет.Добавить(Тип("СтрокаТаблицыОбластиКомпоновкиДанных")); ЯчейкиМакетОбластиСвойМакет = МакетОбластиСвойМакет.Ячейки.Добавить(); ЭлементЯчейкиМакетОбластиСвойМакет = ЯчейкиМакетОбластиСвойМакет.Элементы.Добавить(Тип("ПолеОбластиКомпоновкиДанных")); ЭлементЯчейкиМакетОбластиСвойМакет.Значение = "ЖЖЖЖ"; МакетКомпановки.Тело.Добавить(ПолучитьКопиюОписанияМакета(СвойМакет, Неопределено)); ........................................................ &НаСервере Функция ПолучитьКопиюОписанияМакета(ОписаниеМакета, ФормаЗаписи = Неопределено) Экспорт Если ФормаЗаписи = Неопределено Тогда ФормаЗаписи = "{http://v8.1c.ru/8.1/data-composition-system/composition-template}"; КонецЕсли; ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОписаниеМакета, "item", ФормаЗаписи); СтрокаXML = ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(СтрокаXML); Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML, ТипЗнч(ОписаниеМакета)); КонецФункции выдает ошибку. {Отчет.ОборотноСальдоваяВедомость.Форма.ФормаОтчета.Форма(601)}: Ошибка при вызове метода контекста (ПрочитатьXML) Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML, ТипЗнч(ОписаниеМакета)); по причине: Ошибка при вызове метода объекта модели XDTO. Неверный параметр. непонимаю как формируется - ФормаЗаписи. |
|||
13
sergei123654
25.11.11
✎
07:47
|
+(12)в моем коде вместо:
Если ФормаЗаписи = Неопределено Тогда ФормаЗаписи = "{"http://v8.1c.ru/8.1/data-composition-system/composition-template}" target="_blank" ref="nofollow" class="extralink">http://v8.1c.ru/8.1/data-composition-system/composition-template}"; КонецЕсли; написано: Если ФормаЗаписи = Неопределено Тогда ФормаЗаписи = "{http://v8.1c.ru/8.1/data-composition-system/composition-template}"; КонецЕсли; |
|||
14
sergei123654
25.11.11
✎
07:47
|
+(13) то есть
Если ФормаЗаписи = Неопределено Тогда ФормаЗаписи = "{http://v8.1c.ru/8.1/data-composition-system/composition-template}"; КонецЕсли; |
|||
15
sergei123654
25.11.11
✎
07:49
|
0_о
а че то теперь совсем не херва не понятно. почему копируя сюда строку /// "{http://v8.1c.ru/8.1/data-composition-system/composition-template}"; она превращается в // "{"http://v8.1c.ru/8.1/data-composition-system/composition-template}" target="_blank" ref="nofollow" class="extralink">http://v8.1c.ru/8.1/data-composition-system/composition-template}"; |
|||
16
QLgKR
25.11.11
✎
09:37
|
Вообще должно работать как-то так
МакетОбластиКомпоновки = Новый МакетОбластиКомпоновкиДанных; //заполнение свойств ... ОписаниеМакета = МакетКомпоновки.Макеты.Добавить(); ОписаниеМакета.Имя = <Указать свое имя, например Макет333>; ОписаниеМакета.Макет = МакетОбластиКомпоновки; МакетОбласти = МакетКомпоновки.Тело.Добавить(Тип("МакетОбластиМакетаКомпоновкиДанных")); МакетОбласти.Макет = <Указать свое имя, например Макет333>; |
|||
17
QLgKR
25.11.11
✎
09:39
|
+ а сериализацию можно использовать для копирования существующих макетов, например, если новый макет это копия существующего с незначительными изменениями
|
|||
18
sergei123654
25.11.11
✎
13:07
|
(16)(17) большое спасибо за помощь.
как в (16) не работает. Решил свою задачу по другому. СПАСИБО |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |