Имя: Пароль:
1C
1С v8
получить макет с тегами из Active document Word
0 nazi
 
30.08.12
18:12
Добрый день.

Есть внешняя печатная форма в Word, сделана через Active document.

Появилась необходимость доработать, как получить исходный макет с заполненными тегами?
1 andrewks
 
30.08.12
18:13
поищи в макетах, сохрани на диск. потом можно обновить в макете
2 nazi
 
30.08.12
18:26
(1) ну вот открывается макет в окне 1С в word файле, но сохранить данный макет во внешний файл не получается - word 2010 если что...
3 andrewks
 
30.08.12
18:37
непонятно, что там у тебя не получается в Word2010, но, в любом случае, макет можно сохранить в конфигураторе 1с. открой обработку, там есть Макеты
4 nazi
 
30.08.12
18:56
(3) вот у меня внешняя обработка, у ней есть макет Active document. При открытии его открывает окно ворда с тестом и пустыми полями, мне нужно вместо пустых полей увидеть теги, который при формировании заполняются на данные 1с
5 andrewks
 
30.08.12
20:13
а, теперь понял. я обычно как ДД храню в макете, а в твоём случае запихнули не как ДД, а как "Active document"

как-нить так, наверное:


Макет=ПолучитьМакет("ИмяТвоегоМакета");
Word=Договор.Получить();
Doc=Word.Application.ActiveDocument();
Doc.SaveAs(ИмяФайла);
Word.Application.Quit();
Word="";

6 andrewks
 
30.08.12
20:15
кстати, непонятно, почему в конфигураторе 1С нельзя сохранить макет "Active document"
7 nazi
 
30.08.12
20:28
(5)спасибо буду пробовать
(6) сам бился не получилось..загрузить можно, выгрузить нет(
8 andrewks
 
30.08.12
21:56
ну що?
9 smaharbA
 
30.08.12
22:05
(5)
Word=Договор.Получить();
ЭТО НАВЕРНОЕ УЖЕ ДОКУМЕНТ И НЕ НУЖНА СЛЕДУЮЩАЯ СТРОКА ?
10 smaharbA
 
30.08.12
22:05
капслок (
11 andrewks
 
30.08.12
22:09
(9) нужна
12 nazi
 
30.08.12
22:27
(8)

{ВнешняяОбработка.ПечатьДоговораИСпецификации.МодульОбъекта(114)}: Ошибка при вызове метода контекста (ActiveDocument)
   Doc=Word.Application.ActiveDocument();
по причине:
Произошла исключительная ситуация (Microsoft Word): Данная команда недоступна, так как не открыт ни один документ.
13 andrewks
 
30.08.12
22:28
редкостная шняга. отображения между клиентом и сервером нет, сохраняет не всё.

рабочий код, если что, такой:


&НаСервере
Процедура СохранитьМакет(ИмяМакета)
   ОбработкаОбъект=РеквизитФормыВЗначение("Объект");
   Макет=ОбработкаОбъект.ПолучитьМакет(ИмяМакета);
   Word=Макет.Получить();
   Doc=Word.Application.Documents(1);
   Doc.SaveAs("d:\123");
   Word.Application.Quit();
   Word="";
   
КонецПроцедуры

&НаКлиенте
Процедура Пуск(Команда)
   СохранитьМакет("Докум1");
   
КонецПроцедуры



только у меня сохранилось не всё содержимое макета.

надо юзать ДД, и никаких гвоздей!
14 nazi
 
30.08.12
22:29
(13) у меня не УФ:)
15 andrewks
 
30.08.12
22:30
если клиент-серверная база, то на клиента получится перетянуть только через запись во врем.файл, потом - считать в временное хранилище. и, в довесок, ещё должен быть установлен MS Office на сервере! это ппц, товарищи. полный
16 nazi
 
30.08.12
22:31
(15) как есть, файл сохранился, но теги все равно не отображаются:(
17 andrewks
 
30.08.12
22:32
скопипасть, на худой конец!
18 nazi
 
30.08.12
22:34
(17) думал есть какой-то способ, влом перебивать все теги с 0 )
19 andrewks
 
30.08.12
22:34

   ОбработкаОбъект=РеквизитФормыВЗначение("Объект");
   Макет=ОбработкаОбъект.ПолучитьМакет(ИмяМакета);
   Макет.Записать("d:\123.doc");

20 nazi
 
30.08.12
22:36
(19) дак сделал, сохранился файл, открыл его вордом, установил галку в параметрах чтобы показывал теги, а не показывает-(
21 andrewks
 
30.08.12
22:36
но, всё равно, тупой объект. или, возможно, его надо уметь правильно готовить
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший