Отчеты в Альта-ГТД, создание сценариев для автоматического создания отчетности

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску

Запуск выгрузки отчета с помощью файла сценария

Запуск осуществляется командой:

C:\Alta\GtdRep.exe /sC:\Temp\scen.ini

где

"C:\Alta\" – путь к каталогу, где установлена программа Альта ГТД

"C:\Temp\scen.ini" – путь к файлу сценария

Формат файла сценария:

[Count]
Forms=Report1.dat,Report2.dat,...   ; имена форм отчетов

[SaveTo]
Report1.dat=С:\отчет1.xls   ; имена файлов куда сохранить
Report2.dat=D:\отчет2.htm

...

[MailTo]
Report1.dat=test@test.ru|Тема письма
Report2.dat=test@test.ru|Тема письма

...

[Folder]
Report1. dat ={00000000-0000-0000-0000-000000000000}  ;здесь указан основной каталог
Report2. dat ={00000000-0000-0000-0000-000000000000}

...

[Filter.Report1.dat]; параметры фильтра
7_1.Date.From_Date=01-01-2020
7_1.Date.To_Date=31-12-2020
7_1.Post=10210100
REGISTER=1
EDDOCS=1
ENDRES=1

[Filter.Report2.dat]
...


Подробное описание файла сценария

В разделе Count указываются имена форм отчетов через запятую.

Имя файла отчета можно увидеть в самом приложении при выборе нужного отчета

Filename of report.jpg

В разделе SaveTo необходимо указать путь и формат выгрузки каждого отчета.

При необходимости в разделе MailTo можно указать почту, на которую необходимо отправить выгруженный отчет, а также задать тему письма. (По умолчанию в теме письма указывается «Отправка отчета»).

При этом нужно настроить параметры электронной почты в настройках приложения.

Mail settings.jpg

Если отправка отчета по электронной почте не нужна, соответствующий раздел в файле сценария можно не указывать.

В разделе Folder необходимо указать каталог, по которому будет строиться отчет. Можно указывать несколько каталогов через запятую.

Каталог с ключом {00000000-0000-0000-0000-000000000000} – это основной каталог.

Посмотреть ключ для нужного каталога можно в программе Альта ГТД. Необходимо открыть любой документ (например, ДТ), находящийся в данном каталоге. Далее в меню ДТ(ГТД) – Информация о документе – скопировать данный ключ из параметра «GUID папки».

Info.jpg

Для каждого отчета необходимо добавить свой раздел Filter с именем файла отчета (например, Filter.Report1.dat).

Имена фильтров необходимо смотреть в файле отчета в разделе [Filter]

Filter names.jpg

Для фильтров типа Date есть возможность указания как конкретной даты, так и поименованного периода.

Например:

7_1.Date = TODAY

Тут возможны варианты: TODAY, YESTERDAY, CURWEEK, LASTWEEK, CURMONTH, LASTMONTH, CURYEAR, LASTYEAR (сегодня, вчера, тек. неделя, прошлая неделя, тек. месяц, прошлый месяц, тек. год, прошлый год)

Либо конкретные даты:

7_1.Date.From_Date=01-01-2020

7_1.Date.To_Date=31-12-2020

Даты в формате [ДД-ММ-ГГГГ]

Фильтры EDDOCS, REGISTER, ENDRES – это дополнительные фильтры для ограничения выборки

Filter window.jpg

Выгрузка по расписанию

Для выгрузки отчета по расписанию необходимо воспользоваться стандартным функционалом операционной системы Windows - Планировщик заданий

В Планировщике необходимо добавить новую задачу, указав на вкладке «Действия» путь и параметры исполняемого файла.

Plan.jpg

Если файл сценария нужно создавать динамически на основе каких-то данных, например, каждый день строить отчет за последние 3 дня относительно текущей даты, то для этого можно воспользоваться стандартным функционалом Windows – пакетным файлом (файл .bat)

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

В планировщик при этом необходимо будет добавлять задачу с указанием пути к данному bat-файлу.

Пример такого bat-файла с генерацией файла сценария, запускающего построение отчета за последние 3 дня от текущей даты:

@echo off
&SETLOCAL
SET "days=3"
SET "report=report31.dat"
SET "dir={00000000-0000-0000-0000-000000000000}"
SET "saveto=C:\tmp1\report31.csv"
SET "till=%date%"

CALL:DateToJDN %till% tillNo

SET /a fromNo=tillNo-days+1

CALL:JDNToDate %fromNo% from

del "scen.ini"

echo [Count] >>scen.ini
echo Forms=%report% >>scen.ini
echo [saveto] >>scen.ini
echo %report%=%saveto% >>scen.ini
echo [Filter.%report%] >>scen.ini
echo GetDV.From_Date = %from% >>scen.ini
echo GetDV.To_Date = %till% >>scen.ini
echo REGISTER=1 >>scen.ini
echo EDDOCS=1 >>scen.ini
echo [folder] >>scen.ini
echo %report%=%dir% >>scen.ini

TIMEOUT /T 1

start "" "c:\alta\GtdRep.exe" "/sc:\tmp1\testbat\scen.ini"

GOTO:EOF

rem Convert the date to Julian Day Number

:DateToJDN dd.mm.yyyy jdn=

setlocal
set date=%1
set /A yy=%date:~-4%, mm=1%date:~-7,2% %% 100, dd=1%date:~-10,2% %% 100
set /A a=mm-14, jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075 

endlocal & set %2=%jdn%

exit /B rem Convert Julian Day Number back to date

:JDNToDate jdn dd.mm.yyyy=

setlocal
set /A l=%1+68569,n=(4*l)/146097,l=l-(146097*n+3)/4,i=(4000*(l+1))/1461001,l=l-(1461*i)/4+31,j=(80*l)/2447,dd=l-(2447*j)/80,l=j/11,mm=j+2-(12*l),yy=100*(n-49)+i+l 

if %dd% lss 10 set dd=0%dd%

if %mm% lss 10 set mm=0%mm%

endlocal & set %2=%dd%.%mm%.%yy%

exit /B

endlocal