Имя: Пароль:
1C
1С v8
Формирование печатной формы MS Word из макета. Как выводить оди макет на несколько страниц
0 slnes
 
02.05.18
10:12
Делаю печатную форму которая формируется в MS Word, примерно вот так

Для н = 1 по 10 Цикл
        
        Макет = ПолучитьМакет("Макет");
        Word = Макет.Получить();
        
        Doc = Word.Application.Documents(1);
        Doc.Activate();  
        Doc.Content.Find.Execute("{Параметр}",Ложь,Истина,Ложь,,,Истина,,Ложь,"Параметр1");
    
        Word.Application.Visible = Истина;
        Word.Activate();
            
    КонецЦикла    

В результате открывается 10 документов.
Подскажите пожалуйста как вывести это в один документ ворд на 10 листов?
1 Chameleon1980
 
02.05.18
10:28
за цикл не пробовал выносить:

Doc = Word.Application.Documents(1);
Doc.Activate();  

?
2 Chameleon1980
 
02.05.18
10:28
Макет = ПолучитьМакет("Макет");
        Word = Макет.Получить();
        
        Doc = Word.Application.Documents(1);
        Doc.Activate();
3 Chameleon1980
 
02.05.18
10:28
Word.Application.Visible = Истина;
        Word.Activate();
4 Chameleon1980
 
02.05.18
10:29
а я не понял
ты чего вообще делаешь то?
5 Chameleon1980
 
02.05.18
10:34
макросы - начать запись - вставить разделитель - закончить запись - смотреть код макроса
6 Chameleon1980
 
02.05.18
10:43
Selection.InsertBreak Type:=wdPageBreak

wdPageBreak = 7 какой-то
7 slnes
 
02.05.18
10:46
(1)-(3) Параметр1 изменяется - забыл сказать, и вынос за цикл выведет документ один раз с первым значением параметра.
(4) Мне нужно как то после этого разделителя макет скопировать на новый лист, и потом вставить туда новый параметр
(6) что такое Selection? и что с этим делать непонятно
8 Chameleon1980
 
02.05.18
10:49
ну тогда тебе с нуля надоть искать примеры работы с Word
это о вопросе с "Selection", наример
9 slnes
 
02.05.18
10:50
(8) я кучу примеров нашел, но то метод не найден то ещё чего, мнеб рабочий примерчик для word 2010
10 Chameleon1980
 
02.05.18
10:51
11 Chameleon1980
 
02.05.18
10:51
//Получаем выделенную область
  Selection = Object.Application.Selection;
12 Chameleon1980
 
02.05.18
10:54
а просто
Doc.InsertBreak(7);

не пробовал?

ну и чепятай на каждом

или тебе параметры печати поменять может просто?
13 slnes
 
02.05.18
10:57
(10) читал у меня шаблон с параметрами уже готовый в макетах  Макет = ПолучитьМакет("Макет"); Word = Макет.Получить(); не подходит оно мне.
(12) от того что я вставлю разрыв страницы шаблон туда не перенесется и получится только первое значение параметра с 10 переносами строк
14 slnes
 
02.05.18
10:59
Надо как то так:
1. Скопировать шаблон
2. Вставить шаблон в документ
3. Заменить параметры
4. Вставить разрыв страницы
и опять с 2 -го
15 Chameleon1980
 
02.05.18
11:03
(14) ну значит некоторое выноси за цикл
раз у тебя 10 доков создалось
я не работая с водр программно и то смею это логически предположить. блин
обленился народ
16 Chameleon1980
 
02.05.18
11:04
ну и типовые посмотреть решения не?
17 Chameleon1980
 
02.05.18
11:10
может что-то типа запомнить все (область) перед заполнением
потом заполнить
потом вставить разделитель
вставить запомненное
заполнить вставленное
и т.д. ?
18 Chameleon1980
 
02.05.18
11:11
Sub CopyPaste()
'
' CopyPaste Ìàêðîñ
'
'
    Selection.Copy
    Selection.InsertBreak Type:=wdPageBreak
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
End Sub
19 Chameleon1980
 
02.05.18
11:12
wdFormatOriginalFormatting=16
20 slnes
 
02.05.18
11:32
Ничего не получается
Задам вопрос снова с исправлением
Делаю печатную форму которая формируется в MS Word, примерно вот так

Для н = 1 по 10 Цикл
        
        Макет = ПолучитьМакет("Макет");
        Word = Макет.Получить();
        
        Doc = Word.Application.Documents(1);
        Doc.Activate();  
        Doc.Content.Find.Execute("{Параметр}",Ложь,Истина,Ложь,,,Истина,,Ложь,"Параметр"+строка(н));
    
        Word.Application.Visible = Истина;
        Word.Activate();
            
    КонецЦикла    

В результате открывается 10 документов.
Подскажите пожалуйста как вывести это в один документ ворд на 10 листов?
21 Chameleon1980
 
02.05.18
11:40
ну блин.

видимо, это только в конце


        MSWord.Application.Visible = Истина;

        MSWord.Activate();
22 slnes
 
02.05.18
12:54
(21) ну нет тогда получим один {параметр1} на странице и только один раз.

Уже при втором проходе в документе не будет найден {Параметр}, т.к. он будет заменен на Параметр1 при первом проходе цикла
23 slnes
 
02.05.18
12:56
в (21) ошибся, вместо {параметр1} надо написать Параметр1
24 K1RSAN
 
02.05.18
14:07
(23) А нельзя сначала использовать ТабличныйДокумент, туда и разделители страниц и текст напихать, а потом то, что получилось вставить в Word документ?

Получается ты формируешь 10 раз в Word кусочек текста, а что мешает скомпановать 10 кусочков в один (с разделителями), и готовый кусман отправить в Word 1 раз?
25 slnes
 
02.05.18
14:15
(24) У меня там шаблон из 5 листов и 10 параметров, в реальном варианте перебирается результат запроса, это я сократил что бы много не читать. И шаблон у меня ворд уже есть. Мне бы содержимое шаблона скопировать и после разравы страницы вставлять и заполнять.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.