Отчеты в Альта-ГТД, создание сценариев для автоматического создания отчетности
Запуск выгрузки отчета с помощью файла сценария
Запуск осуществляется командой:
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 указываются имена форм отчетов через запятую.
Имя файла отчета можно увидеть в самом приложении при выборе нужного отчета
В разделе SaveTo необходимо указать путь и формат выгрузки каждого отчета.
При необходимости в разделе MailTo можно указать почту, на которую необходимо отправить выгруженный отчет, а также задать тему письма. (По умолчанию в теме письма указывается «Отправка отчета»).
При этом нужно настроить параметры электронной почты в настройках приложения.
Если отправка отчета по электронной почте не нужна, соответствующий раздел в файле сценария можно не указывать.
В разделе Folder необходимо указать каталог, по которому будет строиться отчет. Можно указывать несколько каталогов через запятую.
Каталог с ключом {00000000-0000-0000-0000-000000000000} – это основной каталог.
Посмотреть ключ для нужного каталога можно в программе Альта ГТД. Необходимо открыть любой документ (например, ДТ), находящийся в данном каталоге. Далее в меню ДТ(ГТД) – Информация о документе – скопировать данный ключ из параметра «GUID папки».
Для каждого отчета необходимо добавить свой раздел Filter с именем файла отчета (например, Filter.Report1.dat).
Имена фильтров необходимо смотреть в файле отчета в разделе [Filter]
Для фильтров типа 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 – это дополнительные фильтры для ограничения выборки
Выгрузка по расписанию
Для выгрузки отчета по расписанию необходимо воспользоваться стандартным функционалом операционной системы Windows - Планировщик заданий
В Планировщике необходимо добавить новую задачу, указав на вкладке «Действия» путь и параметры исполняемого файла.
Если файл сценария нужно создавать динамически на основе каких-то данных, например, каждый день строить отчет за последние 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