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

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску
м
Строка 1: Строка 1:
Запуск выгрузки отчета с помощью файла сценария
+
== Запуск выгрузки отчета с помощью файла сценария ==
  
  
Запуск осуществляется командой:  
+
'''Запуск осуществляется командой:'''
 +
 
 
C:\Alta\GtdRep.exe /sC:\Temp\scen.ini
 
C:\Alta\GtdRep.exe /sC:\Temp\scen.ini
 +
 
где
 
где
 +
 
"C:\Alta\" – путь к каталогу, где установлена программа Альта ГТД
 
"C:\Alta\" – путь к каталогу, где установлена программа Альта ГТД
 +
 
"C:\Temp\scen.ini" – путь к файлу сценария
 
"C:\Temp\scen.ini" – путь к файлу сценария
  
Формат файла сценария:
+
'''Формат файла сценария:'''
 +
 
 
[Count]
 
[Count]
 +
 
Forms=Report1.dat,Report2.dat,...  ; имена форм отчетов
 
Forms=Report1.dat,Report2.dat,...  ; имена форм отчетов
 +
 
[SaveTo]
 
[SaveTo]
 +
 
Report1.dat=С:\отчет1.xls  ; имена файлов куда сохранить
 
Report1.dat=С:\отчет1.xls  ; имена файлов куда сохранить
 
Report2.dat=D:\отчет2.htm
 
Report2.dat=D:\отчет2.htm
 +
 
...
 
...
 +
 
[MailTo]
 
[MailTo]
 +
 
Report1.dat=test@test.ru
 
Report1.dat=test@test.ru
 
Report2.dat=test@test.ru
 
Report2.dat=test@test.ru
 +
 
 
[Folder]  
+
 
 +
[Folder]
 +
 
 
Report1. dat ={00000000-0000-0000-0000-000000000000}  ;здесь указан основной каталог
 
Report1. dat ={00000000-0000-0000-0000-000000000000}  ;здесь указан основной каталог
 
Report2. dat ={00000000-0000-0000-0000-000000000000}
 
Report2. dat ={00000000-0000-0000-0000-000000000000}
+
 
[Filter.Report1.dat]; параметры фильтра
+
…[Filter.Report1.dat]; параметры фильтра
 +
 
 
7_1.Date.From_Date=01-01-2020
 
7_1.Date.From_Date=01-01-2020
 +
 
7_1.Date.To_Date=31-12-2020
 
7_1.Date.To_Date=31-12-2020
 +
 
7_1.Post=10210100
 
7_1.Post=10210100
 
REGISTER=1
 
REGISTER=1
 +
 
EDDOCS=1
 
EDDOCS=1
 +
 
ENDRES=1
 
ENDRES=1
 +
 
[Filter.Report2.dat]
 
[Filter.Report2.dat]
 +
 
...
 
...
  
+
'''Подробное описание файла сценария'''
Подробное описание файла сценария
+
 
В разделе Count указываются имена форм отчетов через запятую.
+
В разделе '''Count''' указываются имена форм отчетов через запятую.
 +
 
 
Имя файла отчета можно увидеть в самом приложении при выборе нужного отчета
 
Имя файла отчета можно увидеть в самом приложении при выборе нужного отчета
 
   
 
   
 
[[Изображение:filename_of_report.jpg]]
 
[[Изображение:filename_of_report.jpg]]
 
   
 
   
В разделе SaveTo необходимо указать путь и формат выгруки каждого отчета
+
В разделе '''SaveTo''' необходимо указать путь и формат выгрузки каждого отчета
При необходимости, в разделе MailTo можно указать почту, на которую необходимо отправить выгруженный отчет.
+
 +
При необходимости, в разделе '''MailTo''' можно указать почту, на которую необходимо отправить выгруженный отчет.
 +
 
При этом нужно настроить параметры электронной почты в настройках приложения.
 
При этом нужно настроить параметры электронной почты в настройках приложения.
 
   
 
   
Строка 47: Строка 71:
  
 
Если отправка отчета по электронной почте не нужна, соответствующий раздел в файле сценария можно не указывать.
 
Если отправка отчета по электронной почте не нужна, соответствующий раздел в файле сценария можно не указывать.
+
 
В разделе Folder необходимо указать каталог, по которому будет строиться отчет. Можно указывать несколько каталогов через запятую.
+
В разделе '''Folder''' необходимо указать каталог, по которому будет строиться отчет. Можно указывать несколько каталогов через запятую.
 +
 
 
Каталог с ключом {00000000-0000-0000-0000-000000000000} – это основной каталог.
 
Каталог с ключом {00000000-0000-0000-0000-000000000000} – это основной каталог.
 +
 
Посмотреть ключ для нужного каталога можно в программе Альта ГТД. Необходимо открыть любой документ (например, ДТ), находящий в данном каталоге. Далее в меню ДТ(ГТД) – Информация о документе – скопировать данный ключ из параметра «GUID папки».
 
Посмотреть ключ для нужного каталога можно в программе Альта ГТД. Необходимо открыть любой документ (например, ДТ), находящий в данном каталоге. Далее в меню ДТ(ГТД) – Информация о документе – скопировать данный ключ из параметра «GUID папки».
  
 
[[Изображение:info.jpg]]
 
[[Изображение:info.jpg]]
 
   
 
   
+
Для каждого отчета необходимо добавить свой раздел '''Filter''' с именем файла отчета (например, Filter.Report1.dat).
Для каждого отчета необходимо добавить свой раздел Filter с именем файла отчета (например, Filter.Report1.dat).
+
 
Имена фильтров необходимо смотреть в файле отчета в разделе [Filters]
 
Имена фильтров необходимо смотреть в файле отчета в разделе [Filters]
 
   
 
   
 
[[Изображение:filter_names.jpg]]
 
[[Изображение:filter_names.jpg]]
  
Для фильтров типа Date есть возможность указания как конкретной даты, так и поименованного периода.
+
Для фильтров типа '''Date''' есть возможность указания как конкретной даты, так и поименованного периода.
 +
 
 
Например:
 
Например:
 +
 
7_1.Date = TODAY
 
7_1.Date = TODAY
 +
 
Тут возможны варианты: TODAY, YESTERDAY, CURWEEK, LASTWEEK, CURMONTH, LASTMONTH, CURYEAR, LASTYEAR (сегодня, вчера, тек. неделя, прошлая неделя, тек. месяц, прошлый месяц, тек. год, прошлый год)
 
Тут возможны варианты: TODAY, YESTERDAY, CURWEEK, LASTWEEK, CURMONTH, LASTMONTH, CURYEAR, LASTYEAR (сегодня, вчера, тек. неделя, прошлая неделя, тек. месяц, прошлый месяц, тек. год, прошлый год)
 +
 
Либо конкретные даты:
 
Либо конкретные даты:
 +
 
7_1.Date.From_Date=01-01-2020
 
7_1.Date.From_Date=01-01-2020
 +
 
7_1.Date.To_Date=31-12-2020
 
7_1.Date.To_Date=31-12-2020
 +
 
Даты в формате [ДД-ММ-ГГГГ]
 
Даты в формате [ДД-ММ-ГГГГ]
  
Фильтры EDDOCS, REGISTER, ENDRES – это дополнительные фильтры для ограничения выборки
+
Фильтры '''EDDOCS, REGISTER, ENDRES''' – это дополнительные фильтры для ограничения выборки
  
 
[[Изображение:filter_window.jpg]]
 
[[Изображение:filter_window.jpg]]
 
 
Выгрузка по расписанию
 
  
Для выгрузки отчета по расписанию необходимо воспользоваться стандартным функционалом операционной системы Windows -  Планировщик заданий
+
== Выгрузка по расписанию ==
 +
Для выгрузки отчета по расписанию необходимо воспользоваться стандартным функционалом операционной системы Windows -  '''Планировщик заданий'''
 +
 
 
В Планировщике необходимо добавить новую задачу, указав на вкладке «Действия» путь и параметры исполняемого файла.
 
В Планировщике необходимо добавить новую задачу, указав на вкладке «Действия» путь и параметры исполняемого файла.
  
 
[[Изображение:plan.jpg]]
 
[[Изображение:plan.jpg]]
+
 
 
Если файл сценария нужно создавать динамически на основе каких-то данных, например, каждый день строить отчет за последние 3 дня относительно текущей даты, то для этого можно воспользоваться стандартным функционалом Windows – пакетным файлом (файл .bat)
 
Если файл сценария нужно создавать динамически на основе каких-то данных, например, каждый день строить отчет за последние 3 дня относительно текущей даты, то для этого можно воспользоваться стандартным функционалом Windows – пакетным файлом (файл .bat)
Т.е. необходимо разработать bat-файл, который будет генерировать файл сценария и запускать выгрузку отчета по этиму файлом сценария.
+
 
 +
Т.е. необходимо сформировать bat-файл, который будет генерировать файл сценария и запускать выгрузку отчета по этому файлу сценария.
 +
 
 
В планировщик при этом необходимо будет добавлять задачу с указанием пути к данному bat-файлу.
 
В планировщик при этом необходимо будет добавлять задачу с указанием пути к данному bat-файлу.
 +
 
Пример такого bat-файла с генерацией файла сценария, запускающего построение отчета за последние 3 дня от текущей даты:
 
Пример такого bat-файла с генерацией файла сценария, запускающего построение отчета за последние 3 дня от текущей даты:
  
Строка 89: Строка 124:
  
 
SET "days=3"
 
SET "days=3"
 +
 
SET "report=report31.dat"
 
SET "report=report31.dat"
 +
 
SET "dir={00000000-0000-0000-0000-000000000000}"
 
SET "dir={00000000-0000-0000-0000-000000000000}"
 +
 
SET "saveto=C:\tmp1\report31.csv"
 
SET "saveto=C:\tmp1\report31.csv"
 
SET "till=%date%"
 
SET "till=%date%"
  
 
CALL:DateToJDN %till% tillNo
 
CALL:DateToJDN %till% tillNo
 +
 
SET /a fromNo=tillNo-days+1
 
SET /a fromNo=tillNo-days+1
 
CALL:JDNToDate %fromNo% from
 
CALL:JDNToDate %fromNo% from
  
 
del "scen.ini"
 
del "scen.ini"
 +
 
echo [Count] >>scen.ini
 
echo [Count] >>scen.ini
 +
 
echo Forms=%report% >>scen.ini
 
echo Forms=%report% >>scen.ini
 +
 
echo [saveto] >>scen.ini
 
echo [saveto] >>scen.ini
 +
 
echo %report%=%saveto% >>scen.ini
 
echo %report%=%saveto% >>scen.ini
 +
 
echo [Filter.%report%] >>scen.ini
 
echo [Filter.%report%] >>scen.ini
 +
 
echo GetDV.From_Date = %from% >>scen.ini
 
echo GetDV.From_Date = %from% >>scen.ini
 +
 
echo GetDV.To_Date = %till% >>scen.ini
 
echo GetDV.To_Date = %till% >>scen.ini
 +
 
echo REGISTER=1 >>scen.ini
 
echo REGISTER=1 >>scen.ini
 +
 
echo EDDOCS=1 >>scen.ini
 
echo EDDOCS=1 >>scen.ini
 +
 
echo [folder] >>scen.ini
 
echo [folder] >>scen.ini
 +
 
echo %report%=%dir% >>scen.ini
 
echo %report%=%dir% >>scen.ini
  
 
TIMEOUT /T 1
 
TIMEOUT /T 1
 +
 
start "" "c:\alta\GtdRep.exe" "/sc:\tmp1\testbat\scen.ini"
 
start "" "c:\alta\GtdRep.exe" "/sc:\tmp1\testbat\scen.ini"
 +
 
GOTO:EOF
 
GOTO:EOF
  
 
rem Convert the date to Julian Day Number
 
rem Convert the date to Julian Day Number
  
:DateToJDN dd.mm.yyyy jdn=
+
<nowiki>:</nowiki>DateToJDN dd.mm.yyyy jdn=
  
 
setlocal
 
setlocal
 +
 
set date=%1
 
set date=%1
 +
 
set /A yy=%date:~-4%, mm=1%date:~-7,2% %% 100, dd=1%date:~-10,2% %% 100
 
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
 
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%
 
endlocal & set %2=%jdn%
 +
 
exit /B
 
exit /B
  
 
rem Convert Julian Day Number back to date
 
rem Convert Julian Day Number back to date
  
:JDNToDate jdn dd.mm.yyyy=
+
<nowiki>:</nowiki>JDNToDate jdn dd.mm.yyyy=
  
 
setlocal
 
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
 
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 %dd% lss 10 set dd=0%dd%
 +
 
if %mm% lss 10 set mm=0%mm%
 
if %mm% lss 10 set mm=0%mm%
 
endlocal & set %2=%dd%.%mm%.%yy%
 
endlocal & set %2=%dd%.%mm%.%yy%

Версия 15:25, 16 апреля 2020

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

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

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).

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

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