Автоматизация выгрузки отчетов в Word Exel
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Автоматизация выгрузки отчетов в Word Exel
Может кто делал? Как автоматизировать экспорт отчета по шаблону - сам отчет интереса не представляет, нужен лишь конечный вариант в виде Word Exel. т.е. в действии выполнить отчет и сразу получить готовый файл без нажатия кнопки экспорт по шаблону (шаблон существует в единственном числе-выбирать не нужно)
В тех. поддержке сказали написать скрипт...-? -никто не делал?? Где можно посмотреть пример?
В тех. поддержке сказали написать скрипт...-? -никто не делал?? Где можно посмотреть пример?
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
кстати, а на самом деле - как? тоже стало интересно, шаблоны отчетов у нас нормально так используются, быстрое получение файла было бы тоже нелишним. может быть, Теххелп поделится этой тайной? какой-нить простенький пример... если его привести здесь, на форуме - самому Теххелпу будет удобнее, можно, если что, просто дать ссылку на форум.
лучше день потерять, потом за пять минут долететь!
- Старик Крупский
- Активный участник
- Сообщения: 803
- Зарегистрирован: 27 июл 2006, 22:17
- Откуда: Москва
Скриптом как-то раз пробовал. Шаблон даже не нужен. Берем визуал бейсик и лабаем скрипт: создаем файл, рисуем таблицу и начинаем в нее вгонять значения из отчета. Неблагодарное занатие для непрограммиста
Поделюсь опытом чайника - много познаний приносит запись макросов. Записал, потом посмотрел, что получилось и переписал в скрипт в лоцию.

- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 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.' что они имели в виду?)
>Берем VB - какой Офисный VBA или просто VB,
>Создаем файл - средствами VB или чем?
>Вгоняем значения из отчета - как? откуда и куда?
>Переписал скрипт в Лоцию- с этого места поподробнее пожалуйста
Если можно, скинь файл скипта на почту

Как я понял Лоция имеет интерпритатор VBScript JScript (кстати что они называют скриптами?) где мы пишем код с синтаксисом VB или Java (какие функции этих языков (версий) доступны все или нет? Должен ли быть установлен сам компилятор языка или нет?) после чего запускаем скрипт на исполнение. В каком месте и через какие функции идет привязка VB/Java к объектам Лоции. Если не трудно ответь пожалуйста подробнее (для особо бестолковых) Я думаю в скрипте разобраться не сложно - просто не понятна взаимосвязь с Лоцией и порядок применения скриптов.
(Кстати Лоция на этот вопрос мне ответила следующее - 'Вы можете написать скрипт, который будет автоматически построчно выгружать отчет в MS Word и/или в MS Excel.' что они имели в виду?)
- Старик Крупский
- Активный участник
- Сообщения: 803
- Зарегистрирован: 27 июл 2006, 22:17
- Откуда: Москва
Сорри за долгое молчание. Отвечать могу только по вечерам
В Лоции используется VBScript. Это обрезанная версия VBA. Текст скрипта у меня лоциевский - небольшие примеры дают, проси смело. Могу завтра вечером переслать на почту.
Текст скрипта пишется в отчете на вкладке "Скрипт" - создаешь скрипт, модуль и пишешь обычным образом. В документации по скриптам описаны встроенные функции типа возврата значения из такой-то колонки и такои-то строки. Ничего дополнительно инсталлировать не надо. Как это работает - понятия не имею. Я далек от программирования, но тут вот пришлось... А скрипт работает так - как только отчет выполняется, сразу автоматом запускается скрипт. Он же и ворд поднимает.
Но тут дело в том, что если языка скриптового не знаешь, то можно сделать макрос в режиме записи и потом посмотреть, что ворд туда написал.
Короче, пример проси, а я могу переслать только то, что мне прислали. Ничего другого у меня нет, а тот пример оказался вполне работоспособным, только программистов пришлось потрясти на предмет помощи.
Скрипт еще чем хорош - шаблон не нужен. Создал файл скриптом, сохранить тоже скриптом можно.

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

Правда еще бы не выводить сам отчет на экран? Да и писать не в новый файл а в шаблон? и еще бы это ... да и то бы не помешало ... Короче нет документации - будем разбираться сами с техподдержкой.
(ps кстати в BBCode 'code' '/code' можно бы сделать покрасивей
)
Если кому интересно пара комментариев по нему
Создаем скрипт+копируем туда код+указываем -вызвать после заполнения данных
Код: Выделить всё
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
Каждый может начать работать с этим сразу если он писал макросы в Офисных приложениях или купил любую книжку по VBA для офиса



Правда еще бы не выводить сам отчет на экран? Да и писать не в новый файл а в шаблон? и еще бы это ... да и то бы не помешало ... Короче нет документации - будем разбираться сами с техподдержкой.
(ps кстати в BBCode 'code' '/code' можно бы сделать покрасивей

Последний раз редактировалось Александр 28 сен 2006, 08:39, всего редактировалось 10 раз.
-
- Site Admin
- Сообщения: 404
- Зарегистрирован: 18 июн 2004, 17:53
- Используемое ПО: Lotsia PLM
Господа, пожалуйста, прочитайте тему "Общая информация по форуму" : 
Вопросы в техподдержку лучше задавать напрямую (здесь техподдержка не отвечает).
Форум предназначен, в первую очередь, для общения пользователей друг с другом.
"1. Данный форум не является официальным форумом технической поддержки".

Вопросы в техподдержку лучше задавать напрямую (здесь техподдержка не отвечает).
Форум предназначен, в первую очередь, для общения пользователей друг с другом.
- Старик Крупский
- Активный участник
- Сообщения: 803
- Зарегистрирован: 27 июл 2006, 22:17
- Откуда: Москва
> Правда еще бы не выводить сам отчет на экран?
А там вроде есть в предоставляемых функциях что-то типа reset, не помню как называется, поищи. Она экран отчета очищает. То есть выполняем скрипт, а в конце, после выгрузки в файл, делаем очистку.
> Да и писать не в новый файл а в шаблон?
Тут есть другая сторона - шаблоны и export.psr надо всем на рабочие места раздать. Хорошо, если у тебя 10 юзеров, а если 400? А так - создал файл, выгрузил все в него, вызвал save, дал имя и сделал видимым. Кстати, а если вызвать save без имени, то по-моему открывается окно импорта и можно готовый файл в архив положить
А еще можно с помощью msgbox спросить, сохранять файл или нет. Короче, есть куда развернуться
А там вроде есть в предоставляемых функциях что-то типа reset, не помню как называется, поищи. Она экран отчета очищает. То есть выполняем скрипт, а в конце, после выгрузки в файл, делаем очистку.
> Да и писать не в новый файл а в шаблон?
Тут есть другая сторона - шаблоны и export.psr надо всем на рабочие места раздать. Хорошо, если у тебя 10 юзеров, а если 400? А так - создал файл, выгрузил все в него, вызвал save, дал имя и сделал видимым. Кстати, а если вызвать save без имени, то по-моему открывается окно импорта и можно готовый файл в архив положить

А еще можно с помощью msgbox спросить, сохранять файл или нет. Короче, есть куда развернуться
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Закрывая тему (использую шаблон ...)
Хорошая новость - Лоция анонсировала функцию OleExport которая будет документирована в ближайших сборках и позволит автоматически (скриптом) выполнить экспорт с указанием файла шаблона и файла приемника в параметрах вызова.
Плохая новость - Функция закрытия активного окна (Отчет/Дерево проекта) Не запланирована (а ведь бывает нужна!)


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