Автоматизация выгрузки отчетов в Word Exel

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Закрыто
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Автоматизация выгрузки отчетов в Word Exel

Сообщение Александр »

Может кто делал? Как автоматизировать экспорт отчета по шаблону - сам отчет интереса не представляет, нужен лишь конечный вариант в виде Word Exel. т.е. в действии выполнить отчет и сразу получить готовый файл без нажатия кнопки экспорт по шаблону (шаблон существует в единственном числе-выбирать не нужно)
В тех. поддержке сказали написать скрипт...-? -никто не делал?? Где можно посмотреть пример?
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

кстати, а на самом деле - как? тоже стало интересно, шаблоны отчетов у нас нормально так используются, быстрое получение файла было бы тоже нелишним. может быть, Теххелп поделится этой тайной? какой-нить простенький пример... если его привести здесь, на форуме - самому Теххелпу будет удобнее, можно, если что, просто дать ссылку на форум.
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Скриптом как-то раз пробовал. Шаблон даже не нужен. Берем визуал бейсик и лабаем скрипт: создаем файл, рисуем таблицу и начинаем в нее вгонять значения из отчета. Неблагодарное занатие для непрограммиста :x Поделюсь опытом чайника - много познаний приносит запись макросов. Записал, потом посмотрел, что получилось и переписал в скрипт в лоцию.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Можно подробнее?
>Берем VB - какой Офисный VBA или просто VB,
>Создаем файл - средствами VB или чем?
>Вгоняем значения из отчета - как? откуда и куда?
>Переписал скрипт в Лоцию- с этого места поподробнее пожалуйста
Если можно, скинь файл скипта на почту :?
Как я понял Лоция имеет интерпритатор VBScript JScript (кстати что они называют скриптами?) где мы пишем код с синтаксисом VB или Java (какие функции этих языков (версий) доступны все или нет? Должен ли быть установлен сам компилятор языка или нет?) после чего запускаем скрипт на исполнение. В каком месте и через какие функции идет привязка VB/Java к объектам Лоции. Если не трудно ответь пожалуйста подробнее (для особо бестолковых) Я думаю в скрипте разобраться не сложно - просто не понятна взаимосвязь с Лоцией и порядок применения скриптов.

(Кстати Лоция на этот вопрос мне ответила следующее - 'Вы можете написать скрипт, который будет автоматически построчно выгружать отчет в MS Word и/или в MS Excel.' что они имели в виду?)
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Сорри за долгое молчание. Отвечать могу только по вечерам :(
В Лоции используется VBScript. Это обрезанная версия VBA. Текст скрипта у меня лоциевский - небольшие примеры дают, проси смело. Могу завтра вечером переслать на почту.
Текст скрипта пишется в отчете на вкладке "Скрипт" - создаешь скрипт, модуль и пишешь обычным образом. В документации по скриптам описаны встроенные функции типа возврата значения из такой-то колонки и такои-то строки. Ничего дополнительно инсталлировать не надо. Как это работает - понятия не имею. Я далек от программирования, но тут вот пришлось... А скрипт работает так - как только отчет выполняется, сразу автоматом запускается скрипт. Он же и ворд поднимает.
Но тут дело в том, что если языка скриптового не знаешь, то можно сделать макрос в режиме записи и потом посмотреть, что ворд туда написал.
Короче, пример проси, а я могу переслать только то, что мне прислали. Ничего другого у меня нет, а тот пример оказался вполне работоспособным, только программистов пришлось потрясти на предмет помощи.
Скрипт еще чем хорош - шаблон не нужен. Создал файл скриптом, сохранить тоже скриптом можно.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Все тема раскрыта, всем спасибо (техподдержка дала исходник)
Если кому интересно пара комментариев по нему

Создаем скрипт+копируем туда код+указываем -вызвать после заполнения данных

Код: Выделить всё

Option explicit                                   'требование объявления переменных

Sub Test()

     Dim ExcApp,doc,sheet,Count,mRow,mValue
     
     MsgBox "Мой первый скрипт Lotsia PDM+", vbOKOnly + vbInformation, "Привет!" 

     'проверим запущен ли в системе Excel если да то подключимся к нему если нет откроем новый
     '(проверку на то что в системе вообще установлен Excel здесь делать не будем) 
     On Error Resume Next                         'если дальше будет ошибка - учесть ее и продолжить работу

     set ExcApp = Getobject(, "Excel.Application")'попробовать подключиться к запущенному Excel    
     if Err.Number <> 0 then                      'Если оказалось что Excel еще не открыт - запустить его
         set ExcApp=CreateObject("Excel.Application") 
         ExcApp.Visible=True                      'сделать Excel видимым
     end if
     
     set Doc=ExcApp.WorkBooks.Add                 'создать в Excel новый документ (книга)
     set Sheet=Doc.WorkSheets.Add                 'создать в документе новый лист     

     mRow=LsRpt.RowCount()                        'прочитать количество строк в отчете Лоции

     with Sheet                                   'поработаем с листом
         .Activate                                'сделаем лист активным 
         .Name="Lotsia PDM+"                      'переименуем его
         .Cells(1,3).Value="Таблица экспортирована из отчета Lotsia PDM+"
         
         For Count=1 to mRow                      'сделаем цикл по количеству строк
            mValue=LsRpt.GetItem(Count,"col2")    'прочитать значение колонки col2 из Лоции
            .Cells(Count+2,3).Value=mValue        'записать полученное значение на лист Excel в 3 столбец начиная с 3 строки
         Next

     end with

    'отключимся от Excel (очистим память) (убъем обекты)
     if Not Sheet Is Nothing Then Set Sheet = Nothing
     if Not Doc Is Nothing Then Set Doc = Nothing
     if Not ExcApp Is Nothing Then Set ExcApp = Nothing

End Sub 
Вообще Лоция приятно удивила!! , т.е. можно работать с любым приложением у которого есть документированный COM интерфейс т.е. все программы MSOffice/AutoDesk/модули ActiveX и т.д. -Окно в мир.(конечно у COM есть свои неприятности - но все равно это круто)
Каждый может начать работать с этим сразу если он писал макросы в Офисных приложениях или купил любую книжку по VBA для офиса :D 8) :lol:
Правда еще бы не выводить сам отчет на экран? Да и писать не в новый файл а в шаблон? и еще бы это ... да и то бы не помешало ... Короче нет документации - будем разбираться сами с техподдержкой.
(ps кстати в BBCode 'code' '/code' можно бы сделать покрасивей :P )
Последний раз редактировалось Александр 28 сен 2006, 08:39, всего редактировалось 10 раз.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Вопрос к модератору (Техподдержке) по скриптам
1. Скажите в каком объеме и какие версии VBScript и JScript поддерживает ваш интерпритатор?
2. Будет ли развиваться редактор кода? (хотя-бы в плане табуляции)
Admin_PLM_Board
Site Admin
Сообщения: 391
Зарегистрирован: 18 июн 2004, 17:53
Используемое ПО: Lotsia PLM

Сообщение Admin_PLM_Board »

Господа, пожалуйста, прочитайте тему "Общая информация по форуму" :
"1. Данный форум не является официальным форумом технической поддержки".
;)
Вопросы в техподдержку лучше задавать напрямую (здесь техподдержка не отвечает).
Форум предназначен, в первую очередь, для общения пользователей друг с другом.
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

> Правда еще бы не выводить сам отчет на экран?

А там вроде есть в предоставляемых функциях что-то типа reset, не помню как называется, поищи. Она экран отчета очищает. То есть выполняем скрипт, а в конце, после выгрузки в файл, делаем очистку.

> Да и писать не в новый файл а в шаблон?

Тут есть другая сторона - шаблоны и export.psr надо всем на рабочие места раздать. Хорошо, если у тебя 10 юзеров, а если 400? А так - создал файл, выгрузил все в него, вызвал save, дал имя и сделал видимым. Кстати, а если вызвать save без имени, то по-моему открывается окно импорта и можно готовый файл в архив положить :D
А еще можно с помощью msgbox спросить, сохранять файл или нет. Короче, есть куда развернуться
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

не знаю, у нас шаблоны на сети лежат и никому ничего раздавать не нужно, другое дело что каждому нужно привязать отчет это-да , - неудобно.:wink:
Функция Reset здесь не подходит в плане того что хотелось не чистить отчет-а вообще не выводить его на экран.
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Закрывая тему (использую шаблон ...)
:wink: Хорошая новость - Лоция анонсировала функцию OleExport которая будет документирована в ближайших сборках и позволит автоматически (скриптом) выполнить экспорт с указанием файла шаблона и файла приемника в параметрах вызова.
:( Плохая новость - Функция закрытия активного окна (Отчет/Дерево проекта) Не запланирована (а ведь бывает нужна!)

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Закрыто