| 
    
            
         
         | 
    
    
  | 
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 нужен, если перед печатью сложных форм отчетов нужно изменить пару значений, т.е. просто для удобства. Так что вопросы, скорее, к выбору ясных целей.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |