![]() |
![]() |
![]() |
|
Заполнение документа Word данными из справочника? | ☑ | ||
---|---|---|---|---|
0
Macleod
30.09.05
✎
10:06
|
Вводные данные.
Есть несколько разных типовых договоров (разные условия оплаты, доставки и т.д.) в формате Word. Сейчас просто заполняют поля ________________ реальными данными в Ворде. Разумеется, встала задача заполнять эти данные автоматически из v8 (нетиповая). То есть в программе заполняются условия договора, ставятся соответствующие галочки и прочее... Собссно вопрос. Как при нажатии кнопки "Печать" в форме договора вызвать нужный шаблон, заполнить необходимые поля в соответствии с данными контрагента и договора? Облазил кучу форумов, ничего похожего не нашел. |
|||
1
Demiurg
30.09.05
✎
10:13
|
Попытка
MSWord = Новый COMОбъект("Word.Application"); Исключение Сообщить("Не удалось инициализировать Microsoft Word"); Возврат; КонецПопытки; Запрос = Новый Запрос; // Получить данные для формируемого прайс-листа. Запрос.Текст = "ВЫБРАТЬ | ЦеныКомпанииСрезПоследних.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения, | ЦеныКомпанииСрезПоследних.Цена, | ЦеныКомпанииСрезПоследних.Номенклатура.Наименование КАК Номенклатура, | 1 КАК Количество |ИЗ | РегистрСведений.ЦеныКомпании.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныКомпанииСрезПоследних |УПОРЯДОЧИТЬ ПО | Номенклатура |ИТОГИ Количество(Количество) ПО | ОБЩИЕ"; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен", ТипЦен); Результат = Запрос.Выполнить(); Попытка // Создать новый документ MSWord.Documents.Add(); Документ = MSWord.ActiveDocument(); // Добавить новый параграф в созданный документ. Документ.Paragraphs.Add(); НомерПараграфа = Документ.Paragraphs.Count(); Параграф = Документ.Paragraphs.Item(НомерПараграфа); // В созданный параграф вставить новый "диапазон" // и разместить в нем текст "Прайс-Лист". Параграф.Range.InsertAfter("Прайс-Лист"); // Установить стиль параграфа "Заголовок 1" (он должен быть определен). Параграф.Range.Style="Заголовок 1"; Документ.Paragraphs.Add(); НомерПараграфа = Документ.Paragraphs.Count(); Параграф = Документ.Paragraphs.Item(НомерПараграфа); Параграф.Range.InsertAfter("Сформирован на дату: " + Строка(ТекущаяДата())); Параграф.Range.Style = "Обычный"; ВыборкаКоличества = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВыборкаКоличества.Следующий(); КоличествоСтрок = ВыборкаКоличества.Количество; Документ.Paragraphs.Add(); НомерПараграфа = Документ.Paragraphs.Count(); Параграф=Документ.Paragraphs.Item(НомерПараграфа); // Вставить таблицу с количеством строк равным количеству записей // в выборке результата запроса и с тремя колонками Документ.Tables.Add(Параграф.Range, КоличествоСтрок, 3); // Получить таблицу как объект в отдельную переменную // учитывая тот факт, что таблица у нас единственная Таблица = Документ.Tables.Item(1); // Записать данные в ячейку таблицы строка №1, колонка №1 Таблица.Cell(1,1).Range().InsertAfter("Номенклатура"); // Установить цвет фона в ячейке Таблица.Cell(1,1).Shading.BackgroundPatternColor = 16776960; Таблица.Cell(1,2).Range().InsertAfter("Цена"); Таблица.Cell(1,2).Shading.BackgroundPatternColor = 16776960; Таблица.Cell(1,3).Range().InsertAfter("Ед.Изм."); Таблица.Cell(1,3).Shading.BackgroundPatternColor = 16776960; НомерСтроки = 1; Выборка = ВыборкаКоличества.Выбрать(); Пока Выборка.Следующий() Цикл НомерСтроки = НомерСтроки + 1; Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Выборка.Номенклатура); Таблица.Cell(НомерСтроки,2).Range().InsertAfter(Строка(Выборка.Цена)); Таблица.Cell(НомерСтроки,3).Range().InsertAfter(Выборка.ЕдиницаИзмерения); КонецЦикла; MSWord.Visible = Истина; MSWord.Activate(); Исключение // Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки; |
|||
2
Груздь
30.09.05
✎
10:16
|
(1) Ты (0) читал?
|
|||
3
Рупор абсурда
30.09.05
✎
10:18
|
(0) Ключ для поиска "FormFields" ...
|
|||
4
Demiurg
30.09.05
✎
10:20
|
(2) а тебе может весь VBA выложить?
|
|||
5
Груздь
30.09.05
✎
10:26
|
(4) Выкладывать нужно то, что просят, а не что-нибудь ...
|
|||
6
Macleod
30.09.05
✎
10:27
|
Ни фига не понял...
Вот кусок файла ворда: основании Устава, с одной стороны, и _____, именуемое в дальнейшем «Получатель», в лице __________________, действующ_ на основании ______, с другой стороны, в дальнейшем вместе или раздельно по тексту именуемые «Сторона» или «Стороны» заключили настоящий договор (далее по тексту именуемый «Договор») о нижеследующем: Заменить в этом файле " и ____" на ООО "Рога и копыта", "лице" на "Семенов С.С.". Ну и так далее в том же духе. Насколько знаете, в договорах в конце еще и данные контрагента заносятся. |
|||
7
Demiurg
30.09.05
✎
10:36
|
ActiveDocument.FormFields("__бланполучателя___,").Result = "Получатель Вая"
|
|||
8
Demiurg
30.09.05
✎
10:39
|
поищи в хелпе ворда "Using the FormFields Collection"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |