|
Как собрать два документа ворд в один? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
20.12.13
✎
08:40
|
АктивныйДокумент = ПолучитьМакет("ТрудовойДоговор2009");
КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible = Истина; КомОбъект.Activate(); заменой этот шаблон изменяется и показывается настала необходимость пакетной печати как собрать все получившиеся документы ворда в один? |
|||
1
dk
20.12.13
✎
08:59
|
copy - paste - разрыв страницы - copy - paste - разрыв страницы - ...
|
|||
2
RomaH
naïve
20.12.13
✎
09:02
|
(1) а количество страниц как узнать?
|
|||
3
MiniMuk
20.12.13
✎
09:05
|
(2) зачем? ctrl+A ctrl+c ctrl+v
|
|||
4
RomaH
naïve
20.12.13
✎
09:42
|
а как вставить разрыв страницы именно в конец документа?
и как указать место куда вставлять то что скопировал? |
|||
5
RomaH
naïve
20.12.13
✎
09:49
|
вот вставить разрыв страницы:
Selection.InsertBreak но до Selection добраться? |
|||
6
тролль-провокатор
20.12.13
✎
09:50
|
||||
7
RomaH
naïve
20.12.13
✎
12:10
|
в общем почти работает
но ... в документе есть таблицы как корректно перенести и таблицы? КомОбъектПриемник = АктивныйДокумент.Получить(); КомОбъектПриемник.Activate(); КомОбъектПриемник.Application.Visible = Истина; ДокументПриемник = КомОбъектПриемник.Application.Documents(1); //КомОбъектПриемник.Application.Documents(1).Name = "Сборная"; ИндексДокумента = 1; Для каждого СтрокаТЧ Из СсылкаНаОбъект.РаботникиОрганизации Цикл ИндексДокумента = ИндексДокумента + 1; Сообщить(СтрокаТЧ.Сотрудник); КомОбъект = ПечатьТрудовогоДоговора(СтрокаТЧ.Сотрудник); Если КомОбъект <> Неопределено Тогда ДокументИсточник = КомОбъектПриемник.Application.Documents(1); КоличествоСтраниц = ДокументИсточник.ComputeStatistics(2); КомОбъект.Activate(); КомОбъект.Application.Visible = Истина; Для каждого Параграф Из ДокументИсточник.Paragraphs Цикл ДокументПриемник.Paragraphs.Add().Range.FormattedText = Параграф.Range; КонецЦикла; КомОбъект = Неопределено; КонецЕсли; КонецЦикла; Возврат КомОбъектПриемник; |
|||
8
RomaH
naïve
20.12.13
✎
12:14
|
||||
9
RomaH
naïve
20.12.13
✎
13:29
|
блин
в басике работает, а в 1С - нет ДокументПриемник.Range.FormattedText = ДокументИсточник.Range.FormattedText; в 1С говорит, что Range отсутсвует ДокументИсточник = КомОбъектПриемник.Application.Documents(1); |
|||
10
RomaH
naïve
23.12.13
✎
10:24
|
например макрос копирующий текущий документ в новый пять раз
Sub Copy2() Dim NewDoc As Document Dim SrcDoc As Document Dim p As Paragraph Set SrcDoc = ActiveDocument Set NewDoc = Documents.Add For i = 1 To 5 Set p = NewDoc.Paragraphs.Add p.Range.FormattedText = SrcDoc.Range.FormattedText If i < 5 Then p.Range.InsertBreak Type:=wdPageBreak If NewDoc.BuiltInDocumentProperties(wdPropertyPages) Mod 2 = 0 Then p.Range.InsertBreak Type:=wdPageBreak End If End If Next End Sub но в 1С для SrcDoc свойство Range отсутсвует |
|||
11
RomaH
naïve
23.12.13
✎
12:54
|
теперь другая проблема:
надо делить документ для двусторонней печати - т.е. если в документе не четное количество страниц - добавить одну пытаюсь посчитать количество страниц: ДокументИсточник = КомОбъект.Application.Documents(1); //КомОбъект.Activate(); //КомОбъект.Application.Visible = Истина; ДокументИсточник.Paragraphs(1).PageBreakBefore = Истина; КоличествоСтраниц = ДокументИсточник.BuiltInDocumentProperties(14).Value; КоличествоСтраниц1 = ДокументИсточник.ComputeStatistics(2); при нормальном выполнении кода - последние две строки выдают 3 а при прохождении через отладку на точке останова - 4 добавление паузы перед вычислением не помогает |
|||
12
RomaH
naïve
23.12.13
✎
12:56
|
а нет - пауза помогает
3 секунды |
|||
13
RomaH
naïve
23.12.13
✎
12:59
|
теперь вопрос
а как удалить/закрыть документы источники? ДокументИсточник = КомОбъект.Application.Documents(1); ДокументИсточник.Close(0); грубо говоря - не помогает |
|||
14
RomaH
naïve
23.12.13
✎
14:16
|
итог:
Функция ПечатьТрудовогоДоговораИзПриказа() Попытка АктивныйДокумент = ПолучитьМакет("МакетПриемник"); Исключение Сообщить(ОписаниеОшибки()); Сообщить("Не удалось создать объект ворда"); Возврат Неопределено; КонецПопытки; КомОбъект = АктивныйДокумент.Получить(); ДокументПриемник = КомОбъект; ЭтоПервыйдокумент = Истина; Для каждого СтрокаТЧ Из СсылкаНаОбъект.РаботникиОрганизации Цикл Состояние("Формируем трудовой договор " + СтрокаТЧ.Сотрудник); КомОбъект = ПечатьТрудовогоДоговора(СтрокаТЧ.Сотрудник); Если КомОбъект <> Неопределено Тогда ДокументИсточник = КомОбъект; ДокументИсточник.Paragraphs(1).PageBreakBefore = Истина; ДокументИсточник.Repaginate(); КоличествоСтраниц = ДокументИсточник.BuiltInDocumentProperties(14).Value; Если КоличествоСтраниц%2 = 0 Then Иначе ДокументИсточник.Range().Collapse(0); НовыйПараграфИст = ДокументИсточник.Paragraphs.Add(); НовыйПараграфИст.Range.InsertBreak(7); КонецЕсли; Если ЭтоПервыйдокумент Тогда НовыйПараграф = ДокументПриемник.Paragraphs(1); Иначе НовыйПараграф = ДокументПриемник.Paragraphs.Add(); КонецЕсли; НовыйПараграф.Range().FormattedText = ДокументИсточник.Range().FormattedText; ЭтоПервыйдокумент = Ложь; ДокументИсточник.Close(0); КонецЕсли; КонецЦикла; Возврат ДокументПриемник; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |