|
|
|
Печать из 1С word документов. не получается | ☑ | ||
|---|---|---|---|---|
|
0
Стрелок
04.02.09
✎
11:23
|
С шаблонами разобрался. следующий этап - печать документа после формирования.
ситуация - если я использую Doc.PrintOut() то первы |
|||
|
1
Стрелок
04.02.09
✎
11:25
|
С шаблонами разобрался. следующий этап - печать документа после формирования.
ситуация - если я использую Doc.PrintOut() то первый раз всё нормально - печать проходит. тут же пытаюсь ещё раз напечатать и получаю зависание процесса word в памяти и соответственно висит 1С. вот код Word=СоздатьОбъект("Word.Application"); Word.Documents.Add(ФайлШаблона); //Word.Visible=0; Doc=Word.ActiveDocument; Doc.Variables("НомерДоговора").Value = ?(СокрЛП(ДокВызова.НомерДоговора)="",СокрЛП(ДокВызова.НомерДок),СокрЛП(ДокВызова.НомерДоговора)); Doc.Variables("ДатаДоговора").Value = Формат(ДокВызова.ДатаДок,"Д(0)ДДММММГГГГ"); Doc.Variables("ФирмаИмя").Value = СокрЛП(Фирма.ПолнНаименование); ..... тут формируется документ по шаблону...... Doc.Fields.Update(); Doc.Fields.UnLink(); Doc.SaveAs(КаталогКлиента+"Договор на услуги интернета.doc"); Если Вопрос("Распечатать договор?","Да+Нет")="Да" Тогда Doc.PrintOut(); КонецЕсли; Word.Quit(); Word=""; Форма.Параметр.ДобавитьЗначение(КаталогКлиента+"Договор на услуги интернета.doc","ФайлДоговора"); СтатусВозврата(0); Возврат; |
|||
|
2
Стрелок
04.02.09
✎
11:30
|
ап
|
|||
|
3
Стрелок
04.02.09
✎
11:39
|
ситуация из-за того что процесс word "зависает" в списке процессов. т.е. несмотря на quit он продолжает висеть в памяти
|
|||
|
4
Стрелок
04.02.09
✎
12:01
|
ап
|
|||
|
5
skunk
04.02.09
✎
12:03
|
||||
|
7
dk
04.02.09
✎
12:06
|
(0) может он не зависает, а ждет чего-то?
displayalerts поставь в False |
|||
|
8
vde69
04.02.09
✎
12:08
|
не парься с печатью, пусть сами нажимают кнопку, просто документ открой и покажи
|
|||
|
9
vde69
04.02.09
✎
12:09
|
(8) печать из кода не должна вызываться, так по ошибки будут принтера другие и портить бланки строгой отчетности, короче заморочек много. Нужно ответственость за печать возлогать на пользователя
|
|||
|
10
Стрелок
04.02.09
✎
12:10
|
(9) я понял уже. это так даже при открытии документа возникают проблемы. он открывается со второго раза по простейшему коду
Word=СоздатьОбъект("Word.Application"); Word.Documents.Open(ФайлДоговора); |
|||
|
11
Стрелок
04.02.09
✎
12:11
|
т.е. первый раз в памяти появляется процесс но документ не открывается, при повторном нажатии - открывается документ
|
|||
|
12
dk
04.02.09
✎
12:12
|
(7)+
А нафига закрывать word, когда надо закрыть только документ? |
|||
|
13
Стрелок
04.02.09
✎
12:13
|
(12) как это "нафига"? а зачем он мне в процессах нужен?
|
|||
|
14
vde69
04.02.09
✎
12:16
|
BaseOLE = СоздатьОбъект("Word.Application");
BaseOLE.ScreenUpdating = 1; BaseOLE.Visible = 1; |
|||
|
15
Стрелок
04.02.09
✎
12:17
|
(14) это чо? к 10?
|
|||
|
16
dk
04.02.09
✎
12:19
|
(13) смеешься?
---
на название процедуры не смотри - это word :) |
|||
|
17
vde69
04.02.09
✎
12:19
|
(15) это показать "процесс", тоесть твой файл просто покажется
а можно проще КомандаСистемы(ИмяДокФайла); |
|||
|
18
Стрелок
04.02.09
✎
12:22
|
(17) при этом файл открывается "под" 1С. я уже пробовал ;)
|
|||
|
19
vde69
04.02.09
✎
12:24
|
Процедура гл_ОткрытьФайл(ЭлементСправочника) Экспорт
Если ЭлементСправочника.ДанныеФайла.Выбран() = 1 Тогда // сначало создадим уникальное имя файла и каталога Если СокрЛП(ЭлементСправочника.Расширение) = "" Тогда Сообщить("Не указано расширение файла"); Возврат; КонецЕсли; Если ПустаяСтрока(Константа.КаталогФайловЗаявки)=1 Тогда Сообщить("Не указан каталог для файлов заявки!"); Возврат; КонецЕсли; // имя файла сделаем из кода элемента и времени создания ПолноеИмяФайла = СокрЛП(Константа.КаталогВременныхФайлов)+?(Прав(СокрЛП(Константа.КаталогВременныхФайлов),1)="\","","\") + СтрЗаменить(ТекущееВремя(),":","") + "_" + СокрЛП(ЭлементСправочника.Код) + "_" + "." + СокрЛП(ЭлементСправочника.Расширение); ПолноеИмяФайла = СтрЗаменить(ПолноеИмяФайла,"""",""); //ПолноеИмяФайла = """" + ПолноеИмяФайла + """"; Попытка Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "BinFiles.dll") <> 1 Тогда Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "BinFiles.dll") <> 1 Тогда Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "BinFiles.dll") <> 1 Тогда Сообщить("Компонента BinFiles.dll не найдена!"); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Исключение Сообщить("Компонента BinFiles.dll не подключена! Вероятно у Вас не хватает прав на установку программ"); Возврат; КонецПопытки; Попытка Буфер=СоздатьОбъект("AddIn.BinFile"); Исключение Сообщить("Не удалось создать объект BinFile"); Возврат; КонецПопытки; Буфер.DebugMode = 1; Попытка Буфер.Create(ПолноеИмяФайла); Буфер.WriteHex(Буфер.Decompress(ЭлементСправочника.ДанныеФайла.Данные)); Буфер.Close(); Исключение Сообщить("Ошибка записи файла во временный каталог"); Возврат; КонецПопытки; ЗапуститьПриложение(ПолноеИмяФайла); КонецЕсли; КонецПроцедуры |
|||
|
20
Стрелок
04.02.09
✎
12:26
|
спасибо накидали много... посмотрю дома
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |