|
Помогите с Word шаблоном | ☑ | ||
---|---|---|---|---|
0
Tumakota
03.03.13
✎
21:29
|
Есть шаблон ворда, он заполняется все нормально, в конце есть приложение в котором находится таблица, мне надо ее заполнить из документа счет на оплату, который я выбираю. Пишу вот такой вот код
Если ТипЗнч(Документ) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") тогда Для каждого Стр из Документ.Товары цикл Замена.Execute("[Номенклатура]", , , , , , , , , Стр.Номенклатура, 2); Замена.Execute("[Цена]", , , , , , , , , Стр.Цена, 2); Замена.Execute("[Кол]", , , , , , , , , стр.Количество, 2); Замена.Execute("[Сумма]", , , , , , , , , стр.Сумма, 2); Замена.Execute("[НомерСтроки]", , , , , , , , , стр.НомерСтроки, 2); КонецЦикла; КонецЕсли; Пишет исключительная ситуация с объектом Execute, подскажите как мне правильно таблицу заполнить в ворде, чтобы автоматически добавлялись новые строчки если надо |
|||
1
Мисти
03.03.13
✎
22:21
|
v8: Как при выводе в шаблон ворд сделать цикл? - вот там мне совет давали, правда, я им еще не воспользовалась.
|
|||
2
Wobland
04.03.13
✎
06:59
|
это ты так хочешь первой строкой ТЧ всё поназаменять? цикл тогда ни к чему
|
|||
3
Tumakota
04.03.13
✎
08:03
|
Падеж = 2;
Пол = 0 ; КомпонентаСклоненияФИО = СклонениеФИО(ФИО, Падеж, пол); Падеж = 2; Пол = 0; КомпонентаСклоненияКонтрагента = СклонениеКонтрагента(ФИОк, Падеж, пол); // Получим объект Microsoft Word из макета ОбъектВорд = ПолучитьМакет("ДоговорПоставка").Получить(); // Получим документ из объекта и активируем его WD = ОбъектВорд.Application.Documents(1); WD.Activate(); СуммаПредоплатыНДС = Число(СуммаНДС=Строка(Условие)); // Поиск и замена маркеров Замена = WD.Content.Find; Замена.Execute("[Номер]", , , , , , , , , Номер, 2); Замена.Execute("[Дата]", , , , , , , , , Формат(Дата,"ДЛФ=DD"), 2); Замена.Execute("[Организация]", , , , , , , , , Организация.НаименованиеПолное, 2); Замена.Execute("[Должность]", , , , , , , , , Должность.Наименование+"а", 2); Замена.Execute("[ФИО]", , , , , , , , , КомпонентаСклоненияФИО, 2); Замена.Execute("[Основание]", , , , , , , , , Основание.Наименование, 2); Замена.Execute("[Контрагент]", , , , , , , , , Контрагент.НаименованиеПолное, 2); Замена.Execute("[ДолжностьКонтрагента]", , , , , , , , , ДолжностьК+"а", 2); Замена.Execute("[ФИОКонтрагента]", , , , , , , , , КомпонентаСклоненияКонтрагента, 2); Замена.Execute("[ОснованиеКонтрагента]", , , , , , , , , ОснованиеК.Наименование, 2); Замена.Execute("[ПредметДоговора]", , , , , , , , , ПредметДоговора, 2); Замена.Execute("[периодПо]", , , , , , , , , Строка(Формат(ПериодПо, "ДЛФ=Д")), 2); Замена.Execute("[Сумма]", , , , , , , , , Строка(Сумма), 2); Замена.Execute("[НДС]", , , , , , , , , Строка(СтавкаНДС), 2); Замена.Execute("[СуммаНДС]", , , , , , , , , Строка(СуммаНДС), 2); Замена.Execute("[Пропись]", , , , , , , , , ЧислоПрописью(Сумма,,"Рубль, рублей, рубля, м, копейка, копейки, копеек, ж, 2"), 2); Замена.Execute("[ПрописьНДС]", , , , , , , , , ЧислоПрописью(СуммаНДС,,"Рубль, рублей, рубля, м, копейка, копейки, копеек, ж, 2"), 2); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Объект.Ссылка, | КонтактнаяИнформация.Вид.Представление, | КонтактнаяИнформация.Представление |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект.Ссылка = &Организация"; Запрос.УстановитьПараметр("Организация", Организация); Рез = Запрос.Выполнить().Выбрать(); Пока Рез.Следующий() цикл Замена.Execute("[Адрес]", , , , , , , , , Рез.Представление, 2); КонецЦикла; Замена.Execute("[ИНН]", , , , , , , , , ИННо, 2); Замена.Execute("[КПП]", , , , , , , , , КППо, 2); Замена.Execute("[БИК]", , , , , , , , , СчетОрг.Банк.Код, 2); Замена.Execute("[ОГРН]", , , , , , , , , Организация.ОГРН, 2); Замена.Execute("[БАНК]", , , , , , , , , СчетОрг.Банк.Наименование, 2); Замена.Execute("[КорСчет]", , , , , , , , , СчетОрг.Банк.КоррСчет, 2); Замена.Execute("[Счет]", , , , , , , , , СчетОрг.НомерСчета, 2); Замена.Execute("[ОКПОо]", , , , , , , , , Организация.КодПоОКПО, 2); Замена.Execute("[ФИОО]", , , , , , , , , ФамилияИнициалыФизЛица(ФИО), 2); Запрос1 = Новый Запрос; Запрос1.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Объект.Ссылка КАК ОбъектСсылка1 |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект.Ссылка = &Контрагент"; Запрос1.УстановитьПараметр("Контрагент", Контрагент); Выборка = Запрос1.Выполнить().Выбрать(); Пока Выборка.Следующий() цикл Замена.Execute("[ЮрАдрес]", , , , , , , , , Выборка.Представление, 2); КонецЦикла; Замена.Execute("[ИННк]", , , , , , , , , ИННк, 2); Замена.Execute("[КППк]", , , , , , , , , КППо, 2); Замена.Execute("[БАНКк]", , , , , , , , , Контрагент.ОсновнойБанковскийСчет.Банк.Наименование, 2); Замена.Execute("[БИК]", , , , , , , , , Контрагент.ОсновнойБанковскийСчет.Банк.Код, 2); Замена.Execute("[ОГРНК]", , , , , , , , , ОГРНк, 2); Замена.Execute("[ОКПО]", , , , , , , , , Контрагент.КодПоОКПО, 2); Замена.Execute("[КорСчетКонтрагента]", , , , , , , , , Контрагент.ОсновнойБанковскийСчет.Банк.КоррСчет, 2); Замена.Execute("[СЧЕТконтрагента]", , , , , , , , , Контрагент.ОсновнойБанковскийСчет.НомерСчета, 2); Замена.Execute("[ФИОКонтрагентаК]", , , , , , , , , ФамилияИнициалыФизЛица(ФИОк), 2); WD.selection.MoveDown(,12); WD.Paragraphs.Add(); //Word.Selection.MoveRight(,); Табл= WD.Selection.Range; //Формируем заголовок: Табл.InsertAfter("№ п/п*Наименование*Кол-во*Цена,руб.*Сумма,руб."); Табл.InsertParagraphAfter(); //сама таблица Если ТипЗнч(Документ) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") тогда й = 1; Для Каждого строка из Документ.Товары Цикл Табл.InsertAfter(Строка(й) + "*" + строка.Номенклатура+"*"+Строка.Количество+"*"+Строка.Цена+"*"+строка.Сумма); Табл.InsertParagraphAfter(); й = й + 1; КонецЦикла; КонецЕсли; // Вывод документа WD.Application.Visible = Истина; WD.Activate(); Выдается ошибка "{Справочник.а_ЗаключениеДоговоровИсходящий.Форма.ФормаЭлемента(635)}: Поле объекта не обнаружено (selection) WD.selection.MoveDown(,12);" Подскажите что не так, делаю |
|||
4
Wobland
04.03.13
✎
08:13
|
очевидно, в WD получаешь то, чего не ожидаешь
|
|||
5
Tumakota
04.03.13
✎
09:07
|
Что не кто не может подсказать почему ошибка:)
|
|||
6
Tumakota
04.03.13
✎
12:09
|
WD.Paragraphs.Add();
Table = WD.Tables.Add(WD.Paragraphs.Last.Range(),1, 6,1,2); // Устанавливаем ширину колонок Table.Columns(1).PreferredWidth=10; Table.Columns(2).PreferredWidth=50; Table.Columns(3).PreferredWidth=10; Table.Columns(4).PreferredWidth=10; Table.Columns(5).PreferredWidth=10; Table.Columns(6).PreferredWidth=10; // Задаем заголовки колонок Row1=Table.Rows(1); Row1.Cells(1).Range.Text="№ п/п"; Row1.Cells(2).Range.Text="Наименование"; Row1.Cells(4).Range.Text="Кол-во"; Row1.Cells(3).Range.Text="Ед. изм."; Row1.Cells(5).Range.Text="Цена,руб."; Row1.Cells(6).Range.Text="Сумма,руб."; // Построчно выводим содержимое таблицы Товары НомерСтроки = 1; Если ТипЗнч(Документ) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") тогда Для каждого СтрокаТовары Из Документ.Товары Цикл Row=Table.Rows.Add(); Row.Cells(1).Range.Text=СтрокаТовары.НомерСтроки; // Выравнивание по левому краю Row.Cells(1).Range.ParagraphFormat.Alignment = 1; // В качестве текста можно передать только значение "простого" формата // все агрегатные объекты, переданные как текст, что нормально для платформы 1с // вызовут исключение. Row.Cells(2).Range.Text=СтрокаТовары.Номенклатура.Наименование; // +?(ЗначениеЗаполнено(СтрокаТовары.ХарактеристикаНоменклатуры), // " ("+СтрокаТовары.ХарактеристикаНоменклатуры+")",""); Row.Cells(4).Range.Text=Строка(СтрокаТовары.Количество); Row.Cells(4).Range.ParagraphFormat.Alignment = 1; Row.Cells(3).Range.Text=?(ЗначениеЗаполнено(СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения) ,СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,"-"); Row.Cells(3).Range.ParagraphFormat.Alignment = 1; Row.Cells(5).Range.Text=Формат(СтрокаТовары.Цена,"ЧДЦ=2"); Row.Cells(5).Range.ParagraphFormat.Alignment = 1; Row.Cells(6).Range.Text=Формат(СтрокаТовары.Сумма,"ЧДЦ=2"); Row.Cells(6).Range.ParagraphFormat.Alignment = 1; НомерСтроки=НомерСтроки+1; КонецЦикла; КонецЕсли; В принципе с создание таблицы разобрался, вот только теперь вопрос как мне вычислить определенную строку в Ворде после которой ее добавить? может кто нить знает |
|||
7
Wobland
04.03.13
✎
12:14
|
а что с (3) было?
|
|||
8
Tumakota
04.03.13
✎
12:22
|
(7) Ну сделал по другому, в (3) он тоже подставлял либо в начало либо в конец, а мне надо после определенной строки, не подскажешь как это сделать?
|
|||
9
Wobland
04.03.13
✎
12:26
|
(8) неа. писать макрос, глядеть в код, думать - других методов не знаю
|
|||
10
Tumakota
04.03.13
✎
14:00
|
Всем спасибо за помощь разобрался, осталось только последнее, все выводится все выводится очень хорошо, только вот как вывести мне в конце таблицу строку с итогом ну и подсчитать например сумму
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |