helpf.pro
Регистрация

v8: Колонтитулы в Word

ivan232
29.11.2011 06:53Прочитано: 24041
Доброго времени суток!
Подскажите, пожалуйста, как решить проблему: Есть шаблон в Word, необходимо изменить нижний колонтитул(подставить данные из 1С)???
Рабочий код:
Код 1C v 8.х
 	Попытка
Объект = ПолучитьCOMОбъект(ПутьКФайлу);
// Покажем документ. Для красоты.
Объект.Application.Visible = 1;

Документ = Объект.Application.Documents(1);
Документ.Activate();
//Определим имена
Заказчик = "Петр Иванович КакВасТам";
Исполнитель = "Help1C.com - Помощник по 1С";

// Заменить заранее определенные ключевые конструкции на требуемый текст.
Документ.Content.Find.Execute("[Заказчик]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик, 2);
Документ.Content.Find.Execute("[Исполнитель]", Ложь, Истина, Ложь, , , Истина, , Ложь, Исполнитель, 2);
// Далее аналогично для остальных ключевых конструкций.
// ...

// Делаем видимым приложение и активизируем его.
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
Заранее большое спасибо! )
Изменено 29.11.11 06:53:59
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
29.11.2011 11:49Ответ № 1
(0) ivan232, вот код пример работы c WORDом, только он для 7.7, но впринципе все тоже! как сделаешь, выложи пожалуйста получившийся у тебя код *13
Код 1C v 7.x
 Попытка
