Имя: Пароль:
1C
1С v8
Глупейший вопрос про ТабДок
, , ,
0 Пират
 
22.05.13
17:01
На форме отчета есть реквизит формы. Табличный документ.
Хочу вывести копию этого табличного документа в отдельное окно.

//так работает
&НаКлиенте
Процедура ТабличныйДокументНовоеОкно(Команда)
   НовыйТаб = Новый ТабличныйДокумент;
   НовыйТаб.Показать();
КонецПроцедуры

//Так не работает!!!
&НаКлиенте
Процедура ТабличныйДокументНовоеОкно(Команда)
   НовыйТаб = РеквизитФормыЗначениеТабличныйДокумент;
   НовыйТаб.Показать();
КонецПроцедуры

Как сделать копию уже имеющегося ТабДока?
1 ale-sarin
 
22.05.13
17:04
Попробуй так:
НовыйТаб = Новый ТабличныйДокумент;
НовыйТаб.Вывести(СтарыйТаб);
НовыйТаб.Показать();
2 НЕА123
 
22.05.13
17:10
может ОФФ.
зачем "Новый ТабличныйДокумент;"?
не достаточно

СтарыйТаб.ПОказать();
?
3 Пират
 
22.05.13
17:11
Спасибо за ответы. Вот еще вариант.

&НаКлиенте
Процедура ТабличныйДокументНовоеОкно(Команда)
   ТабДок = ПолучитьКопиюРезультатаСервер(Результат);
   ТабДок.Показать();
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьКопиюРезультатаСервер(ТабДок)
   Возврат ТабДок;
КонецФункции
4 НЕА123
 
22.05.13
17:14
(3)
зачем?
в отладчике, будет
ТабДок = Результат
5 Serginio1
 
22.05.13
17:17
(3) Не гоняя на сервер данные можно


    ЗаписьХМЛ= Новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();

   ЗаписатьXML(ЗаписьХМЛ, СтарыйТаб);
   Стр=ЗаписьХМЛ.Закрыть();

   
   
   ЧтениеXML.УстановитьСтроку(стр);
   ЧтениеXML.ПерейтиКСодержимому();


   
  Таб=ПрочитатьXML(ЧтениеXML);
6 Пират
 
22.05.13
17:25
(5)
{Форма.ФормаОтчета.Форма(79)}: Ошибка при вызове метода контекста (ЗаписатьXML)
   ЗаписатьXML(ЗаписьХМЛ, Результат);
по причине:
Значения данного типа не могут быть представлены в XML
7 Пират
 
22.05.13
17:28
(4) это уже не будет ссылка на реквизит формы, а будет чистый таб док
8 Serginio1
 
22.05.13
17:29
А так?
ОбъектXDTO=СериализаторXDTO.ЗаписатьXDTO(СтарыйТаб);
    ЗаписьХМЛ= Новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();

   ФабрикаXDTO.ЗаписатьXML(ЗаписьХМЛ, ОбъектXDTO);
   Стр=ЗаписьХМЛ.Закрыть();

   
   
   ЧтениеXML.УстановитьСтроку(стр);
   ЧтениеXML.ПерейтиКСодержимому();


   ТипОбъектаXDTO=ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя);
   
  Таб=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОбъектаXDTO);
9 Пират
 
22.05.13
17:33
(8) ТИПЗНЧ(Таб) = ОбъектXDTO
10 Serginio1
 
22.05.13
17:36
Таб=СериализаторXDTO.ПрочитатьXDTO(Таб);
11 Serginio1
 
22.05.13
17:37
Можно попробовать
Таб=СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
12 Пират
 
22.05.13
17:39
(11) забил.
13 Serginio1
 
22.05.13
17:41
(12) Забил это сработал или дал ошибку?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс