Имя: Пароль:
1C
1С v8
v8: Active Document
0 sanja26
 
07.09.11
16:04
Есть вордовский документ загруженный в макет. Отдельные значения выводятся нормально.
Как вывести табличную часть документа в этот макет

Процедура ПечатьПервогоПриложения()
   
   АктивныйДокумент = ПолучитьМакет("ПерваяФормаПриложения");
   КомОбъект = АктивныйДокумент.Получить();
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Приложения]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭтотОбъект.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаНачала]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ТекДата]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ЭтотОбъект.Дата, "ДЛФ=DD")));  
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаНачала]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));  
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[Принципал]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));  
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[Агент]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   КомОбъект.Application.Visible=1;
   КомОбъект.Activate();

КонецПроцедуры
1 sanja26
 
07.09.11
16:17
Как программно описать вывод в Ворд ТЧ документа?
2 sanja26
 
07.09.11
18:18
ап
3 Mort
 
07.09.11
18:46
Я по йуности делал в шаблоне таблицу из шапки и одной строкой с "параметрами" и прописывал туда значения копируя строки таблицы. Щас бы придумал что-нибудь покошернее.
4 sanja26
 
08.09.11
17:45
Получилось так

Процедура ПечатьВторогоПриложения()
   wdLineStyleNone = 1;
   wdBorderBottom = -3;// Нижняя грань таблицы
   wdBorderLeft = -2; // Левая грань таблицы
   wdBorderRight = -4; //Правая
   wdBorderTop = -1; // нижняя
   wdBorderVertical = -6; //Вертикальная (видимо смежная)
   wdBorderHorizontal = -5;
   АктивныйДокумент = ПолучитьМакет("ВтораяФормаПриложения");
   КомОбъект = АктивныйДокумент.Получить();
   Word = КомОбъект.Application;
   Док=Word.Documents(1);
   Док.Activate();    
   
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Приложения]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ЭтотОбъект.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаНачала]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));  
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ТекДата]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ЭтотОбъект.Дата, "ДЛФ=DD")));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаНачала]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаСрок]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.СрокДействия, "ДЛФ=DD")));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[№Договора]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ДатаНачала]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));
   //Text = АктивныйДокумент.Selection;
   //Position = КомОбъект.Range(0, 0).selection;
   Word.selection.MoveDown(,12);
   Док.Paragraphs.Add();
   //Word.Selection.MoveRight(,);
   Табл= Word.Selection.Range;
   //Формируем заголовок:
   Табл.InsertAfter("П/П*Наименование статьи расходов Агента*Стоимость (руб.)");
   Табл.InsertParagraphAfter();
   //сама таблица
   й = 1;
   Для Каждого строка из Услуги Цикл
       Табл.InsertAfter(Строка(й) + "*" + строка.Услуга+"*"+Строка.РазмерСуммыOUTСНДС);
       Табл.InsertParagraphAfter();
       й = й + 1;
   КонецЦикла;
   
   Табл.InsertAfter("" + "*" + "ИТОГО общая сумма расходов Агента без  НДС:"+"*"+"5");
   Табл.InsertParagraphAfter();
   
   Табл.InsertAfter("" + "*" + "НДС 18%:"+"*"+"5");
   Табл.InsertParagraphAfter();
   
   Табл.InsertAfter("" + "*" + "ИТОГО общая сумма расходов Агента, включая НДС 18%:"+"*"+"5");
   Табл.InsertParagraphAfter();    
   
   Табл.ConvertToTable("*");
   
   //Происходит конвертация строки в таблицу
   
   //не нравятся звездочки - используйте другой символ
   Док.Tables(1).AutoFormat(1);
   Док.Tables(1).Borders(wdBorderBottom).LineStyle = wdLineStyleNone;
   Док.Tables(1).Borders(wdBorderLeft).LineStyle = wdLineStyleNone;
   Док.Tables(1).Borders(wdBorderRight).LineStyle = wdLineStyleNone;
   Док.Tables(1).Borders(wdBorderTop).LineStyle = wdLineStyleNone;
   Док.Tables(1).Borders(wdBorderVertical).LineStyle = wdLineStyleNone;
   Док.Tables(1).Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone;
       
   //Position = КомОбъект.Range(0, 0);
   ////Position = КомОбъект.Application.selection.Range;
   //Table = КомОбъект.Tables.Add(Position, 1, 2, 1, 2);
   //Для Каждого строка из Услуги цикл
   //    Замена = КомОбъект.Content.Find;
   //    Замена.Execute("[Услуга]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Строка.Услуга));
   //КонецЦикла;
   
   СуммаКПрописи = Услуги.Итог("РазмерСуммыOUTСНДС");
   ОбщаяСуммаЦифрами = ОбщегоНазначения.ФорматСумм(СуммаКПрописи, ЭтотОбъект.Валюта);
   ОбщаяСуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, ЭтотОбъект.Валюта);
   
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ОбщаяСуммаЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ОбщаяСуммаЦифрами));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[ОбщаяСуммаПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, ОбщаяСуммаПрописью);
   
   СуммаНДС = Услуги.Итог("РазмерСуммыOUTСНДС") - Услуги.Итог("СуммаOUTБезНДС");
   СуммаНДСЦифрами = ОбщегоНазначения.ФорматСумм(СуммаНДС, ЭтотОбъект.Валюта);
   СуммаНДСПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаНДС, ЭтотОбъект.Валюта);
   
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СуммаНДСЦифрами));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СуммаНДСПрописью));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[СуммаФактЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[СуммаФактПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСФактЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСФактПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[АгентЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[АгентПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСАгентЦифрами]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   Замена = КомОбъект.Content.Find;
   Замена.Execute("[НДСАгентПрописью]",  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(ДоговорЗаказчика.Номер));
   
   КомОбъект.Application.Visible=1;
   КомОбъект.Activate();
   
КонецПроцедуры
5 Челмедведосвин
 
08.09.11
19:40
Можно в демо библиотеки стандартных подсистем посмотреть. Там в одном документе реализовано (имя документа не помню, но их там немного).
Основная теорема систематики: Новые системы плодят новые проблемы.