Имя: Пароль:
1C
 
Выгрузить табличный документ из хранилища значений
0 marshalbratsk
 
22.12.16
11:42
Есть отчёт с выводом в поле табличного документа.
Создал справочник с реквизитами Код, Наим, Период, Отчёт(тип:ХранилищеЗначения)
Создал процедуру, которая сохраняет инфу с поля табличного документа

    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    
    Хранилище = Новый ХранилищеЗначения(ТабДок);
    
    СправочникСсылка = Справочники.bzfСохраненныеОтчётыПоДебиторскойКредиторскойЗадолженности.НайтиПоРеквизиту("Период", НачалоМесяца(ДатаОстатков));
    Если СправочникСсылка=Справочники.bzfСохраненныеОтчётыПоДебиторскойКредиторскойЗадолженности.ПустаяСсылка() Тогда            //Если элемент пустой, тогда создаём новый элемент справочника, иначе изменяем существующий
        СправочникСоздатьЭлемент = Справочники.bzfСохраненныеОтчётыПоДебиторскойКредиторскойЗадолженности.СоздатьЭлемент();
        СправочникСоздатьЭлемент.Период = НачалоМесяца(ДатаОстатков);
        СправочникСоздатьЭлемент.Отчёт = Хранилище;
        СправочникСоздатьЭлемент.Записать();
    Иначе
        СправочникСсылка = СправочникСсылка.ПолучитьОбъект();
        СправочникСсылка.Отчёт = Хранилище;
        СправочникСсылка.Записать();
    КонецЕсли;

Затем пытался создать процедуру, которая должна выводить данные из хранилища в ПолеТабличногоДокумента2 и тут у меня ерунда получается

    ТабДок = Новый ТабличныйДокумент;
    
    СправочникСсылка = Справочники.bzfСохраненныеОтчётыПоДебиторскойКредиторскойЗадолженности.НайтиПоРеквизиту("Период", НачалоМесяца(ДатаОстатков));
    Если СправочникСсылка = Справочники.bzfСохраненныеОтчётыПоДебиторскойКредиторскойЗадолженности.ПустаяСсылка() Тогда
        Сообщить("Отчёт за данный период не существует!");
    Иначе
        Хранилище = Новый ХранилищеЗначения(СправочникСсылка.Отчёт);
        ТабДок = Хранилище.Получить();
        ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ТабДок);
    КонецЕсли;

Ошибка:
{Отчет.bzfОтчетПоДебиторскойКредиторскойЗадолженности.Форма.Отчет.Форма(694)}: Ошибка при вызове метода контекста (Вывести)
        ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ТабДок);
по причине:
Несоответствие типов (параметр номер '1')
1 Cool_Profi
 
22.12.16
11:43
табдок = СправочникСсылка.Отчёт.Получиьт()
2 marshalbratsk
 
22.12.16
11:43
Выврдить данные из хранилища в ПолеТабличногоДокумента1
*фикс
3 marshalbratsk
 
22.12.16
11:45
(1) Пробовал, ругается

{Отчет.bzfОтчетПоДебиторскойКредиторскойЗадолженности.Форма.Отчет.Форма(692)}: Ошибка при вызове метода контекста (Получить)
        ТабДок = СправочникСсылка.Отчёт.Получить();
по причине:
Ошибка формата потока
4 FIXXXL
 
22.12.16
11:46
Хранилище = Новый ХранилищеЗначения(СправочникСсылка.Отчёт);
        ТабДок = Хранилище.Получить();

а тут чего ты получишь из только что созданного пустого ХЗ
вероятно - хз
5 Cool_Profi
 
22.12.16
11:47
(3) Значит, у тебя там не хранилище значения.
Отладчик возьми
6 Save_Vol
 
22.12.16
11:51
СправочникСсылка.Отчёт.Получить()
7 marshalbratsk
 
22.12.16
11:52
(5) http://s8.hostingkartinok.com/uploads/images/2016/12/0361086b1ba3aaa0f43ff04905dea20c.png
Говорит, что ХЗ

(6) Пробовал, ругается - (3)
8 Save_Vol
 
22.12.16
11:54
Проверь тогда,что вернул (6).Посмотри тип.
9 marshalbratsk
 
22.12.16
11:56
10 marshalbratsk
 
22.12.16
11:58
Может при записи в справочник где косякнул?
11 Save_Vol
 
22.12.16
12:09
(10) Сериализуй объект сохранения для помещения в хранилище.
12 marshalbratsk
 
22.12.16
12:25
(11) Не сталкивался с таким, ща изучу матчасть и попробую.
13 Мимохожий Однако
 
22.12.16
13:25
Вот примерчик записи в хранилище значений табличного документа:

ГотовыйТабличныйДокумент = Новый ХранилищеЗначения(Результат);
где Результат - табличный документ
14 Мимохожий Однако
 
22.12.16
13:25
А вот так читаю:

ТабДок=ГотовыйТабличныйДокумент.Получить();
    Если ТабДок<>Неопределено Тогда
        ТабДок.Показать();
    Иначе
        Сообщить("Готовый Отчет отсутствует в хранилище");
    КонецЕсли;
15 Мимохожий Однако
 
22.12.16
13:26
(3) Скорее всего в хранилище помещаешь не табличный документ, а нечто другое
16 h-sp
 
22.12.16
15:01
(15)    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
17 marshalbratsk
 
22.12.16
18:56
(15) Помещаю
    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    Хранилище = Новый ХранилищеЗначения(ТабДок);

Как тут можно что другое поместить?
18 marshalbratsk
 
22.12.16
19:24
получилось успешно получить xml файл из хранилища данных, ток есть какие варианты как xml перевести в таб.док?
19 Мимохожий Однако
 
22.12.16
20:55
20 marshalbratsk
 
23.12.16
04:03
Неправильно записывал файл в хранилище значений и неправильно его выгружал

Вот правильный пример, откопанный на мисте
Процедура СохранитьВХранилищеНажатие(Элемент)
    ТабДок=Новый ТабличныйДокумент;    
    ТабДок.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
    Хранилище=Новый ХранилищеЗначения(ТабДок);
    Записать();
КонецПроцедуры

Процедура ВосстановитьИзХранилищаНажатие(Элемент)
    ТабДок=Хранилище.Получить();
    Если ТабДок<>Неопределено Тогда
        ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ТабДок);
    КонецЕсли;
КонецПроцедуры
Независимо от того, куда вы едете — это в гору и против ветра!