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