HelpF.pro

Печать табличной части документа в Word'e

Вот пример кода создания и заполнения таблиц(пример для 7.7, в 8.х заменить первую строку на МСВорд Новый COMОбъект("Word.Application")):

Код 1C v 7.x
   МСВорд = СоздатьОбъект("Word.Application"); 
	Документ = МСВорд.Documents;
	Документ.Add();
	Документ = МСВорд.ActiveDocument();
	Документ.Paragraphs.Add();
	Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
    //Добавим таблицу фиксированного размера 3х2
	Документ.Tables.Add(Диапазон,3,2);
	Документ.Tables(1).Range.S_elect(); 
	Выбор = МСВорд.S_election();
	Выбор.Style = "Сетка таблицы";
	//Установим ширину обоих колонок по 8 см
	Документ.Tables(1).Columns(1).Width= МСВорд.CentimetersToPoints(8);
	Документ.Tables(1).Columns(2).Width= МСВорд.CentimetersToPoints(8);
	//Заполнение
	Документ.Tables(1).Cell(1,1).Range.Text = "Это первая сирока, первая колонка";
	Документ.Tables(1).Cell(2,1).Range.Text = "";
	Документ.Tables(1).Cell(3,1).Range.Text = "";
	Документ.Tables(1).Cell(1,2).Range.Text = "";
	Документ.Tables(1).Cell(2,2).Range.Text = "";
	Документ.Tables(1).Cell(3,2).Range.Text = "Это третья строка, вторая колонка";

    //Добавим таблицу с произвольным количеством строк, для примера возьмем 4 колонки
	//Сначала выведем заголовок таблицы
	Документ.Paragraphs.Add();
	Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
	Документ.Tables.Add(Диапазон,1,4);
	Документ.Tables(2).Range.S_elect(); 
	Выбор = МСВорд.S_election();
	Выбор.Style = "Сетка таблицы";
    Выбор.Rows.AllowBreakAcrossPages = 0; 
	//Зададим ширину колонок
	Документ.Tables(2).Columns(1).Width= МСВорд.CentimetersToPoints(2);
	Документ.Tables(2).Columns(2).Width= МСВорд.CentimetersToPoints(4);
	Документ.Tables(2).Columns(3).Width= МСВорд.CentimetersToPoints(4);
	Документ.Tables(2).Columns(4).Width= МСВорд.CentimetersToPoints(10);
	//Заполнение шапки таблицы
	Документ.Tables(2).Cell(1,1).Range.Paragraphs(1).Alignment = 1;
	Документ.Tables(2).Cell(1,1).Range.Text = "№";
	Документ.Tables(2).Cell(1,2).Range.Paragraphs(1).Alignment = 1;
	Документ.Tables(2).Cell(1,2).Range.Text = "Колонка 2";
	Документ.Tables(2).Cell(1,3).Range.Paragraphs(1).Alignment = 1;
	Документ.Tables(2).Cell(1,3).Range.Text = "Колонка 3";
	Документ.Tables(2).Cell(1,4).Range.Paragraphs(1).Alignment = 1;
	Документ.Tables(2).Cell(1,4).Range.Text = "Примечание";

        //Для документа можно так цикл организовать:
        //Предположим, что Док - это документ, тогда
        Для А =1 По Док.КоличествоСтрок() Цикл
	        Док.ПолучитьСтрокуПоНомеру(А);
        	Выбор.I_nsertRowsBelow(1); 
	        Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
        	Документ.Tables(2).Cell(А+1,2).Range.Text = Док.РеквизитТабличнойЧастиДокумента1;
	        Документ.Tables(2).Cell(А+1,3).Range.Text = Док.РеквизитТабличнойЧастиДокумента2;
        	Документ.Tables(2).Cell(А+1,4).Range.Text = Док.РеквизитТабличнойЧастиДокумента3;
        КонецЦикла;

       //или выведем таблицу по таблице значений
	Для А = 1 По ТЗ.КоличествоСтрок() Цикл
    	//Добавим строку в таблицу
		Выбор.I_nsertRowsBelow(1); 
		Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
		Документ.Tables(2).Cell(А+1,2).Range.Text = ТЗ.ПолучитьЗначение(А,1);
		Документ.Tables(2).Cell(А+1,3).Range.Text = ТЗ.ПолучитьЗначение(А,2);
		Документ.Tables(2).Cell(А+1,4).Range.Text = ТЗ.ПолучитьЗначение(А,3);
	КонецЦикла; 

        //Запишем Документ
	Документ.SaveAs("ПутьИИмяДокумента",0); 
	Документ.Close();


ТЗ - это таблица значений.
Для документа можно так цикл организовать:
Предположим, что Док - это документ, тогда
Код 1C v 8.2 УП
 Для А =1 По Док.КоличествоСтрок() Цикл
	Док.ПолучитьСтрокуПоНомеру(А);
	Выбор.I_nsertRowsBelow(1); 
	Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
	Документ.Tables(2).Cell(А+1,2).Range.Text = Док.РеквизитТабличнойЧастиДокумента1;
	Документ.Tables(2).Cell(А+1,3).Range.Text = Док.РеквизитТабличнойЧастиДокумента2;
	Документ.Tables(2).Cell(А+1,4).Range.Text = Док.РеквизитТабличнойЧастиДокумента3;
КонецЦикла;   

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/540.html