Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:46

Работа с таблицей в word из 1с 8.3

Автор НикеНэйм, 20 мар 2018, 17:53

0 Пользователей и 1 гость просматривают эту тему.

НикеНэйм

имеется макет актив документ, в документе 2 таблицы. Нужно заполнить вторую таблицу из Документа, при чем у этой таблицы не фиксированное значение количества строк.
Возникла проблема, не получается заполнить таблицу.:dfbsdfbsdf:
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
Договор = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Договор");
//Массив = Новый Массив(5);
MSWord = Договор.Получить();

ДатаДоговора = Объект.Дата;
НомерДоговора = Объект.Номер;
НаименованиеПроекта = Объект.НаименованиеПроекта;

Попытка
MSWord.Application.Visible = 0;
Word = MSWord.Application;
Документ = Word.Documents(1);
Документ.Activate();

Замена = Документ.Content.Find;
Замена.Execute("<Naimenovanie>", Ложь, Истина, Ложь, , , Истина, , Ложь, "" + НаименованиеПроекта+ "");
Замена = Документ.Content.Find;
Замена.Execute("<NomerDogovora>", Ложь, Истина, Ложь, , , Истина, , Ложь, "" + НомерДоговора+ "");
Замена = Документ.Content.Find;
Замена.Execute("<data>", Ложь, Истина, Ложь, , , Истина, , Ложь, "" + ДатаДоговора+ "");


Word.Application.Visible = Истина;
Документ.Activate();
Исключение
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Word.Application.Quit();
КонецПопытки;
КонецПроцедуры


ПереченьРабот - из данной табличной части необходимо вставить параметры в динамическую. В макете имеет вид




Наименование работыИсполнительРезультат
1234
<№><NaimenovanieRabot><Ispolnitel><Result>

Артур

Ищите на инфостарие примеры

НикеНэйм

Цитата: Артур от 20 мар 2018, 19:24
Ищите на инфостарие примеры
Ответы от 2010г, очень актуально)) у меня не получилось реализовать
Добавлено: 20 мар 2018, 21:47


теперь возникла проблема с помещением текста в ячейки
MSWord.ActiveWindow.Selection.GoTo(-1, , ,"Rabot");
Для каждого ТекСтр Из Объект.ПереченьРабот Цикл
НаименованиеЗадачи1 = СокрЛП(ТекСтр.НаименованиеЗадачи);
Исполнитель1 = СокрЛП(ТекСтр.Исполнитель);
Результат1 = СокрЛП(ТекСтр.Результат);

MSWord.ActiveWindow.Selection.TypeText(НаименованиеЗадачи1);
MSWord.ActiveWindow.Selection.TypeText("   ");
MSWord.ActiveWindow.Selection.TypeText(Исполнитель1);
MSWord.ActiveWindow.Selection.TypeText("   ");
MSWord.ActiveWindow.Selection.TypeText(Результат1);
MSWord.ActiveWindow.Selection.TypeParagraph();
КонецЦикла;



oleg-x

Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

НикеНэйм


ДмитрийФ


Документ = Word.Documents.ADD(имяВременногоФайла);
Курсор =  Документ.Application.Selection;


Для Каждого Таб из Документ.Tables цикл
Если СтрНайти(Таб.Cell(1, 1).Range.Text,"п/п") > 0 И СтрНайти(Таб.Cell(1, 2).Range.Text,"ФИО") > 0 Тогда
//... Заполнение таблицы

Таб.Rows(Таб.Rows.Count-1).Select();  //Выделям строку, на место которой будем вставлять новые строки
Строка = Таб.Rows.Count;
ИтогоКоличество = 0;
Для Каждого стр Из Объект.Начисления Цикл
Курсор.InsertRowsBelow(1);
Таб.Cell(Строка, 1).Range.Text = стр.НомерСтроки;
Таб.Cell(Строка, 2).Range.Text = Строка(стр.Сотрудник);
Количество = Строка(Окр(стр.Количество));
Таб.Cell(Строка, 3).Range.Text =Количество;
Таб.Cell(Строка, 4).Range.Text = стр.Результат;
Строка = Строка + 1;
ИтогоКоличество = ИтогоКоличество + Количество;
КонецЦикла;
Таб.Rows(2).Delete();
КонецЕсли;
КонецЦикла;

вот кусок рабочего кода из внешнего отчета,
перебираются все таблицы и проверяется условие на заголовок колонок, если она то добавляем строки и заполняем данными

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск