Имя: Пароль:
1C
1С v8
Как вставить в вордовский шаблон текст в цикле
0 AntonU
 
20.02.13
11:53
Здравствуйте.
В шаблон ActiveDocument (Word) нужно вставить в определенное место строки (по каждому из подчиненных договоров для данного к\а) в цикле - в зависимости от количества договоров. Как это сделать?

   Договор = ПолучитьМакет("Макет1");
   MSWord = Договор.Получить();
         Документ = MSWord.Application.Documents(1);
       Документ.Activate();
       Замена = Документ.Content.Find;
       Замена.Execute("[ДоговорНомер]",Ложь,Истина,Ложь,,,Истина,,Ложь,ДоговорНомер,2);
...........................
           Замена = Документ.Content.Find;
           Замена.Execute("[КАТехникФИО]",Ложь,Истина,Ложь,,,Истина,,Ложь,КАТехникФИО,2);

       MSWord.Application.Visible = Visible;
       MSWord.Activate();
1 AntonU
 
20.02.13
11:55
Пусть нужно вставить наименование договора по каждому из договоров. Количество договоров, естественно, разное, для разных к\а
2 dk
 
20.02.13
11:58
ну дык и вставляй в нужное место текстовку с разделителями строк
3 ICWiner
 
20.02.13
12:00
Сначала формируй в цикле текстовую строчку, а потом ее вставляй.
4 AntonU
 
20.02.13
12:02
(3) Я так пытался - выдает ошибку
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft Word): Слишком длинный строковый параметр.
5 AntonU
 
20.02.13
12:03
Там не только наименование договоров на самом деле, символов получается много. А ограничение, как я понимаю - 255 символов.
6 dk
 
20.02.13
12:07
делай через закладки

Функция ПолучитьСписокНакладных(ТЗ, Копия = "")
   Перем Результат;
   
   Результат = "";
   
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку() > 0 Цикл
       Результат = Результат + ?(ПустоеЗначение(Результат)=1,"",РазделительСтрок) + "Товарная накладная № " + СокрЛП(ТЗ.Док.НомерДок) + " от " + ПолучитьТекстовуюДату(ТЗ.Док.ДатаДок) + " г."+Копия+";";
   КонецЦикла;
   
   Если ПустоеЗначение(Копия) = 1 Тогда
       Если Прав(Результат, 1) = ";" Тогда
           Результат = Лев(Результат, СтрДлина(Результат) - 1) + ".";
       КонецЕсли;
   КонецЕсли;
   
   Возврат Результат;
   
КонецФункции    // ПолучитьСписокНакладных
---
   Док = Ворд.Documents.Add(ФайлШаблона);
   
   НомерИсходящий = ПолучитьИсходящий(Фирма, Элем, СокрЛП(глПользователь)+" "+ТекущаяДата()+" "+ТекущееВремя()+" долг: "+ СуммаПросрочки, Перечисление.ВидыДокументов.Исковое);
   ИмяДляСохранения = ПапкаДляДокументов + "Исковое_" + НомерИсходящий + ".rtf";
   
   Госпошлина        = Окр(ПолучитьСуммуГоспошлины(СуммаПросрочки + СуммаПени), 2);
   
   Док.Bookmarks("Исходящий").Range.Text                    = НомерИсходящий + " от " + ПолучитьТекстовуюДату(ПолучитьДатуТА());;
   Док.Bookmarks("НаименованиеКонтрагента").Range.Text        = СокрЛП(Элем.ПолнНаименование);
   Док.Bookmarks("ИндексЮридическийАдрес").Range.Text        = ?(СокрЛП(Элем.ЮридическийАдрес)="",СокрЛП(Элем.ПочтовыйАдрес),СокрЛП(Элем.ЮридическийАдрес));;
   Док.Bookmarks("ЦенаИска").Range.Text                    = СокрЛП(Формат(СуммаПросрочки + СуммаПени, "Ч15.2, ")) + " рублей";
   Док.Bookmarks("Госпошлина").Range.Text                    = СокрЛП(Формат(Госпошлина, "Ч15.2, ")) + " рублей";
   Док.Bookmarks("Дата").Range.Text                        = ПолучитьТекстовуюДату(ТекДоговор.ДатаЗаключения);//ПолучитьТекстовуюДату(ПолучитьДатуТА());
   Док.Bookmarks("Договор").Range.Text                        = ПолучитьНомерДоговора(ТекДоговор);
   Док.Bookmarks("Сумма").Range.Text                        = СокрЛП(Формат(СуммаДок, "Ч15.2, "));;
   Док.Bookmarks("ТоварнаяНакладная").Range.Text            = ПолучитьСписокНакладных(ТабДок);
   Док.Bookmarks("СуммаОплаты").Range.Text                    = СокрЛП(Формат(СуммаОплатили, "Ч15.2, "));
   Док.Bookmarks("ДатаДолг").Range.Text                    = ПолучитьТекстовуюДату(ПолучитьДатуТА());
   Док.Bookmarks("Долг").Range.Text                        = СокрЛП(Формат(СуммаПросрочки, "Ч15.2, "));
   Док.Bookmarks("Проценты").Range.Text                    = СокрЛП(Формат(СуммаПени, "Ч15.2, "));
   Док.Bookmarks("ОбщаяСуммаЗадолженности").Range.Text        = СокрЛП(Формат(СуммаПросрочки + СуммаПени, "Ч15.2, "));
   Док.Bookmarks("ДатаПретензии").Range.Text                = ПолучитьТекстовуюДату(ПолучитьДатуПретензии(Элем));//ПолучитьТекстовуюДату(ПолучитьДатуТА());
   Док.Bookmarks("Ответчик").Range.Text                    = СокрЛП(Элем.ПолнНаименование);
   Док.Bookmarks("СуммаДолга").Range.Text                    = СокрЛП(Формат(СуммаПросрочки, "Ч15.2, "));
   Док.Bookmarks("СуммаПроцентов").Range.Text                = СокрЛП(Формат(СуммаПени, "Ч15.2, "));
   Док.Bookmarks("СуммаГоспошлины").Range.Text                = СокрЛП(Формат(Госпошлина, "Ч15.2, "));
   Док.Bookmarks("ДоговорКопия").Range.Text                = ПолучитьНомерДоговора(ТекДоговор) + " от " + ПолучитьТекстовуюДату(ТекДоговор.ДатаЗаключения);
   Док.Bookmarks("ТоварнаяНакладнаяКопия").Range.Text        = ПолучитьСписокНакладных(ТабДок, " (копия)");
7 Шапокляк
 
20.02.13
12:20
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой