Имя: Пароль:
1C
1С v8
Выгрузка двоичных данных в табличный документ
0 TanyaTumchenko
 
23.09.20
10:32
Добрый день, помогите пожалуйста с вопросом. файл макета табличного документа, загружаю его в справочник методом :

&НаКлиенте
Процедура ЗагрузитьМакет(Команда)
  длгВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        длгВыборФайла.Заголовок = "Выберите табличный документ...";
        длгВыборФайла.Фильтр = "Табличный документ (*.mxl)|*.mxl";
        длгВыборФайла.Расширение = "mxl";
        длгВыборФайла.ПроверятьСуществованиеФайла = Истина;
    Если Не длгВыборФайла.Выбрать() Тогда Возврат; КонецЕсли;
        ДвоичныеДанные = Новый ДвоичныеДанные(длгВыборФайла.ПолноеИмяФайла);
        Объект.ДвоичныеДанные=ДвоичныеДанные;
        Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
        ПрочитатьНаСервере(Адрес);
КонецПроцедуры

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

Макет загружается и тут же отображается красиво на форме в реквизите АдресКартинки (тип табличный документ). Далее я записываю элемент справочника и при открытии не могу добитсья отображения табличного документа, уже все перепробовала, подскажите пожалуйста как из двоичных данных получить обратно табличный документ и отобразить его на форме.
Следующий способ у меня не работает,  в Адресе строка с двоичными данными.
        ЭлементСправочника = РеквизитФормыВЗначение("Объект");
        ТабДок = ЭлементСправочника.Макет.Получить();
        АдресКартинки = ТабДок;
1 Ёпрст
 
гуру
23.09.20
10:54
(0) в ПриСозданииНаСервере клади в свой реквизит на форме свой макет из хранилища
2 TanyaTumchenko
 
23.09.20
11:08
(1) &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДвоичныеДанные = Объект.ДвоичныеДанные;
    Если ЗначениеЗаполнено(ДвоичныеДанные) Тогда
        ТабДок = Новый ТабличныйДокумент;
        ЭлементСправочника = РеквизитФормыВЗначение("Объект");
        ТабДок = ЭлементСправочника.Макет.Получить();
        АдресКартинки = ТабДок
    КонецЕсли;
КонецПроцедуры

Сделала выводится пустой, может я не правильно помещаю? Что-то я не то делаю, а что не могу понять.. уже второй день сижу
3 RomanYS
 
23.09.20
11:13
(2) В хранилище вы положили файл(mxl), значит и получите вы оттуда файл.
У ТабличныйДокумент есть метод Прочитать для загрузки из файла.
4 TanyaTumchenko
 
23.09.20
11:40
(3) Так я так и делаю :
АдресКартинки.Прочитать(ФайлПриемник);  
       ЭлементСправочника = РеквизитФормыВЗначение("Объект");
       ЭлементСправочника.Макет = Новый ХранилищеЗначения(АдресКартинки);
5 RomanYS
 
23.09.20
11:45
(4)
но (2) у тебя
ТабДок = ЭлементСправочника.Макет.Получить();//ТабличныйДокумент = ДвоичныеДанные;
6 TanyaTumchenko
 
23.09.20
11:51
(5) ЭлементСправочника.Макет.Прочитать(); - Ошибка при методе прочитать
7 TanyaTumchenko
 
23.09.20
15:24
Заработало вот так, может кому-то пригодится
ТабДок = ЭлементСправочника.Макет.Получить();
АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Макет");
АдресКартинки = ТабДок;
Программист всегда исправляет последнюю ошибку.