Application=СоздатьОбъект("Word.Application");
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Сообщить("Возможно, MS Word не установлен на этом компьютере.");
Возврат;
КонецПопытки;
// , , DocumentType:=0
//Создание листа документа
Application.Documents.Add();
WorkBook=Application.ActiveDocument;
//Получение окна
Window=WorkBook.Windows(1);
//Установка невидимости окна для убыстрения вывода
Window.Visible=1;
//не выдавать предупреждений
Application.DisplayAlerts=0;
//Установка ориентации листа
WorkBook.PageSetup.Orientation = 0;
//Это портретная, альбомная 1
//Установка размера полей
WorkBook.PageSetup.TopMargin = 28; //Размер в поинтах, 1 СМ=28pt
WorkBook.PageSetup.BottomMargin = 28;
WorkBook.PageSetup.LeftMargin = 28;
WorkBook.PageSetup.RightMargin = 28;
//Установка высоты колонтитулов
WorkBook.PageSetup.HeaderDistance = 28; //Размер в поинтах, 1 СМ=28pt
WorkBook.PageSetup.FooterDistance = 28;
//Установка зеркальных полей
WorkBook.PageSetup.MirrorMargins = False;
//Установка параметров абзаца
Application.S_election.ParagraphFormat.LeftIndent = 10;//Абзац, отступ слева
Application.S_election.ParagraphFormat.RightIndent = 10;//Абзац, отступ Справа
Application.S_election.ParagraphFormat.SpaceBefore = 10;//Отступ до абзаца
Application.S_election.ParagraphFormat.SpaceBeforeAuto = False; //не автомат
Application.S_election.ParagraphFormat.SpaceAfter = 10;//Отступ после абзаца
Application.S_election.ParagraphFormat.SpaceAfterAuto = False;//не автомат
Application.S_election.ParagraphFormat.LineSpacingRule = 1;//Междустрочный интервал 0-одинарный,1-полуторный,2-двойной
Application.S_election.ParagraphFormat.FirstLineIndent = 28;//Отступ первой строки абзаца
Application.S_election.ParagraphFormat.Alignment = 3;//Выравнивание 0-по левому краю, 1-по центру, 2-по правому краю, 3-по ширине
//Установка шрифта для печати
Application.S_election.Font.Name = "Times New Roman";
Application.S_election.Font.Size = 14;
//Ввод текста
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так алее... ");
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так далее... ");
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так далее... ");
//Ввод абзаца
Application.S_election.TypeParagraph();
//Ввод текста
Application.S_election.Font.Name = "Courier New";
Application.S_election.Font.Size = 14;
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так далее... ");
Application.S_election.Font.Bold = 1;
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так далее... ");
Application.S_election.Font.Bold = 0;
Application.S_election.TypeText("Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. Просто текст. И так далее... ");
Application.S_election.TypeParagraph();
//Запись и форматирование верхнего колонтитула
WorkBook.Sections(1).Headers(1).Range.ParagraphFormat.Alignment = 2;
WorkBook.Sections(1).Headers(1).Range.Font.Name = "Times New Roman";
WorkBook.Sections(1).Headers(1).Range.Font.Bold = 1;
WorkBook.Sections(1).Headers(1).Range.Font.Size = 8;
WorkBook.Sections(1).Headers(1).Range.Font.Size = 8;
WorkBook.Sections(1).Headers(1).Range.Text="Верхний колонтитул";
//Запись и форматирование нижнего колонтитула
WorkBook.Sections(1).Footers(1).Range.ParagraphFormat.Alignment = 0;
WorkBook.Sections(1).Footers(1).Range.Font.Name = "Times New Roman";
WorkBook.Sections(1).Footers(1).Range.Font.Italic = 1;
WorkBook.Sections(1).Footers(1).Range.Font.Size = 8;
WorkBook.Sections(1).Footers(1).Range.Font.Size = 8;
WorkBook.Sections(1).Footers(1).Range.Text="Нижний колонтитул";
//Вставка и форматирование таблицы
WorkBook.Tables.Add(WorkBook.Paragraphs(Workbook.Paragraphs.Count()).Range,3,2);
WorkBook.Tables(1).Range.S_elect();
Application.S_election().Style = "Сетка таблицы";
Application.S_election.Tables(1).Columns(1).Width = 97.55;
Application.S_election.Tables(1).Columns(2).Width = 446.5;
Application.S_election.ParagraphFormat.LeftIndent = 0;//Абзац, отступ слева
Application.S_election.ParagraphFormat.RightIndent = 0;//Абзац, отступ Справа
Application.S_election.ParagraphFormat.SpaceBefore = 3;//Отступ до абзаца
Application.S_election.ParagraphFormat.SpaceBeforeAuto = False; //не автомат
Application.S_election.ParagraphFormat.SpaceAfter = 0;//Отступ после абзаца
Application.S_election.ParagraphFormat.SpaceAfterAuto = False;//не автомат
Application.S_election.ParagraphFormat.LineSpacingRule = 0;//Междустрочный интервал 0-одинарный,1-полуторный,2-двойной
Application.S_election.ParagraphFormat.FirstLineIndent = 0;//Отступ первой строки абзаца
Application.S_election.ParagraphFormat.Alignment = 1;//Выравнивание 0-по левому краю, 1-по центру, 2-по правому краю, 3-по ширине
//Заполнения таблицы
WorkBook.Tables(1).Cell(1,1).Range.Font.Name = "Times New Roman";
WorkBook.Tables(1).Cell(1,1).Range.Font.Size = 8;
WorkBook.Tables(1).Cell(1,1).Range.Font.Bold = 1;
WorkBook.Tables(1).Cell(1,1).Range.Text = "Это первая строка, первая колонка";
WorkBook.Tables(1).Cell(1,1).Range.Font.Name = "Times New Roman";
WorkBook.Tables(1).Cell(1,1).Range.Font.Size = 8;
//Форматирование ячейки таблицы
WorkBook.Tables(1).Cell(1,2).Range.Font.Name = "Times New Roman";
WorkBook.Tables(1).Cell(1,2).Range.Font.Size = 8;
WorkBook.Tables(1).Cell(1,2).Range.Font.Bold = 1;
//Вставка таблицы в ячейку
WorkBook.Tables(1).Cell(1,2).Range.S_elect();
Application.S_election.TypeParagraph();
//Application.S_election.TypeParagraph();
//Application.S_election.TypeParagraph();
//Application.S_election.TypeParagraph();
WorkBook.Tables(1).Cell(1,2).Range.S_elect();
Application.Options.DefaultBorderLineStyle=2;
qwer=Application.ActiveDocument.Tables.Add(Application.S_election().Range,3,9,9);
qwer.Range.S_elect();
Application.S_election().Borders.InsideLineStyle=2;
//WorkBook.Tables(2).Cell(1,1).Range.Font.Name = "Times New Roman";
//WorkBook.Tables(2).Cell(1,1).Range.Font.Size = 8;
//WorkBook.Tables(2).Cell(1,1).Range.Font.Bold = 1;
//WorkBook.Tables(2).Cell(1,1).Range.Text = "Это полная ываыва";
//Application.S_election.MoveDown(7,7);
////***************************************
//Application.S_election.TypeParagraph();
//
//WorkBook.Tables.Add(WorkBook.Paragraphs(Workbook.Paragraphs.Count()).Range,3,2);
//WorkBook.Tables(2).Range.S_elect();
//Application.Options.DefaultBorderLineStyle=2;
//Application.S_election().Borders.InsideLineStyle=2;
////Application.S_election().Style = "Сетка таблицы";
//
//Application.S_election.Tables(1).Columns(1).Width = 97.55;
//Application.S_election.Tables(1).Columns(2).Width = 446.5;
////
//Application.S_election.ParagraphFormat.LeftIndent = 0;//Абзац, отступ слева
//Application.S_election.ParagraphFormat.RightIndent = 0;//Абзац, отступ Справа
//Application.S_election.ParagraphFormat.SpaceBefore = 3;//Отступ до абзаца
//Application.S_election.ParagraphFormat.SpaceBeforeAuto = False; //не автомат
//Application.S_election.ParagraphFormat.SpaceAfter = 0;//Отступ после абзаца
//Application.S_election.ParagraphFormat.SpaceAfterAuto = False;//не автомат
//Application.S_election.ParagraphFormat.LineSpacingRule = 0;//Междустрочный интервал 0-одинарный,1-полуторный,2-двойной
//Application.S_election.ParagraphFormat.FirstLineIndent = 0;//Отступ первой строки абзаца
//Application.S_election.ParagraphFormat.Alignment = 1;//Выравнивание 0-по левому краю, 1-по центру, 2-по правому краю, 3-по ширине
//
//////Заполнения таблицы
//WorkBook.Tables(2).Cell(1,2).Range.Font.Name = "Times New Roman";
//WorkBook.Tables(2).Cell(1,2).Range.Font.Size = 8;
//WorkBook.Tables(2).Cell(1,2).Range.Font.Italic = 1;
//WorkBook.Tables(2).Cell(1,2).Range.Text = "Это первая строка, вторая колонка";
Application.Visible=1;
Window.Visible=1;

!!! В слове S_election убери символ _
Изменено 29.11.11 11:56:51
ivan232
29.11.2011 18:30Ответ № 2
Проблему решил добавив следующую строку:
Код 1C v 8.х
 Документ.Sections(1).Footers(1).Range.Find.Execute("[НашаОрганизация]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик, 2);   

Спасибо E_Migachev
djserega
04.08.2021 15:51Ответ № 3

Может кому пригодится: иногда колонтитулы различаются, тогда надо добавить

Код 1C v 8.х
 Документ.Sections(1).Footers(2).Range.Find.Execute("[НашаОрганизация]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик, 2);   
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.