|
V8 управляемые формы active document Проблемма | ☑ | ||
---|---|---|---|---|
0
ИУБиПовиц
17.01.13
✎
17:04
|
Здравствуйте. Имеется конфигурация на управляемых формах в клиент-серверном варианте, в ней есть некий документ, из него должен открываться вордовский файл. Сделал вот как:
&НаКлиенте Процедура ПечатьСогласования() // Вставить содержимое обработчика. ТабДокСПарам = Новый ТабличныйДокумент; Списокмакетов = Новый СписокЗначений; СсылкаНаОбъект = Объект.Ссылка;/ СтруктураДанных = ВызовОбертки(); Макет = ПолучитьИзВременногоХранилища(СтруктураДанных); ОбъектВорд = Макет.Получить(); // Документ из объекта и его активация Документ = ОбъектВорд.Application.Documents(1); Документ.Activate(); //тут различный код, пока его не трогаю // Вывод документа ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); КонецПроцедуры &НаСервере Функция ПолучитьСтруктуруДанных() экспорт ФайлВорд = ПолучитьМакет("МакетДв"); АдресФайлаЕксельВХранилище = ПоместитьВоВременноеХранилище(ФайлВорд); Возврат АдресФайлаЕксельВХранилище; КонецФункции Говорит что метод не доступен "получить". ОбъектВорд = Макет.Получить(); ну сдругой стороны это ж не макет, а двоичные данные, с чего бы там чему то быть.. как можно реализовать открытие документа ворд из двоичных данных БЕЗ созданий временных файлов, потому что непонятно какоё это пользователь, и какие папки ему будет доступны..! |
|||
1
Лефмихалыч
17.01.13
✎
17:13
|
(0) без временных файлов - ни как. А любому пользователю доступен тэмп
|
|||
2
ИУБиПовиц
17.01.13
✎
18:04
|
ну хорошо, с временными так с временными. только один фиг не получается. Выдает вот это Отсутствует отображение для типа 'COMОбъект'.
труктураДанных = ВызовОбертки(); ФайлВорд = ПолучитьИзВременногоХранилища(СтруктураДанных); ПутьКФайлуНаКлиенте = "temp.doc"; Попытка ОбъектВорд = Новый COMОбъект("WORD.Application"); Исключение Сообщить("Установи WORD.."); Возврат; КонецПопытки; ПолноеНаименование = КаталогВременныхФайлов() + ПутьКФайлуНаКлиенте; Документ = ОбъектВорд.Application.Documents.Add(ПолноеНаименование); ТаблицаПараметров // формирование таблицы в которой параметры которые нужно заменить в ворде для каждого стр из ТаблицаПараметров цикл ДобавитьПараметр(стр.Имя,Стр.Значение,Документ); КонецЦикла; ФайлВорд.Записать(ПолноеНаименование); //// Документ из объекта и его активация // // запускаем приложение ЗапуститьПриложение(ПолноеНаименование); Процедура ДобавитьПараметр(Имя,имяЗнч,Документ) Замена = Документ.Content.Find; попытка РезультатЗамены = Замена.Execute("[" + имя+ "]", , , , , , , , , ?(имяЗнч = Неопределено,"",имяЗнч), ); пока РезультатЗамены = Истина цикл Замена = Документ.Content.Find; РезультатЗамены = Замена.Execute("[" + имя + "]", , , , , , , , , ?(имяЗнч = Неопределено,"",имяЗнч), ); КонецЦикла; исключение Сообщить("не могу вывести " + "[" + имя + "]" + имяЗнч); КонецПопытки; КонецПроцедуры |
|||
3
ИУБиПовиц
17.01.13
✎
18:08
|
ТО есть у меня проблемма в том, я из двоичных данных макет получил, и могу его показать, но вот изменить данные вида [Номер], содержащиеся в этом макете не получается..
|
|||
4
ИУБиПовиц
18.01.13
✎
11:11
|
Сейчас у меня получилось вот что, но есть проблемма раз открылся док, потом уже не открывается пишет что произошла исключительная ситуация при открытии, при перезапуске 1с все работет.
СтруктураДанных = ВызовОбертки();//помещаю в хранилище ФайлВорд = ПолучитьИзВременногоХранилища(СтруктураДанных); ПутьКФайлуНаКлиенте = "temp" + СокрЛП(ПолучитьНомер()) + ".doc"; Попытка ОбъектВорд = Новый COMОбъект("WORD.Application"); Исключение Сообщить("Установи WORD.."); Возврат; КонецПопытки; попытка ПолноеНаименование = КаталогВременныхФайлов() + ПутьКФайлуНаКлиенте; ФайлВорд.Записать(ПолноеНаименование); Документ = ОбъектВорд.Documents.Open(ПолноеНаименование);; Документ.Activate(); ТаблицаПараметров =Формированиетаблицыпараметров(СсылкаНаОбъект); для каждого стр из ТаблицаПараметров цикл //ДобавитьПараметр(стр.Имя,Стр.Значение,Документ); Имя = Стр.Имя; ИмяЗнч = Стр.Значение; Замена = Документ.Content.Find; попытка РезультатЗамены = Замена.Execute("[" + имя+ "]", , , , , , , , , ?(имяЗнч = Неопределено,"",имяЗнч), ); пока РезультатЗамены = Истина цикл Замена = Документ.Content.Find; РезультатЗамены = Замена.Execute("[" + имя + "]", , , , , , , , , ?(имяЗнч = Неопределено,"",имяЗнч), ); КонецЦикла; исключение Сообщить("не могу вывести " + "[" + имя + "]" + имяЗнч); КонецПопытки; КонецЦикла; ДругоеНаим = КаталогВременныхФайлов() +"t1_" + ПутьКФайлуНаКлиенте; ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); Исключение ОбъектВорд = Неопределено; ФайлВорд = Неопределено; Документ = Неопределено; //ОбъектВорд.Application.Quit(); Сообщить(ОписаниеОшибки()); КонецПопытки; попытка ФайлВорд = Неопределено; Если не ОбъектВорд = Неопределено тогда //ОбъектВорд.Quit(); //ОбъектВорд = Неопределено; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |