Имя: Пароль:
1C
 
1С, MS Word и аргументы, возможно ли ?
,
0 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 ?
1 Mr_Best
 
02.11.16
11:48
Отвечаю, вот так: Область = Документ.Range(10, 20);
2 Emery
 
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 Базис
 
naïve
02.11.16
12:37
(0) Не пиши, сгугли готовый код.
(2) Оно, как БСП, требует поддержки 24*7, ИТС ,онлайна и облаков, платформозависимо и никому не понятно?
4 Mr_Best
 
02.11.16
12:40
(2) ИМХО, дольше, ведь нужное еще и разобраться в стандартах этого софта + выходной файл не doc (как настраивать сложное форматирование). В моей задаче нужно по мимо простой замены текста выводить изображения, формировать таблицы. И все должно работать универсально, т.е. пользователь в шаблоне (документ MS Word) вставляет метки на основании которых выше описанные действия выполняются. Работа программиста сводится лишь к добавлению этих самых меток в список доступных. Возможно придется реализовать условия. Как это будет выглядеть на процессоре не очень понятно.
5 Mr_Best
 
02.11.16
12:41
(3) Сгуглить готовый код ? А нет такого )
6 Мойдодыр
 
02.11.16
12:43
(2) Не охота учить какой то непонятный шаблонизатор
7 Zamestas
 
02.11.16
12:44
(4) На VBA руками макрос нарисуй и посмотри как Word это делает.
8 Emery
 
02.11.16
12:50
(3) > Оно, как БСП, требует поддержки 24*7, ИТС ,онлайна и облаков, платформозависимо и никому не понятно?

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

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

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

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

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

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