Вход | Регистрация


1С, MS Word и аргументы, возможно ли ?

1С, MS Word и аргументы, возможно ли ?
Я
   Mr_Best
 
02.11.16 - 11:32
Доброго дня Коллеги!
Очередная казалось бы простая задачка, сформировать документ MS Word из 1С. Открываю справку по объектной модели MS Word на сайте MSDN, листаю и понимаю, что там есть все и на все случаи жизни.
И тут затык ..., все уже перегуглил, все тщетно :(
Вот простой пример с того же сайта:
Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=7)
rng.Select()
Теперь то же само на 1С:
Документ = MSWord.Application.Documents(1);
Документ.Activate();
        
Область = Документ.Range();
Область.Select()

Но вопрос, как передать аргументы Start:=0, End:=7 ?
 
 
   Mr_Best
 
1 - 02.11.16 - 11:48
Отвечаю, вот так: Область = Документ.Range(10, 20);
   Emery
 
2 - 02.11.16 - 12:01
> казалось бы простая задачка, сформировать документ MS Word из 1С

Можно предложить универсальное, но несколько необычное решение. Понравиться может не всем.

Есть такая штука FOP. Это процессор форматирующих объектов. Другими словами на основе двух xml-файлов (с данными и с макетом печатной формы в формате xsl:fo) создаются файлы типа pdf, rtf и некоторые другие. В данном случае нас интересует rtf. В 1С мы формируем xml-файл с данными. Файл с макетом печатной формы можно создать независимо вручную либо с помощью специализированных (правда, коммерческих или условно-бесплатных) программ. Далее, полученные два xml-файла направляются фоп-процессору либо его превьюеру. Полученный rtf-файл можно открыть в ворде как из 1С, так и независимо. Кстати, аналогичную тему я обсуждал на sql.ru ( http://www.sql.ru/forum/1236640/kak-uskorit-sozdanie-maketov-slozhnyh-pechatnyh-form ).
   Базис
 
3 - 02.11.16 - 12:37
(0) Не пиши, сгугли готовый код.
(2) Оно, как БСП, требует поддержки 24*7, ИТС ,онлайна и облаков, платформозависимо и никому не понятно?
   Mr_Best
 
4 - 02.11.16 - 12:40
(2) ИМХО, дольше, ведь нужное еще и разобраться в стандартах этого софта + выходной файл не doc (как настраивать сложное форматирование). В моей задаче нужно по мимо простой замены текста выводить изображения, формировать таблицы. И все должно работать универсально, т.е. пользователь в шаблоне (документ MS Word) вставляет метки на основании которых выше описанные действия выполняются. Работа программиста сводится лишь к добавлению этих самых меток в список доступных. Возможно придется реализовать условия. Как это будет выглядеть на процессоре не очень понятно.
   Mr_Best
 
5 - 02.11.16 - 12:41
(3) Сгуглить готовый код ? А нет такого )
   Мойдодыр
 
6 - 02.11.16 - 12:43
(2) Не охота учить какой то непонятный шаблонизатор
   Zamestas
 
7 - 02.11.16 - 12:44
(4) На VBA руками макрос нарисуй и посмотри как Word это делает.
   Emery
 
8 - 02.11.16 - 12:50
(3) > Оно, как БСП, требует поддержки 24*7, ИТС ,онлайна и облаков, платформозависимо и никому не понятно?

Это способ сделать для себя либо своего предприятия. Причем можно ограничиться внешней обработкой только. Если стремиться к охвату нескольких конфигураций, то во внешней обработке для каждой конфигурации нужно будет учитывать разную структуру данных. Но это уже отдельный вопрос.

FOP это платформо-независимая штука на яве, сначала написанная под Линкус, а затем портированная под Виндоуз.

То, что не очень понятно, согласен, я разбирался несколько дней, прежде, чем начал писать макеты под фоп, с поддержкой русского языка. Зато можно, в принципе, писать и иероглифами, если будет, скажем, заказ для китайцев : ) .
   Мойдодыр
 
9 - 02.11.16 - 12:51
(8) Ты уйдешь и все - никто ничего не сможет понять )))
   Garykom
 
10 - 02.11.16 - 12:55
(2) Может проще сразу юзать https://poi.apache.org/ ?
 
 Рекламное место пустует
   Мойдодыр
 
11 - 02.11.16 - 13:00
(10) Зачем юзать жава апи, когда есть родное?
И вообще шаблонизатор - это выше уровнем чем прост апи
   Emery
 
12 - 02.11.16 - 13:06
(4) А чем вас rtf не устраивает? Открываете в ворде и сохраняете как doc или docx-файл. ФОП поддерживает изображения и даже слои. Он основан на принципе блочной вёрстки (аналог div в html), что считается более прогрессивным по сравнению с табличной версткой (который поддерживает табличный редактор 1С или, скажем, эксел). Для сложных отчетов и форм это самое то, именно этим я сейчас и занимаюсь (см. мою ссылку на sql.ru). В макет указываются поля, значения которых подставляются из смежного xml-файла с данными. Там поддерживаются циклы, условия и прочее.

Сложно, да, непонятно, да. Но разобраться при желании можно.
   Emery
 
13 - 02.11.16 - 13:08
(6) > Не охота учить какой то непонятный шаблонизатор

А учить не надо, если нет нужды. Достаточно просто знать о такой возможности.
   Emery
 
14 - 02.11.16 - 13:10
(9) > Ты уйдешь и все - никто ничего не сможет понять )))

Если я разобрался за несколько дней, то и другие разберутся за несколько дней. Тем более, что на эту тему можно написать пару статеек, если будет время и желание.
   Emery
 
15 - 02.11.16 - 13:15
(10) Как я понял по первому взгляду там используется OLE. А мне это не очень интересно. Для целей производительности мне интересно работать с чистым текстом (к которому относиться и xml).
   Mr_Best
 
16 - 02.11.16 - 13:22
(12) ну а зачем тогда Word если есть rtf ? Да, возможно текущая задача может быть реализована на rtf, а что если в будущем потребуется что-то сложнее, чего нет в rtf или что не корректно конвертируется из rtf в word ? Если конечная цель doc, зачем вообще использовать промежуточное звено (rtf) ? Вообщем одни вопросы )
(7) Есть объектная модель MS Word, если предположить что все ее возможности доступные из 1С, более ничего не требуется.
   Emery
 
17 - 02.11.16 - 13:38
(16) В ФОПе основной формат это pdf. Он поддерживает максимум возможностей. Он предназначен только для печати (хотя платные программы от Adobe позволяют свободно редактировать цифровой pdf). Rtf нужен, если перед печатью сложных форм отчетов нужно изменить пару значений, т.е. просто для удобства. Так что вопросы, скорее, к выбору ясных целей.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует