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

выгрузка в конкретную таблицу word

Автор kzman, 20 авг 2015, 09:31

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

kzman

Возникла задача сделать коммерческое предложение с выгрузкой в ворд, имеется макет актив документ, в документе 2 таблицы, первая с фиксированной структурой, заполняется параметрами, вторая динамическая, т.е должна прорисовываться из ТЧ Запасы с разным составом строк. Возникла проблема, не получается указать конкретную таблицу, вторую и соответственно прорисовать
Часть кода:
MSWord = ПолучитьМакет("КоммерческоеПредложение").Получить();

Документ = MSWord.Application.Documents(1);
Документ.Activate();

 

Попытка
Запрос = новый запрос;
Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
Запрос.Текст = "ВЫБРАТЬ
               | КоммерческоеПредложениеЗапасы.Номенклатура,
               | КоммерческоеПредложениеЗапасы.Количество,
               | КоммерческоеПредложениеЗапасы.ЕдиницаИзмерения,
               | КоммерческоеПредложениеЗапасы.Цена,
               | КоммерческоеПредложениеЗапасы.ПроцентСкидкиНаценки,
               | КоммерческоеПредложениеЗапасы.Сумма,
               | КоммерческоеПредложениеЗапасы.ИДВарианта,
               | КоммерческоеПредложениеЗапасы.Утвержден,
               | КоммерческоеПредложениеЗапасы.ИмяВарианта,
               | КоммерческоеПредложениеЗапасы.НомерСтроки
               |ИЗ
               | Документ.КоммерческоеПредложение.Запасы КАК КоммерческоеПредложениеЗапасы
               |ГДЕ
               | КоммерческоеПредложениеЗапасы.Ссылка В(&МассивОбъектов)
               | И КоммерческоеПредложениеЗапасы.Утвержден = ИСТИНА
               |
               |УПОРЯДОЧИТЬ ПО
               | КоммерческоеПредложениеЗапасы.НомерСтроки";

ЗапасыТаблица = Запрос.Выполнить().Выгрузить();

Для каждого условия из МассивОбъектов цикл
УстановитьПараметр(Документ,"<Дата>",Формат(условия.Дата,"ДФ=dd.MM.yyyy"));
УстановитьПараметр(Документ,"<Номер>",условия.Номер);
УстановитьПараметр(Документ,"<КонтЛицо>",строка(условия.КонтактноеЛицо));
УстановитьПараметр(Документ,"<Партнер>",строка(условия.Партнер));
УстановитьПараметр(Документ,"<КонтактноеИмя>",строка(условия.КонтактноеЛицо.CRM_Имя));
УстановитьПараметр(Документ,"<ИсходныеУсловия>",условия.ИсходныеУсловия);
УстановитьПараметр(Документ,"<ПорядокВыполненияРабот>",условия.ПорядокВыполненияРабот);
УстановитьПараметр(Документ,"<СуммаДокумента>",условия.СуммаДокумента);
УстановитьПараметр(Документ,"<Автор>",строка(условия.Автор));
//сообщить (условия.КонтактноеЛицо.наименование + "   " + условия.автор.наименование +"   " + условия.КонтактноеЛицоCRM_Имя);
Для каждого  запас из ЗапасыТаблица цикл
УстановитьПараметр(Документ,"<НомерСтроки>",строка(запас.НомерСтроки));
УстановитьПараметр(Документ,"<Номенклатура>",строка(запас.Номенклатура));
УстановитьПараметр(Документ,"<Количество>",строка(запас.Количество));
УстановитьПараметр(Документ,"<ЕдиницаИзмерения>",строка(запас.ЕдиницаИзмерения));
УстановитьПараметр(Документ,"<Цена>",строка(запас.Цена));
УстановитьПараметр(Документ,"<ПроцентСкидкиНаценки>",строка(запас.ПроцентСкидкиНаценки));
УстановитьПараметр(Документ,"<Сумма>",строка(запас.Сумма));

КонецЦикла;

КонецЦикла;

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


№   Содержание   Кол-воЕд изцена   %скидкисумма
<НомерСтроки><Номенклатура>   <Количество><ЕдиницаИзмерения><Цена><ПроцентСкидкиНаценки><Сумма>
         
                  


vitasw

Цитата: kzman от 20 авг 2015, 09:31УстановитьПараметр

А что за процедура такая? что делает?
А вообще,... думаю, что нужно рагребать БСП там точно есть примеры работы с таблицей в ворде.

kzman

Процедура УстановитьПараметр(Документ, Шаблон, Замена)
   Документ.Content.Find.Execute(Шаблон, Ложь, Истина, Ложь, , , Истина, , Ложь, Замена, 2);
КонецПроцедуры

замена параметра на текст

Дмитрий@

При помощи коллекции "Tables(Номер таблицы).Cell(Строка,Столбец)"

kzman

с примером было бы проще, но в любом случае помогли
к примеру, мож кому пригодиться:   Документ.Tables(2).Cell(НомерСтроки,1).Range.Text= запас.НомерСтроки;
можно тему закрывать

vitasw

А как строки в ворд добавляете?

Дмитрий@

Если в сам документ, то при помощи команды "Selection.TypeParagraph" переходишь на следующую строку. А как делать новые строки в таблице из 1с не знаю.

vitasw

А покажите пожалуйста скрином, что у вас получается, когда необходимо распечатать таблицу с несколькими строками

kzman

Цитата: vitasw от 20 авг 2015, 17:00
А покажите пожалуйста скрином, что у вас получается, когда необходимо распечатать таблицу с несколькими строками

Теги:

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

Рейтинг@Mail.ru

Поиск