Имя: Пароль:
1C
 
word+1C
,
0 Wolf254
 
04.08.05
09:38
не очень понимаю вот этот пример..кто-то может дать более подрбный и обьяснить как это работает?

Макеты ActiveDocument
Как сформировать новый договор на основании файла Microsoft Word?
Договор = ПолучитьМакет("Договор");



// Получить объект из макета.

MSWord = Договор.Получить();

НаименованиеКонтрагента = "ООО Торгуем всем";



Попытка

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

       Документ.Activate();



       // Получить объект, который будем использовать для поиска и замены.

       Замена = Документ.Content.Find;



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

       Замена.Execute("<НазваниеКомпании>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеКонтрагента);



       // Далее аналогично для остальных ключевых конструкций.



       // Делаем видимым приложение и активизируем его.

       MSWord.Application.Visible = Истина;

       MSWord.Activate();



Исключение



       // Если произойдет ошибка выводятся данные об ошибке и объект закрывается.

       Сообщить(ОписаниеОшибки());

       MSWord.Application.Quit();



КонецПопытки;
1 ананим11
 
04.08.05
10:08
а что не понятно то
2 Джо
 
04.08.05
13:01
+(1) Какой вопрос такой ответ! :)
3 Wolf254
 
04.08.05
18:01
все непонятно :( я с таким вообще не работал. чем писать фигню лучше скажите где прочитать можно про это, если отвечать лень.
4 Asmody
 
04.08.05
18:03
толком расскажи, чего хочешь. или тебе объяснить что код в (0) делает?
5 XSerg
 
04.08.05
22:43
Я так понимаю берет заранее заготовленный в ворде шаблон документа и заменяет ключевые конструкции данными из базы...
6 reider
 
04.08.05
23:44
А что в этом коде нужно изменить, чтобы открыть не ворд, а эксель?
7 колодина
 
05.08.05
06:28
есть описание испоьлзования в "простых примерах для разработки" Габеца... если у вас нет этой книги - могу код привести...
8 Wolf254
 
05.08.05
10:24
Приведи!
Например, Договор = ПолучитьМакет("Договор"); если макета нет, он в ворде, то как его ни получают?
9 tiger_sl
 
05.08.05
10:26
XLSОбъект = Новый COMОбъект("Excel.Application");
XLSКнига = XLSОбъект.WorkBooks;
XLS = XLSКнига.Open(сИмяФайла);
Лист = XLS.Sheets(чНомерСтраницы);

Ячейка = Лист.Cells(чС, чК);
ЗначениеЯчейки = Ячейка.Value;
ФорматЯчейки = Ячейка.NumberFormat;
10 колодина
 
05.08.05
10:37
1. Используем при создании макета договора тип макета – ActiveDocument.
1.1. Создадим шаблоны договоров в Ворде и запишем их
1.2. Создадим макеты договоров с типом макета – ActiveDocument и укажем в каком файле он хранится
а потом в соответствующем обработчике событий (например при нажатии на кнопку "создать договор", пишем:
Договор = ПолучитьМакет("Договор")
MSWord= Договор.Получить();
Документ = MSWord.Application.Documents(1);
Документ.Activate();
// получить объект который будем использовать для замены
Замена = Документ.Content.Find;
// заменяем заранее определенные ключевые конструкции на тербуемый текст
Замена.Execute("<НаименованиеКомпании>", Ложь, Истина, Ложь,,,Истина,,Ложь, НаименованиеКонтрагента);
// делаем приложение видимым

MSWord.Application.Visible = Истина;
MSWord.Activate();
11 Wolf254
 
05.08.05
11:55
По каким правилам создается в ворде шаблон?
12 колодина
 
05.08.05
11:59
просто текст в ворде, где в местах куда хочется вставить что-то свое пишешь то, что будешь заменять, в приведенном случае <НаименованиеКомпании>
13 reider
 
05.08.05
13:24
С вордом все понятно, а вот все же как открыть экселевский документ? Используя в качестве шаблона ActiveDocument ?
14 колодина
 
05.08.05
13:27
я думаю просто открывать ексел вместо форда... но не пробовала, честно говорю. попробуйте и нам расскажите...
15 reider
 
05.08.05
13:50
Ворд таким образом открывается без проблем, а вот Эксель не хочет и даже не ругается. Указывать путь к файлу совсем не хочется, это не интересно.
16 KAO111
 
05.08.05
15:01
Макет = ПолучитьМакет("МакетExcel");
ActX = Макет.Получить();
Sheet = ActX.ActiveSheet ;  
               
Sheet.Range("HEADER").Value   = "12345"; // если есть именованные области  
Sheet.Cells(1,1).Value  = "6789"; // в конкретную ячейку
17 reider
 
05.08.05
15:17
не работает
18 Wolf254
 
05.08.05
15:21
Что это?
{Документ.ПодготовкаДоговора.Форма.ФормаДокумента(129)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)
Замена.Execute("<Имя>", Ложь, Истина, Ложь,,,Истина,,Ложь, НаименованиеКонтрагента);
19 KAO111
 
05.08.05
15:30
у меня работает.
Чтобы показать окно excel надо добавить:
ActX.Application.Visible = Истина;
ActX.Application.Workbooks(1).Windows(1).Visible = Истина;

Перем  ActX ; - должна быть переменной модуля  

На itlande нашел ссылку: http://itland.ru/forum/index.php?showtopic=4254&hl=
20 reider
 
05.08.05
15:51
(19) Спасибо, наконец-то все заработало!
Перем ActX;

Процедура Печать() Экспорт
   АктивныйДокумент = ПолучитьМакет("Макет");
   ActX = АктивныйДокумент.Получить();
   Sheet = ActX.ActiveSheet;
   ActX.Application.EnableEvents = Ложь;
   ActX.Application.Workbooks(1).Windows(1).Visible = Истина;
   ActX.Application.Visible = Истина;
   //Sheet.Range("HEADER").Value   = "12345"; // если есть именованные области  
   //Sheet.Cells(1,1).Value  = "6789"; // в конкретную ячейку
   
   
КонецПроцедуры
21 Wolf254
 
08.08.05
10:51
Где найти описание всех команд, т.е. описание, например, всех параметров в Замена.Execute(...)? Интересует вопрос, чтобы при открытии документа после замены там была только копка Печать, остальные недоступны, или вообще без открытия он сразу отправлялся на печать.
22 колодина
 
08.08.05
12:26
а вот у меня Ворд открывается но с пустым окном... т.е. файл не цепляется почему-то...
23 Wolf254
 
08.08.05
13:35
вот моя процедура полностью... если надо смотреть на него потом и редактировать, то раскоментировать 2 строки. А щас он просто печатает автоматом.

Процедура ОсновныеДействияФормыДействиеПечать1(Кнопка)
   Договор = ПолучитьМакет("МакетТест");
   MSWord= Договор.Получить();
   Документ = MSWord.Application.Documents(1);
   Документ.Activate();
   Замена = Документ.Content.Find;
   Если ЭтотОбъект.НаименованиеКонтрагентаНовое="" Тогда
       НаименованиеКонтрагентаСтр=СокрЛП(Строка(НаименованиеКонтрагента));
       Замена.Execute("<Контрагент>", Ложь, Истина, Ложь,,,Истина,,Ложь, НаименованиеКонтрагентаСтр);
   Иначе
       НаименованиеКонтрагентаНовоеСтр=СокрЛП(Строка(НаименованиеКонтрагентаНовое));
       Замена.Execute("<Контрагент>", Ложь, Истина, Ложь,,,Истина,,Ложь, НаименованиеКонтрагентаНовоеСтр);
   КонецЕсли;
   Замена = Документ.Content.Find;
   ИННСтр=СокрЛП(Строка(ИННКонтрагента));
   Замена.Execute("<ИНН>", Ложь, Истина, Ложь,,,Истина,,Ложь, ИННСтр);
   //MSWord.Application.Visible = Истина;
   //MSWord.Activate();
   Документ.PrintOUT(True);
   MSWord.Application.Quit();
КонецПроцедуры