Имя: Пароль:
1C
1С v8
Печать из Word на PDF принтере через 1С.
,
0 mishmeister
 
16.02.12
15:12
Доброго времени суток коллеги!
Кто нибудь делал подобное? Если да, то поделитесь вордовым скриптом.
Если нет таких, м.б. есть желающие создать это чудо вместе? Мне лично не хватает знаний в вордовых скриптах.
1 Fish
 
16.02.12
15:14
б-р-р. Прочитал сабж, аж жуть взяла :))) Интересно, зачем такой изврат нужен?
2 mishmeister
 
16.02.12
15:17
(1) Дааа)))) И такое бывает, нужен т.к. есть печать договоров, шаблон забивать в макет через табличный договор лень и делаю печать через 1С.
При печати выводится штрих код на каждой странице, сейчас я показываю юзверю документ в ворде и он его сам печатает, но хотелось бы исключить возможность ручной правки документа перед печатью.
Вот и остается 2 варианта, делать ТД и из 1С печатать или извращаться со вордовым скриптом (что для меня предпочтительней) :)
3 Fish
 
16.02.12
15:19
(2) А запаролить документ ворда не поможет?
4 vmv
 
16.02.12
15:19
у меня стойкое чувсвство что опять из-за лени поиска готовых решений будет собирать велосипед, ну а потом, потом будут восторженные вопли "Мая нетленка - кушойте"
5 Йохохо
 
16.02.12
15:20
6 andrewks
 
16.02.12
15:21
(0) мусье знает толк в извращениях...
7 mishmeister
 
16.02.12
15:21
(3) Вариант, но это лишние документы и лишнее неудобство.
(4) Много искал, не нашел.
(5) Пытался, но ключевая фраза в (0) - это "Мне лично не хватает знаний в вордовых скриптах.", ну и не в вордовых тоже.
8 Живой Ископаемый
 
16.02.12
15:21
проблема тут: "шаблон забивать в макет через табличный договор лень"
9 Йохохо
 
16.02.12
15:22
(7) там по шагам расписано, с английским проблемы?)
10 Fish
 
16.02.12
15:26
(6) Это еще не извращение. Вот нам как-то прислали договор, мало того, что он был отсканирован в jpg и засунут в Ворд, так ворд они пожали РАРом, а РАР зазиповали. :)))
11 Dmitry77
 
16.02.12
15:27
2010 word умеет сохранять напрямую в ПДФ без принтера.
12 Живой Ископаемый
 
16.02.12
15:28
2(11) самое смешное что даже в8.2.15 это может делать, и без принтера, и без Ворда...
13 Fish
 
16.02.12
15:31
(12) А я знаю, как и без 1С, и даже без компьютера договор сделать :Р
14 Dmitry77
 
16.02.12
15:34
(12) насколько релиз стабильный, мы пока с ЗиУП на 8.2.13. И чего то переходить не торопимся
15 mishmeister
 
16.02.12
15:34
(11) можно попдробнее?
16 Dmitry77
 
16.02.12
15:36
(15) сохранить как, выбираешь PDF.
17 Живой Ископаемый
 
16.02.12
15:36
2(14) кому интересно каким маслом вы смазываете свое кремниевое ружье?
18 Аслан
 
16.02.12
15:37
ТС хочет подготовить договор на основе шаблона ворда, а пользователям выдать как ПДФ или в другом формате, главное чтоб режим только чтение был. И все это автоматом.

После создания объекта "Word.Application" сохранить его в формате ПДФ(ниже указан метод) и открыть ПДФ документ.    Нужен Word 2010

Можно использовать метод: Microsoft.Office.Interop.Word.Document.ExportAsFixedFormat

Вот какой-то образец от дельфи.
       ActiveDocument.ExportAsFixedFormat OutputFileName:= _
       Doc.Path & "\" & sValue & ".pdf", ExportFormat:= _
       wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
       wdExportOptimizeForPrint, Range:=wdExportAllDocument, FROM:=1, To:=1, _
       Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
       CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
       BitmapMissingFonts:=True, UseISO19005_1:=False
19 Dmitry77
 
16.02.12
15:38
(17) интересно чем ружье мажут остальные.
20 mishmeister
 
16.02.12
15:38
(8) Сколько у Вас займет времени создать макет для договора из 3 страниц, и сколько времени займет реализовать печать через ворд с заполнением 5 параметров?
Думаю, второй вариант быстрее. И зачем тратить время сотрудников на создание ТД?
21 mishmeister
 
16.02.12
15:39
(18) Спасибо, попробую.
22 Dmitry77
 
16.02.12
15:42
(20) через ворд быстрее в разы и форматирование не слетает. И если умно написать, то дальше можно только шаблоны править не открывая код.
23 Живой Ископаемый
 
16.02.12
15:44
но вообще я думаю, если постараться, то можно оба механизма совместить... Хранить вордовский шаблон в макете, заполнять его, открывать его внутри 1С и сохранять в ПДФ
24 undertaker
 
16.02.12
15:44
можно же не обязательно договор запихивать в таблич документ, можно вставить в макет как Active Document, в самом договоре сделать переменные, которые потом из 1С заполнять, а сам документ сохранять в PDF
25 Живой Ископаемый
 
16.02.12
15:44
(24) +100500, вот, точно
26 mishmeister
 
16.02.12
15:48
(24) "а сам документ сохранять в PDF" Вот как раз этот момент меня и интересует.
27 Живой Ископаемый
 
16.02.12
15:48
2(26) ты (12) точно прочитал, или проигнорировал по какой-то причине?
28 Живой Ископаемый
 
16.02.12
15:50
а.. но там только табличный документ... хм...
29 Аслан
 
16.02.12
15:52
Вот кусок от С#. Остается только дерзать.

using Word = Microsoft.Office.Interop.Word;
object oMissing = System.Reflection.Missing.Value;
object oFalse = false;
object oTrue = true;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
//Если поставить в False то Ворд будет видимым, а не в фоновом режиме
oWord.Visible = true;
//Открытие документа Ворд
//Параметры:
// strWordDoc = Имя документа
// oFalse = Не конвертировать
// oTrue = Открыть в режиме только для чтения
oDoc = oWord.Documents.Open(strWordDoc, oFalse, oTrue);
//Экспортируем документ в PDF файл
oDoc.ExportAsFixedFormat(strPDFDoc, Word.WdExportFormat.wdExportFormatPDF);
oDoc.Close(oFalse, oMissing, oMissing);
oWord.Quit(oFalse, oMissing, oMissing);
30 Живой Ископаемый
 
16.02.12
15:54
ну да, мимо табличногодокумента все-таки никуда... Вордовский Шаблон заполнять, сохранять в формате .ДОК, читать чтением текста, вставлять в Табличный документ, его сохранять в ПДФ благодаря:

ТипФайлаТабличногоДокумента (SpreadsheetDocumentFileType)
Значения

ANSITXT (ANSITXT)
DOCX (DOCX)
HTML (HTML)
HTML3 (HTML3)
HTML4 (HTML4)
MXL (MXL)
MXL7 (MXL7)
ODS (ODS)
PDF (PDF)
TXT (TXT)
XLS (XLS)
XLS95 (XLS95)
XLS97 (XLS97)
XLSX (XLSX)

Описание:

Содержит варианты форматов файлов для сохранения табличного документа. Используется для определения параметра <ТипФайлаТаблицы> метода Записать.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером.
См. также:

ТабличныйДокумент, метод Записать
31 Dmitry77
 
16.02.12
15:59
есть еще OLe технология, в ней табличный документ не нужен.
32 Аслан
 
16.02.12
16:01
(30) Слишком длинная цепочка.
"Вордовский Шаблон заполнять, сохранять в формате .ДОК, читать чтением текста, вставлять в Табличный документ, его сохранять в ПДФ" можно заменить на "Вордовский Шаблон заполнять, сохранять в формате ПДФ". Условие: наличие Word2007 SP2 или Word 2010.
33 Аслан
 
