Имя: Пароль:
1C
1С v8
Передача двоичных данных на веб-клиент 8.3 Инвентаризация и управление имуществом 2.0
0 Uliana0_0
 
31.07.21
22:12
Пытаюсь передать файл PDF с сервера на веб-клиент. Ошибка такая "На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто", но не думаю, что проблема на сервере. Пробовала и на других серверах запускать та же ошибка. Вот код сервера\клиента.

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
    АдресВременногоХранилища="";    
    ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища);    
    НачатьПолучениеФайлаССервера(АдресВременногоХранилища);     
КонецПроцедуры

&НаСервере
Процедура ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища)
        
        Для Каждого ДокОбъект Из МассивОбъектов Цикл
        Данные = ПолучитьДанные(ДокОбъект);
        
        Если данные <> Неопределено Тогда
            Word = Новый COMОбъект("Word.Application");
            Макет = ПолучитьМакетСервер(ИдентификаторКоманды);
            временныйПуть = КаталогВременныхФайлов();
            имяВременногоФайла = временныйПуть + "gph.docx";
            имяВременногоФайлаPDF = временныйПуть + "gph.pdf";
            Макет.Записать(имяВременногоФайла);
            ТекДок = Word.Documents.ADD(имяВременногоФайла);
            
            ЗначениеВЗакладку(ТекДок,"НомерДоговора", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"НомерДоговора2", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"НомерДоговора3", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента2", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента3 ", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента4", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации", Данные.НаименованиеПолное);
            ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации2", Данные.НаименованиеПолное);
            ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации", Данные.НаименованиеСокращенное);
            КраткоеФИОФизЛица = ФамилияИнициалы(Строка(Данные.ФизическоеЛицо));
            ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации2", Данные.НаименованиеСокращенное);            
            ЗначениеВЗакладку(ТекДок,"АдресОрганизации", Данные.ЮрАдрес);
            ЗначениеВЗакладку(ТекДок,"ИНН", Данные.ИНН);
            ЗначениеВЗакладку(ТекДок,"КПП", Данные.КПП);
            ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица2", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"КратФИОФизЛица", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"ФИОФизЛица", Данные.ФизическоеЛицо);
            ЗначениеВЗакладку(ТекДок,"АдресФизЛица", Данные.АдресФизЛица);  
            ЗначениеВЗакладку(ТекДок,"ИННФЛ", Данные.ИННФЛ);            
            ЗначениеВЗакладку(ТекДок,"ДанныеПаспортаФизЛица", Данные.Паспорт);
                    
            
            ТекДок.Tables(2).Select();
            СписокПодарков = СтруктураПодарки(ДокОбъект);
            I = 1;
            Для Каждого Подарок Из СписокПодарков Цикл
                word.selection.InsertRowsBelow(1);
                word.selection.rows(1).cells(1).Range.Text = I;
                word.selection.rows(1).cells(2).Range.Text = Строка(Подарок.Значение.Название);
                word.selection.rows(1).cells(3).Range.Text = Строка(Подарок.Значение.Количество);
                word.selection.rows(1).cells(4).Range.Text = Строка(Подарок.Значение.ИмуществоЦенаПоступления);
                word.selection.rows(1).cells(5).Range.Text = Строка(Подарок.Значение.Сумма);
                I = I + 1;
            КонецЦикла;
            
            Range = ТекДок.Range();
            Table = Range.Tables(5);
            СтрокаОбразец = Table.Rows(1);
            Для Каждого Подарок из СписокПодарков Цикл
                НоваяСтрока = Table.Rows.Add(СтрокаОбразец);
                НоваяСтрока.Cells(1).Range.Text = Строка(Подарок.Значение.Название);                
            КонецЦикла;            
            СтрокаОбразец.Delete();    
            
            ТекДок.Fields.Update();
            //ТекДок.ExportAsFixedFormat(имяВременногоФайлаPDF , 17);
            
            //Word.ActiveWindow.View.ShowFieldCodes = False;
            //Word.Visible=Истина;
            ТекДок.SaveAs2(имяВременногоФайлаPDF,17);
            ТекДок.Close(Ложь);
                        
            Word.Application.Quit(0);
            
            
            ДвоичныеДанные = Новый ДвоичныеДанные(имяВременногоФайлаPDF);
            АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные,КаталогВременныхФайлов()+"gph.pdf");

        КонецЕсли;
    КонецЦикла;    

    
        

КонецПроцедуры
1 Uliana0_0
 
31.07.21
22:22
Ошибка при выполнении файловой операции  'e1cib/tempstorage/4144dbb3-925f-4d6e-b883-5d31701b5594?seanceId=8c967155-1ee0-494c-90f0-1d011d73d206&seanceId=8c967155-1ee0-494c-90f0-1d011d73d206'. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)
Новая ошибка. Похоже двоичные данные нельза передать на веб, да?
2 acht
 
31.07.21
23:21
(0) >  ПоместитьВоВременноеХранилище(ДвоичныеДанные,КаталогВременныхФайлов()+"gph.pdf");

Это что?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан