|
Выгрузить ворд шаблон и заполнить. | ☑ | ||
---|---|---|---|---|
0
antihacker
29.11.17
✎
05:44
|
Всем привет !
В хранилище лежит ворд файл. Мне надо выгрузить его и запонить. Делаю так &НаСервере Функция ПолучитьШаблонДоговора() ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения(); // читаем значение ШаблонДоговорСотрудника.Прочитать(); //Сообщить(ШаблонДоговорСотрудника.Значение); // меняем значение ХранЗнач = ШаблонДоговорСотрудника.Значение.Получить(); ДвоичДанные1 = Новый ДвоичныеДанные(ХранЗнач); Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные1, УникальныйИдентификатор); возврат Адрес; КонецФункции &НаКлиенте Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; ФайлШаблон = ПолучитьШаблонДоговора(); ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлШаблон); // получаем имя временного файла в локальной ФС на сервере ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx"); // получаем файл правил для зачитки ДвоичныеДанные.Записать(ИмяВременногоФайла); //Путь к шаблону ОбъектВорд.Documents.Add(ИмяВременногоФайла); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все закладки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Заменяем закладку1 на текст ШаблонВорд.Bookmarks("DATAVIDACHI1").Select(); ШаблонВорд.Application.Selection.TypeText("123456789"); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа ОбъектВорд.Application.Quit(); КонецФункции Пишет - {Документ.Проекты.Форма.ФормаДокумента.Форма(889)}: Ошибка при вызове метода контекста (Add) ОбъектВорд.Documents.Add(ИмяВременногоФайла); по причине: Произошла исключительная ситуация (Microsoft Word): Word has encountered a problem. |
|||
1
antihacker
29.11.17
✎
05:45
|
А загружаю так
&НаКлиенте Процедура ЗагрузитьШаблон(Команда) #Если ВебКлиент Тогда Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда УстановитьРасширениеРаботыСФайлами(); ПодключитьРасширениеРаботыСФайлами(); КонецЕсли; #КонецЕсли СтандартнаяОбработка=ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Фильтр = "* (*.*)|*.*"; Диалог.Фильтр = Фильтр; Диалог.МножественныйВыбор = Ложь; Диалог.Каталог = "С:\"; ЕСЛИ Диалог.Выбрать() ТОГДА ПутьКФайлу = СокрЛП(Диалог.ПолноеИмяФайла); //Имя файла //ДлинаКаталога=СтрДлина(Диалог.каталог); //ПолнаяДлина=СтрДлина(Диалог.ПолноеИмяФайла); //ИмяФайла=Прав(Диалог.ПолноеИмяФайла,ПолнаяДлина-ДлинаКаталога); строка= стрзаменить(ПутьКФайлу,"\", Символы.ПС); ИсхИмяФайла=СтрПолучитьСтроку(строка,стрчислострок(строка)); #Если НЕ ВебКлиент Тогда ПомещамыеФайлы = Новый Массив; ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,"")); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки()); Иначе ПрикрепитьФайлСервер(ПомещенныеФайлы); КонецЕсли; #Иначе ПомещамыеФайлы = Новый Массив; ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,"")); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки()); Иначе ПрикрепитьФайлСервер(ПомещенныеФайлы,ИсхИмяФайла,Истина,вхТипИнформации); КонецЕсли; #КонецЕсли КОНЕЦЕСЛИ; КонецПроцедуры &НаСервере Процедура ПрикрепитьФайлСервер(Данные)// = Ложь // Если ЭтоВебКлиент Тогда // // АдресПрикрепленныйФайл = Данные[0].Хранение; // ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл); // Иначе АдресПрикрепленныйФайл = Данные[0].Хранение; ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл); // создаём и используем менеджер значений константы напрямую ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения(); // читаем значение ШаблонДоговорСотрудника.Прочитать(); //Сообщить(ШаблонДоговорСотрудника.Значение); // меняем значение ШаблонДоговорСотрудника.Значение = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл),Новый СжатиеДанных(9));; // записываем значение ШаблонДоговорСотрудника.Записать(); // //МенеджерЗаписи.ДвоичныеДанныеФайла=Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ТекСтрока.АдресВременногоХранилища),Новый СжатиеДанных(9)); КонецПроцедуры |
|||
2
Mankubus
29.11.17
✎
06:19
|
Конфа на бсп?
|
|||
3
antihacker
29.11.17
✎
06:43
|
самописная
|
|||
4
antihacker
29.11.17
✎
07:37
|
Темиа закрыта. решил вот так.
&НаСервере Функция ПолучитьШаблонДоговора() ШаблонДоговорСотрудника = Константы.ШаблонДоговорСотрудника.СоздатьМенеджерЗначения(); // читаем значение ШаблонДоговорСотрудника.Прочитать(); //Сообщить(ШаблонДоговорСотрудника.Значение); // меняем значение ХранЗнач = ШаблонДоговорСотрудника.Значение.Получить(); //ДвоичДанные1 = Новый ДвоичныеДанные(ХранЗнач); //Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные1, УникальныйИдентификатор); возврат ХранЗнач; КонецФункции &НаКлиенте Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; ФайлШаблон = ПолучитьШаблонДоговора(); //ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлШаблон); // получаем имя временного файла в локальной ФС на сервере ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc"); // получаем файл правил для зачитки ФайлШаблон.Записать(ИмяВременногоФайла); сообщить(ФайлШаблон); //Путь к шаблону ОбъектВорд.Documents.Add(ИмяВременногоФайла); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все закладки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Заменяем закладку1 на текст ШаблонВорд.Bookmarks("DATAVIDACHI1").Select(); ШаблонВорд.Application.Selection.TypeText("123456789"); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа ОбъектВорд.Application.Quit(); КонецФункции Но и это не работала пока Это ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx"); не поменял на это ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc"); Почему ? Ведь на клиенте Оффис 2007, а не 2003 ! НЕ могу понять ! |
|||
5
antihacker
29.11.17
✎
08:17
|
По ходу ОбъектВорд.Documents.Add(ИмяВременногоФайла);
для 2007 выглядит по другому. Ведь на это ругаеться когда когда применен ПолучитьИмяВременногоФайла("docx"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |