![]() |
![]() |
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
ИУБиПовиц 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(); //ОбъектВорд = Неопределено; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|
Список тем форума
|
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |