|
v7: Заполнение документа Word из 1С 7.7 | ☑ | ||
---|---|---|---|---|
0
zenon46
19.03.21
✎
16:18
|
Доброго дня! Не могу побороть проблемку, пытаюсь реализовать заполнение документа Word из 1С 7.7, создал документ, добавил туда закладку https://prnt.sc/10pyx50.
В СЗ добавил необходимый параметр и его значение. Далее вот такой код, перебирает СЗ и ищет в документе закладки и ПО ИДЕЕ должен заменить закладку на значение, а получается что вставляется значение и закладка сдвигается https://prnt.sc/10pyznq. Что я делаю не так ? // Формируем договор Word.Documents.Add(пШаблон); Документ = Word.ActiveDocument; // Заменяем параметры КоличествоПараметров = пПараметры.РазмерСписка(); Для Счетчик = 1 По КоличествоПараметров Цикл СтрЗамены = пПараметры.ПолучитьЗначение(Счетчик,СтрПоиска); Попытка Документ.Bookmarks(СтрПоиска).Select(); Документ.Application.Selection.TypeText(СтрЗамены); Исключение Сообщить("Не найдена закладка " + СтрПоиска); КонецПопытки; КонецЦикла; |
|||
1
Злопчинский
19.03.21
✎
16:25
|
я делл проще. без всяких закладок. просто фнкцией найти и заменить. а в тектсе договора писал
тралалая %ФИО% |
|||
2
zenon46
19.03.21
✎
16:33
|
(1) есть пример ?
|
|||
3
Масянька
19.03.21
✎
16:34
|
(1) Поддерживаю предыдущего оратора.
В тексте Word нужные параметры отделяются - [Параметр] (например). И поиском меняются на нужные. |
|||
4
Масянька
19.03.21
✎
16:35
|
(2) мWord = СоздатьОбъект("Word.Application");
мWord.Visible = 0; мNewDoc = мWord.Documents; мДок = мNewDoc.Add("D:\1С\БД клиентов\КС\1Сv7\Db\Договора\Шаблоны\Типовой_КуплиПродажи_1.dot", 0, 0, 1); мОбъект = мДок.Content; // подставляем значения по тексту договора - признак замены [] мОбъект.Find.Execute("[ПечНомерДоговора]",0,0,,,,,,,НомерДоговора,2); мОбъект.Find.Execute("[ПечДатаДоговора]",0,0,,,,,,,Нрег(СокрЛП(мДатаДоговора)),2); мОбъект.Find.Execute("[ПечПокупатель]",0,0,,,,,,,СокрЛП(мПокупатель),2); мОбъект.Find.Execute("[ПечРуководитель]",0,0,,,,,,,мПечОтветственноеЛицо,2); мОбъект.Find.Execute("[ПечОснование]",0,0,,,,,,,СокрЛП(Основание),2); |
|||
5
zenon46
19.03.21
✎
16:37
|
(4) выходит обязательно иметь dot, получается.
|
|||
6
Kigo_Kigo
19.03.21
✎
16:39
|
(5) не, не обязательно, но работать не будет :)))))
|
|||
7
Масянька
19.03.21
✎
16:40
|
(5) А как собираетесь сохранять?
|
|||
8
zenon46
19.03.21
✎
16:52
|
Сделал так, без dot файла. Вроде работает.
// Инициализация Microsoft Word Попытка WordApp=СоздатьОбъект("Word.Application"); NewDoc=WordApp.Documents; Исключение Сообщить("Не удалось установить связь с Microsoft Word !!!"); Возврат; КонецПопытки; Док=NewDoc.Add(пШаблон); //Заполнение текстового поля Fnd = WordApp.ActiveDocument.Range().Find; Fnd.ClearFormatting(); Fnd.Forward = -1; // Заменяем параметры КоличествоПараметров = пПараметры.РазмерСписка(); Для Счетчик = 1 По КоличествоПараметров Цикл СтрЗамены = пПараметры.ПолучитьЗначение(Счетчик,СтрПоиска); Попытка Fnd.Execute("["+СтрПоиска+"]",,,,,,,,,СтрЗамены,2); Исключение Сообщить("Не найдена закладка " + СтрПоиска); КонецПопытки; КонецЦикла; // Показываем договор WordApp.Visible = 1; WordApp.Activate(); |
|||
9
Злопчинский
19.03.21
✎
17:03
|
(8) а при чем здесь dot
обычный файл с обычным текстом открыл заменой заменил, записал куда надо. |
|||
10
Масянька
19.03.21
✎
17:07
|
(8) (9) У меня задача была - договора. Создание, хранение.
Есесьно, шаблон договора, а заполнение и хранение - файл. |
|||
11
Злопчинский
19.03.21
✎
19:09
|
(10) ну, простой вордовский обычный _доковский_ файл. где тексте стоит последовательность символов %НОМЕРДОГОВОРА% - это faqk играет роль шаблона. из 1Сины открыли, командами поиска и замены макровордовскими заменили строку %НОМЕРДОК% на нужный номер и сохранили под именем нужным (контрагента, номера договора итд). Без всяких dot шаблонов и закладок. я делал так, тупо и примитивно. вроде работало.
|
|||
12
tgu82
19.03.21
✎
19:10
|
(9,10) Ну так и есть. Там же "поле" есть. Пишешь в нем имяполя и потом через ОЛЕ из 1С его подставляешь. Сначала делаешь шаблонный файл для все уже есть только вместо значения Поля а потом из 1С присваиваешь значения этим полям и все сохраняешь готовый документ. Я так и делал в договорах при приеме на работу: сотрудники руководитель должность и т.д.
|
|||
13
alyuev
23.03.21
✎
16:43
|
Я делал так:
Книга.Bookmarks(ИмяЗакладки).Range().Text=ТекстЗакладки |
|||
14
alyuev
23.03.21
✎
16:46
|
А текст заменял через
Финд = Word.Selection.Find и далее Финд.Execute(ИмяПерем,,,,,,,,,ВсеЧасти,2); но там заморочка с длинными строками более 255 символов. Приходилось резать по кусочкам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |