![]() |
![]() |
![]() |
|
Word & 1C Ø |
☑ | ||
---|---|---|---|---|
0
TIREX
01.11.05
✎
10:28
|
Народ, обращаюсь из 1с к ворду, в ворде есть TextBox, как его заполнить значением из 1с?
инет рыл, кругом только по ексел или 1с с 1с, а как подставлять значения именно в ворде |
|||
1
Uho
01.11.05
✎
10:30
|
Универсальный механизм - написать макрос и перенести его в 1С
|
|||
2
Денис2
01.11.05
✎
10:30
|
А что такое этот ТекстБокс?
|
|||
3
TIREX
01.11.05
✎
11:15
|
up
|
|||
4
dronis
01.11.05
✎
11:17
|
а ты используй FormFields в Ворде ..
FormFields.Result="вапвап"; в самом Ворде "поле формы" называется .. |
|||
5
TIREX
01.11.05
✎
11:18
|
4) сенкс, счас попробую
|
|||
6
Макс 1С
01.11.05
✎
11:18
|
Итак, про вывод данных в MS Word. Понятно, что технологию OLE можно использовать не только для обмена данными между двумя экземплярами 1С и работы с MS Excel. Word в этом смысле ничем не хуже. Особенно, когда почему-либо необходимо создавать в нем типовые документы (Приказ, Договор, Счет etc).
Для начала можно скачать пример работы такой связки. А я, между тем, расскажу в двух словах, как это работает. Прежде всего, надо создать шаблон документа (.DOT), в котором определить именованные поля. Именованные поля вставляются так: Засветите панель инструментов Формы. На ней есть кнопочка "текстовое поле" - при нажатии на нее рядом с курсором будет вставлено именованное поле. Если на той же панели нажать кнопку "Параметры поля формы", откроется окно свойств поля, в котором можно задать его имя, тип, формат, макисмальную длину и значение по умолчанию. Дальше уже в 1С делаем так: 1. Создаем объект Word.Basic и с его помощью создаем файл на основе нашего шаблона: Word = CreateObject("Word.Basic"); Word.FileNew(Переменная_с_путем_к_шаблону); 2. Заполняем определенные нами поля нужными значениями: Word.SetFormResult("MyFieldName", Нужное_значение); 3. Делаем Word видимым: Word.AppShow(); Вот, собственно, и все. Просто, быстро и надежно. Я же, со своей стороны, хотел бы напомнить, что в Word можно выводить и произвольный текст, произвольно его при этом форматируя. Попробуем вывести в Word небольшой текст, при этом первый абзац будет жирным и выравненным по центру, а второй - выравнен по левому краю, а цифры выделены красным. При этом "Директор", "Сумма" и "Валюта" - это поля на форме обработки: Word = CreateObject("Word.Application"); Word.Documents.Add(); Word.Documents(1).Content.InsertAfter("Уважаемый "+СокрЛП(Директор)+"!"); MyRange = Word.Documents(1).paragraphs.last.range; MyRange.Bold = 1; Word.Documents(1).paragraphs.last.Alignment = 1; //center Word.Documents(1).Content.InsertParagraphAfter(); Word.Documents(1).Content.InsertAfter("Вы нам должны "+Сумма); Word.Documents(1).Content.InsertAfter(" "+СокрЛП(Валюта)); Word.Documents(1).paragraphs.last.range.Bold = 0; Word.Documents(1).paragraphs.last.Alignment = 0; //left Цифирь = Word.Documents(1).range (Word.ActiveDocument.paragraphs.last.range.End - 1 -СтрДлина(Строка(СокрЛП(Сумма)))-1-СтрДлина(Строка(СокрЛП(Валюта))), Word.ActiveDocument.paragraphs.last.range.End - 1 -СтрДлина(Строка(СокрЛП(Валюта)))); Цифирь.Font.ColorIndex = 6; //wdRed // показываем полученнй текст Word.Visible = 1; Есть несколько тонкостей, на которые следует обратить внимание: • вызывается объект "Word.Application"; • нельзя передавать константы Word в качестве параметров функций - только их численные значения. А чтобы быстро узнать их значения, достаточно создать макрос в Word, а в нем воспользоваться процедурой MsgBox(). Например, если передать ей wdRed в качестве параметра, то получим 6 - значение константы; • вместо True и False надо использовать 1 и 0; • "Documents(1)" указывает на первый из открытых документов. Надежнее использовать "ActiveDocument" (ведь если Word уже был запущен, то ваш документ может оказаться не первым) - пример просто показывает, что работают оба варианта; • обратите внимание, что объектом "Range" может быть как весь объект другого вида (слово, абзац, документ), так и конкретная область (ср. "MyRange" и "Цифирь"). Основным источником информации на эту тему является файл справки по VBA для MS Word (VBAWRD8.HLP - для Word97). (C) |
|||
7
TIREX
01.11.05
✎
11:27
|
6) ух ты! спасибо друг!
|
|||
8
Uho
01.11.05
✎
11:38
|
+6 можно работать с закладками - не знаю кому как удобно
Документ.Bookmarks("FullName").Select(); Ворд.Selection.Font.Underline=1; //и тому подобное Ворд.Selection.TypeText(Контрагент.ПолнНаименование); PS. Закладки вставляются в шаблон (Вставка-Закладка) |
|||
9
Wasya
01.11.05
✎
11:52
|
Список всех методов и атрибутов можно получить: Запустить Word нажать alt/F11 затем F2.
|
|||
10
TIREX
01.11.05
✎
12:27
|
6) вот что у меня получилось:
Word = CreateObject("Word.Basic"); Word.FileOpen("c:\temp\Договор.dot"); \\открываю существующий шаблон Word.SetFormResult("ТекстовоеПоле1", "Значение поля"); Word.AppShow(); до сих пор всё ок, как потом документ распечатать и закрыть ворд? Word.PrintOut("c:\temp\Договор.dot"); // ???? Word.Quit(); // ???? |
|||
11
Gloom
01.11.05
✎
12:41
|
(10)PrintOut и Quit это методы из VBA for Word. Для Word.Basic нужно FilePrint и FileClose юзать
|
|||
12
TIREX
01.11.05
✎
13:12
|
6,11,all) спасибо, заработало!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |