Имя: Пароль:
1C
1С v8
Форматированный программный вывод в Word
,
0 fantomrik
 
24.04.13
12:01
Добрый день! Делаю печатную форму, макет и вывод в МС Ворд (требование заказчика). 1 часть документа будет копироваться много раз в зависимости от количество строк документа. Пытаюсь ее скопировать и в вставить но во-первых шрифты слетают а во-вторых само формирование сбивается

[НП] По договору [НаименованиеДоговора]:
- [НаименованиеОрганизации_1] является кредитором;
- [НаименованиеОрганизации_2] является должником.
Размер погашаемого обязательства (требования) по данному договору составляет  [Сумма] руб.  ([СуммаНДС]):
- по счет-фактуре № [НомерДоговора] от [Дата договора] на сумму [СуммаТЧ] руб. ([СуммаНДС_ТЧ]).
Стороны пришли к соглашению о зачете взаимных требований по указанным ниже договорам.

[НП] По договору [НаименованиеДоговора]:
- [НаименованиеОрганизации_1] является кредитором;
- [НаименованиеОрганизации_2] является должником.
Размер погашаемого обязательства (требования) по данному договору составляет  [Сумма] руб.  ([СуммаНДС]):
- по счет-фактуре № [НомерДоговора] от [Дата договора] на сумму [СуммаТЧ] руб. ([СуммаНДС_ТЧ]).
Стороны пришли к соглашению о зачете взаимных требований по указанным ниже договорам.

Делаю так

   //Получим из макета обзац, который будет выводиться столько раз, сколько строк в ТЧ документа
   ТабЧасть = ОбъектВорд.Range(ОбъектВорд.Paragraphs.Item(7).Range.Start
                               , ОбъектВорд.Paragraphs.Item(13).Range.End);
                               
   ТабЧасть.InsertAfter(ТабЧасть);
1 KyMaPuK
 
24.04.13
12:01
Увольняйся!!!
2 KyMaPuK
 
24.04.13
12:04
Спроси у Архангела
3 fantomrik
 
24.04.13
12:06
(0)  http://s2.ipicture.ru/uploads/20130424/S0S2TqTn.jpg
Выделенный текст - оригинал, ниже так как вставилось. А как вставить 1 в 1?
4 fantomrik
 
24.04.13
17:16
Ап
5 fantomrik
 
25.04.13
15:02
Победа и новый бой (:
По прошлому вопросу решилось так:

//Получим из макета обзац, который будет выводиться столько раз, сколько строк в ТЧ документа
ВыделенныйФрагментВорд = ОбъектВорд.Range(ОбъектВорд.Paragraphs.Item(8).Range.Start
   , ОбъектВорд.Paragraphs.Item(14).Range.End);
ВыделенныйФрагментВорд.Copy();
//Передвинем курсор на 2 обзаца
ВыделенныйФрагментВорд.Move(4,2);
//Вставим скопированную ранее  повторяющуюся часть текста из макета
ВыделенныйФрагментВорд.Paste();
6 fantomrik
 
25.04.13
15:04
Теперь пытаюсь в цикле выводить фрагмент и заменять заданные параметры:

Пока ТабличнаяЧасть.Следующий() Цикл
   КоличествоСтрокТЧ = КоличествоСтрокТЧ + 1;
   НомерСтроки            = "" + ТабличнаяЧасть.НомерСтроки;
   ДатаДоговора            = "" + Формат(ТабличнаяЧасть.ДатаДоговора, "ДФ=dd.MM.yyyy");
   НомерДоговора           = "" + ТабличнаяЧасть.НомерДоговора;
   СуммаТЧ                 = "" + ТабличнаяЧасть.СуммаТЧ;
   НаименованиеДоговора    = "" + ТабличнаяЧасть.НаименованиеДоговора;
   ДолжностьКонтЛицКонтр   = "" + ТабличнаяЧасть.ДолжностьКонтЛицКонтр;
   ФИОКонтЛицКонтр         = "" + ТабличнаяЧасть.ФИОКонтЛицКонтр;
   УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ДолжностьКонтЛицКонтр, 2,  , ДолжностьКонтЛицКонтр);
   УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ФИОКонтЛицКонтр, 2,  , ФИОКонтЛицКонтр);
   
   Замена = Документ.Content.Find;
   Замена.Execute("[НомерСтроки]", , , , , , , , , НомерСтроки, 2);
   Замена.Execute("[ДатаДоговора]", , , , , , , , , ДатаДоговора, 2);
   Замена.Execute("[НомерДоговора]", , , , , , , , , НомерДоговора, 2);
   Замена.Execute("[СуммаТЧ]", , , , , , , , , СуммаТЧ, 2);
   Замена.Execute("[НаименованиеДоговора]", , , , , , , , , НаименованиеДоговора, 2);
   Замена.Execute("[ДолжностьКонтЛицКонтр]", , , , , , , , , ДолжностьКонтЛицКонтр, 2);
   Замена.Execute("[ФИОКонтЛицКонтр]", , , , , , , , , ФИОКонтЛицКонтр, 2);
   
   Если КоличествоСтрокТЧ > 1 Тогда
       //Передвинем курсор на 2 обзаца
       ВыделенныйФрагментВорд.Move(4,2);
       //Вставим скопированную ранее  повторяющуюся часть текста из макета
       ВыделенныйФрагментВорд.Paste();
   КонецЕсли;
КонецЦикла;


Фрагмент выводится но параметры не заменяются. Может кто подсказать, в чем дело?
7 fantomrik
 
25.04.13
15:06
Думаю загвоздка где то в  Замена = Документ.Content.Find; . Изначально получаю док, заменяю в нем метки, далее в док добавляется еще кусок с такими же метками. По идее нужно еще раз получить доку (Замена = Документ.Content.Find;) и заменить эти метки на новые параметры.. Но не работает.
8 dk
 
25.04.13
15:25
сначала скопируй, потом меняй и вставляй
9 Ashtray
 
25.04.13
15:28
Содержимое.Find.Execute("[НОМЕРДОГОВОРА]",0,0,,,,,,,СсылкаНаОбъект.НомерДоговора,2);
10 fantomrik
 
25.04.13
15:35
(8) Точно логическая ошибка была, с начало нужно было проверить на нужность добавления фрагмента и добавления его в случае необходимости а потом поиск и замена. Благодарю! Всем спасибо!