|
23.06.2011, 16:29 | #1 |
Участник
|
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.
Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает. Что я делаю не так? |
|
23.06.2011, 17:53 | #2 |
Участник
|
Цитата:
Сообщение от Predatore
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.
Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает. Что я делаю не так? когда я делал выгрузку в Word, сделал следующее: 1)взял код из этой темы (агромный респект автору) 2)создал шаблон документа Word, в местах которые требуется заполнять из NAV вставил текст для замены. К примеру Договор компании #CompanyInfo# с #CustomerName# 3)в NAV создал текстовые переменные CompanyInfo = '#CompanyInfo#', CustomerName = '#CustomerName#' 4)вызвал функцию DocReplace(CompanyInfo,CompInfo.Name); DocReplace(CustomerName, Customer.Name); как то так, пишу по памяти, в данный момент далеко от работы. почему делал еще дополнительное присваивание текстовым переменным, уже не помню, вроде без этого не отрабатывало. Но данный вариант работает на практике, жаль что он не сыскал в компании популярности |
|
23.06.2011, 22:35 | #3 |
Участник
|
Цитата:
Сообщение от Thrice
Цитата:
Сообщение от Predatore
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.
Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает. Что я делаю не так? когда я делал выгрузку в Word, сделал следующее: 1)взял код из этой темы (агромный респект автору) 2)создал шаблон документа Word, в местах которые требуется заполнять из NAV вставил текст для замены. К примеру Договор компании #CompanyInfo# с #CustomerName# 3)в NAV создал текстовые переменные CompanyInfo = '#CompanyInfo#', CustomerName = '#CustomerName#' 4)вызвал функцию DocReplace(CompanyInfo,CompInfo.Name); DocReplace(CustomerName, Customer.Name); как то так, пишу по памяти, в данный момент далеко от работы. почему делал еще дополнительное присваивание текстовым переменным, уже не помню, вроде без этого не отрабатывало. Но данный вариант работает на практике, жаль что он не сыскал в компании популярности |
|
24.06.2011, 12:21 | #4 |
Участник
|
Как и обещал, другое решение, через переменные. В нём нам понадобится ещё один Automation
'Microsoft Word 11.0 Object Library'.Variable, назовём его WordVar. А функцию ReplaceText перепишем так: ReplaceText(Str : Text[1024];VName : Text[1024]) WordVar := WordDoc.Variables.Item(VName); IF Str <> '' THEN WordVar.Value := Str ELSE WordVar.Value := ' '; Всё, осталось только вставить в Ворде переменные в нужных местах. Делается так, Вставка->Поле, в Категории выбираем "Автоматизация", так быстрее искать, и выбираем DocVariable. Этой переменной даём имя, по которому мы будем к ней обращаться из Нава (VName). Вот и всё. Осталось только после того как будут заполнены все переменные, вызвать функцию WordDoc.Fields.Update; |
|
27.06.2011, 13:17 | #5 |
Участник
|
Возник ещё один вопрос по работе с Вордом. Если у меня в шаблоне есть табличная часть и естесственно зранее не извсетно, сколько будет строк в таблице. Как в таком случае быть? Как работать с табличной частью в Ворде?
|
|