|
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(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |