|
1c +Word | ☑ | ||
---|---|---|---|---|
0
Виль
04.06.13
✎
19:52
|
Что лучше - загружать шаблон как актив-документ или считывать как файл с диска? Работают несколько операторов. Обращаются регулярно к актив-документу - то печать глючит, то база зависает, процесс word в памяти подвисает и не выгружается.
|
|||
1
Uzumaki
04.06.13
✎
20:49
|
Я открывал как файл через ole сервер, там были расставлены метки которые заполнялись из 1ски. Проблема в том, для корректной работы ворд в сеансе винды должен был быть закрытым, с этим глюком я не разобрался. Т.к. работал только один пользователь в этой базе, разделенный доступ реализовал копированием шаблона, но на практике не проверял.
|
|||
2
Икогнито
04.06.13
✎
20:50
|
(0) в конфигурации 1С:Риэлтор есть просто гениальный вариант заполнения шаблонов Word на основе СКД.
И строки и табличные части поддерживает. |
|||
3
Икогнито
04.06.13
✎
20:51
|
+(2) шаблон можно править интерактивно, он сам потом загружается в БД
|
|||
4
Икогнито
04.06.13
✎
20:51
|
+(3) и никаких глюков!
|
|||
5
Torquader
04.06.13
✎
21:59
|
(1) Последние версии Word могут работать сразу в нескольких процессах, и создание документа по OLE не пересекается с открытыми документами.
P.S. но, проще всего написать шаблон, в который передавать данные из файла, а код заполнения шаблона выполнять при открытии - получается гарантия, что ничего не зависнет, так как при активном использовании буфера OLE происходит фрагментация памяти и, как следствие, отказ в очередном вызове (особенно, если через буфер таскать большие объёмы данных). |
|||
6
Uzumaki
04.06.13
✎
22:48
|
(5) То есть вордовский файл (шаблон) в котором скрипт чтения файла с данными сформированного 1ской перед открытием этого шаблона?
|
|||
7
Виль
04.06.13
✎
23:27
|
При печати выходят пустые листы - ткните что не так
Word = Новый COMОбъект("Word.Application"); Word.Visible =1; КаталогВремФайлов="c:\1\Шаблон1Б.dot"; //открываем сброшенный файл Word.Documents.Open(КаталогВремФайлов); Документ = Word.ActiveDocument(); Попытка Word.Selection.WholeStory(); Word.Selection.Copy(); // Замена = Документ.Content.Find; Замена.Execute("<Прочее>", Ложь, Истина, Ложь, , , Истина, , Ложь,СтрокаПр,2); Замена = Документ.Content.Find; Замена.Execute("<777>", Ложь, Истина, Ложь, , , Истина, , Ложь,СтрокаПр1,2); Документ.PrintOut(0, 0, 0, "", "", "", 0, 1,,,,,,,2,1); //Ожидание окончания отправки на печать... Пока Word.Application.BackgroundPrintingStatus<>0 Цикл ///Предупреждение("Ожидание",1); Сообщить("Ожидание") КонецЦикла; //Word.Application.Quit(); Исключение // Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); Word.Application.Quit(); КонецПопытки; Документ.Close(0); Word.Application.Quit(); Word=0; |
|||
8
Uzumaki
05.06.13
✎
00:01
|
А что выводится на печать? Выделенный фрагмент который был изменен?
Я создавал новый лист в него вставлял скопированный текст из шаблона и все там менял, в итоге у пользователя оставался открытый новый файл (потому как обязательно они правились из-за специфики договоров) Функция глОфДокОткрыть(Word, ИмяФайла) Экспорт Word = CreateObject("Word.Application"); Word.Visible = 1; Возврат Word.Documents.Open (КаталогИБ() + "mxls\" + ИмяФайла); КонецФункции Процедура глОфДокВставитьТекст(Word, спТекст) Экспорт Для Н = 1 По спТекст.РазмерСписка() Цикл Текст = ""; Word.Selection.GoTo(-1,,, спТекст.ПолучитьЗначение(Н, Текст)); Word.Selection.TypeText(Текст); КонецЦикла; КонецПроцедуры Процедура генерации файла: спТекст = СоздатьОбъект("СписокЗначений"); спТекст.ДобавитьЗначение("SomeLabel", "Hello, Word!"); Word = 0; Window = глОфДокОткрыть(Word, "wrdtmplts\" + ИмяФайла); Word.Selection.WholeStory (); Word.Selection.Copy(); Word.Documents.Add(); Word.Selection.PasteAndFormat(0); Window.Close(0); глОфДокВставитьТекст(Word, спТекст); |
|||
9
Виль
05.06.13
✎
00:06
|
Что-то с методом PrintOut() если параметры убираю - листы выходят заполненными
|
|||
10
Uzumaki
05.06.13
✎
00:10
|
||||
11
Виль
05.06.13
✎
00:13
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |