AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2011, 16:29   #1  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.

Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает.

Что я делаю не так?
Старый 23.06.2011, 17:53   #2  
Thrice is offline
Thrice
Участник
Аватар для Thrice
 
46 / 10 (1) +
Регистрация: 09.07.2008
Цитата:
Сообщение от Predatore Посмотреть сообщение
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.

Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает.

Что я делаю не так?
прошу прощения, немного не понял про "Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name"

когда я делал выгрузку в 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  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от Thrice Посмотреть сообщение
Цитата:
Сообщение от Predatore Посмотреть сообщение
Уже почти всё сделал, осталось дело за малым. Подставлять в метки свои значения. Вот тут то у меня и случился затык. Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name, и как выше описанно пытаюсь его заменить. На выходе ничего не происходит Далее, создаю другое поле, с типом Formula, в нём пишу =Name. На выходе сначала идёт ругатьня: "!Неопределенная закладка", а следом идёт то, что я хочу подставить вместо Name.

Вроде как должно всё делаться через DocVariable, но почему-то не делается С формулой я пробовал для того что бы убедиться, что замена всё-таки работает.

Что я делаю не так?
прошу прощения, немного не понял про "Вставляю в Ворде поле с типом DocVariable, даю этому полю имя Name"

когда я делал выгрузку в Word, сделал следующее:
1)взял код из этой темы (агромный респект автору)
2)создал шаблон документа Word, в местах которые требуется заполнять из NAV вставил текст для замены. К примеру
Договор компании #CompanyInfo# с #CustomerName#
3)в NAV создал текстовые переменные CompanyInfo = '#CompanyInfo#', CustomerName = '#CustomerName#'
4)вызвал функцию DocReplace(CompanyInfo,CompInfo.Name); DocReplace(CustomerName, Customer.Name);

как то так, пишу по памяти, в данный момент далеко от работы. почему делал еще дополнительное присваивание текстовым переменным, уже не помню, вроде без этого не отрабатывало. Но данный вариант работает на практике, жаль что он не сыскал в компании популярности
Я кажется понял в чём засада. В способе замены Дело в том, что раньше я уже делал подобное и сейчас, пытаясь делать по этому примеру, невольно наложил на это решение свои воспоминания. А там использовались переменные в Вордовском документе, те самые DocVariables, способ, между прочим, более надёжный. И естественно подстановка в эти переменные делается по другому, нежели в примере выше. Я уже достал пример работы через переменные, но он у меня в fob-ке, так что выложить тот способ смогу только завтра.
Старый 24.06.2011, 12:21   #4  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Как и обещал, другое решение, через переменные. В нём нам понадобится ещё один 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  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Возник ещё один вопрос по работе с Вордом. Если у меня в шаблоне есть табличная часть и естесственно зранее не извсетно, сколько будет строк в таблице. Как в таком случае быть? Как работать с табличной частью в Ворде?
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:12.