16.02.12
16:02
мсье не приемлет, однако, легких путей
34 Живой Ископаемый
 
16.02.12
16:02
2(32) я согласен что моя длинная - но ваша слишком МС-зависимая и зависимая от прав пользователя и среды исполнения.
35 Аслан
 
16.02.12
16:06
Выбор метода реализации задачи за ТС. Пусть дерзает.
36 undertaker
 
16.02.12
16:22
(30) а что, вордовский документ, открытый из шаблона, нельзя сохранить в ПДФ? что то вроде вызова SaveAs?
37 mishmeister
 
16.02.12
16:28
(29) Вот как раз тут у меня и затык:) Попробовал написать скрипт, но из-за не понимания работы вордовых макросов происходит ошибка.
38 Аслан
 
16.02.12
16:30
А зачем скрипт в worde? Сохраняй из 1С сразу же и открой после полученный пдф.
39 undertaker
 
16.02.12
16:32
дарю идею :)

ИмяМакета = "ПриложениеКДополнениюWord";
       
   Попытка
       МакетПечати = ПолучитьМакет(ИмяМакета);
   Исключение
       Сообщить("Не удалось создать макет с именем: "+ИмяМакета);
       Возврат;
   КонецПопытки;

   Попытка
       Док = МакетПечати.Получить();
   Исключение
       Сообщить("Не удалось сформировать документ Word!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Важное);
       Возврат;
   КонецПопытки;

// заполнение переменных
.....


Док.Fields.Update();
   
   Попытка
       Док.FitToPages();
   Исключение
   КонецПопытки;

   Док.SaveAs("C:\1.pdf", 17)

17 как раз отвечает за то, что документ корректно сохранится в PDF
40 undertaker
 
16.02.12
16:33
осталось теперь только научится пользоваться переменными в Word-е :)
41 mishmeister
 
16.02.12
16:33
(38) Да, меня осенило что я туплю с макросами во время перекура!)
Позже отпишусь.
42 Nikitos
 
16.02.12
16:48
Много буковок. Все не осилил. Если уж извращаться, то делайте как делает рарус - они в своих поделках используют VBS для имитации нажатия последовательности клавиш.
Сейчас поищу кусок кода.
43 Nikitos
 
16.02.12
16:53
Типа вот такого у них есть. Орфография сохранена:

Процедура ОсновныеДействияФормыПредварительныйПросмотр(Кнопка)
   ТекущийЭлемент    = ЭлементыФормы.ТабличныйДокумент;
   
   // Произведем эмуляцию нажатия клавишь. По ходу дела это единственный способ открыть окно просмотра печати
   WHSShell = Новый COMОбъект("WScript.Shell");
   WHSShell.SendKeys("%");
   WHSShell.SendKeys("~");
   WHSShell.SendKeys("{DOWN 10}");
   WHSShell.SendKeys("~");
КонецПроцедуры
44 Fish
 
16.02.12
16:58
(43) Читать комментарии Раруса - это песня :)))
45 mishmeister
 
16.02.12
16:59
(43) Это же *вырезано цензурой*! хоть я и решил извращаться, но не на столько))
46 Аслан
 
16.02.12
17:11
Кусок кода для 1С нарыл у себя:

   Попытка
       COMОбъект = Новый COMОбъект("Word.Application");
   Исключение
   КонецПопытки;
   Попытка
       COMОбъект.Documents.Open("D:\Премия.doc");
   Исключение
       COMОбъект.Quit(0);
       COMОбъект = 0;
   КонецПопытки;
   COMОбъект.Application.Visible = Истина;
   COMОбъект.Activate();

       // тут химичаем сколько душе угодно.
   
       ТекДокумент = COMОбъект.ActiveDocument();
   ТекДокумент.ExportAsFixedFormat("D:\Премия.pdf", 17);
   COMОбъект.Quit(0);
47 mishmeister
 
16.02.12
17:16
(46) Спасибо!
У меня был затык со вторым параметром.