Выгрузка электронных документов через FastReport VCL
Если Вы хотите перейти на электронный документооборот СБИС, а Ваша информационная система не умеет выгружать ни регламентированные XML файлы , ни в одном из поддерживаемых СБИС Коннект форматах. Но при этом она для печати документов использует FastReport VCL этот способ для Вас.
Дело в том, что файлы готовых отчетов FastReport (fp3) по сути являются XML файлами, а значит их можно Конвертировать в XML документы при помощи СБИС Коннект.
Для этого есть два варианта: 1. Ваша система самостоятельно выгружаете fp3 файлы в каталог Отправленные СБИС Коннект и далее они обрабатываются по соответствующему регламенту. Единственное ограничение, Вы должны сделать комплексный отчет, чтобы все документы в рамках одного Пакета попали в один готовый отчет. 2. Воспользуетесь утилитой SbisFastLoader, которая вызовет указанные Вами отчеты FastReport, выполнит их указанному по отобранному списку документов и сохранит на диск в виде одного XML файла.
Содержание
- 1 Описание интеграции при помощи SbisFastLoader:
- 2 Преимущества над другими способами интеграции:
- 3 Как это работает:
- 4 Настройка SbisConnect:
- 5 Настройка SbisFastLoader:
- 6 Ограничения:
- 7 Пример sql файла для системы техносбыт:
- 8 Пример файла SbisFastLoader.ini:
- 9 Пример результирующего xml
- 10 Пример log.txt
- 11 Пример error.txt
Описание интеграции при помощи SbisFastLoader:
Обычно для печати комплекта документов используется несколько отчетов, в худшем случае при массовой печати это выглядит следующим образом: сначала печатают например фактуры, затем накладные и счета, после чего получившиеся три стопки бумаги разбирают и группируют пакеты документов для отправки. Мы разработали комплекс программного обеспечения позволяющий автоматически сгруппировать отчеты в один пакет и отправить в электронном виде.
Преимущества над другими способами интеграции:
- Для выгрузки используются те же отчеты, что и для печати - не нужно дублировать логику при формировании электронного документа (как правило она не простая в сложных отчетах).
- Все документы выгружаются формализованными в xml формате - Ваш контрагент их сможет автоматически обработать, существенно сокращается размер документа и увеличивается скорость выгрузки и обмена (в сравнении с pdf)
- Минимум доработок на Вашей стороне – если Ваша система не умеет удобно (ведь это надо будет регулярно кому то делать) выгружать данные в каком либо формализованном виде, то это самый быстрый и простой способ интеграции.
- Упрощается процедура выгрузки документов – формирование пакета и отправка осуществляются за одну операцию (два клика)
Как это работает:
Комплекс состоит из двух windows приложений:
- SbisFastLoader – выгружает на локальный диск отчеты FastReport в формате XML объединенные в пакеты.
- СБИС Коннект – конвертирует XML файлы FastReport в XML файлы формата ФНС, подписывает и отправляет Вашим контрагентам.
Например, Вы обычно в начале месяца всем клиентам один раз в месяц выставляете счет + акт + фактуру, и для этого у Вас имеется три отчета «Счет.fr3» «Акт выполненных работ.fr3» и «Счет-фактура.fr3», которые Вы для печати вызываете по списку клиентов. А в середине месяца всем клиентам печатаете счет на предоплату «Счет.fr3».
«Акт выполненных работ.fr3» и «Счет-фактура.fr3» имеют единственный входной параметр «id», а счет «Счет.fr3» имеет два входных параметра «id» и «avans» (true – если надо напечатать счет на предоплату, и false – если это обычный счет).
Для решения такой задачи необходимо:
- 1. Прописать в SbisFastLoader.ini местонахождение отчетов и присвоить им коды.
sfakt=\\server\Финансовые\Счет-фактура.fr3
akt=\\server\Финансовые\Акт выполненных работ.fr3
shet=\\server\Финансовые\ Счет.fr3
- 2. Написать два sql запроса, каждый из которых поместить в отдельный файл. Один для подготовки счетов на предоплату, назовем его «Счета на предоплату.sql», а второй «СчФактура_Акт_Счет.sql» для подготовки обычных пакетов.
Sql запрос надо написать таким образом, чтобы в результате получался список, каждая строка которого содержала список параметров всех отчетов одного пакета. Особое значение имеют названия столбцов, они должны формироваться по маске [код отчета]_[имя параметра отчета]. В нашем случае sql запросы могут выглядеть так:
- СчФактура_Акт_Счет.sql
SELECT … AS sfakt_id, … AS akt_id, … AS shet_id, false AS schet_avans FROM ….
- Счета на предоплату.sql
SELECT … AS shet_id, true AS schet_avans FROM ….
В результате запроса «СчФактура_Акт_Счет.sql» мы получим список:
sfakt_id | akt_id | shet_id | schet_avans |
---|---|---|---|
1123 | 4214 | 2344 | False |
2123 | 4215 | 4234 | False |
3324 | 5216 | Null | Null |
SbisFastLoader для каждой строки:
- Через FastReport выполнит отчет с кодом sfakt (Счет-фактура.fr3) и передаст ему один параметр (id=1123 для первой строки).
- Через FastReport выполнит отчет с кодом akt (Акт выполненных работ.fr3) и передаст ему один параметр (id=4214 для первой строки).
- Через FastReport выполнит отчет с кодом akt (shet.fr3) и передаст ему два параметра (id=2344, avans=false для первой строки).
- Если все отчеты выполнились корректно, то результаты их выполнения (готовые отчеты в формате FP3) помещаются в один xml файл и выгружаются в каталог указанный в параметре КаталогОтчетов. В противном случае делается запись об ошибке в лог файл, а процесс выгрузки продолжается.
- Если все параметры одного отчета равны Null – то этот отчет не будет включен в состав пакета (например по строке 3 счет выгружен не будет)
При запуске, Вам необходимо выбрать тип выгрузки ( sql файл) и указать период.
Настройка SbisConnect:
Скачиваете и устанавливаете в соответствии с документацией http://help.sbis.ru/exchange/integration/other_directory Для предотвращения проблем с превышением максимальной длинны пути и имени файла в windows (254 символа) рекомендуем устанавливать SbisConnect в корень диска. По умолчанию это: C:\СБИС Коннект\
Настройка SbisFastLoader:
- 1. Распаковываете архив SbisFastLoader.zip в каталог с установленным SbisConnect
- 2. В подкаталоге «Запросы» создаете файлы SQL запросов.
- 3. Редактируем SbisFastLoader.ini
- a. Указываем параметры подключения к базе данных:
- i. Для MSSQL: Тип=MSSQL, Сервер, БД
- ii. Для Oracle: Тип=Oracle, Схема. Авторизация будет запрошена средствами системы, у пользователя должно быть достаточно для прав выполнения указанных Вами отчетов и написанных Вами sql запросов.
- b. Указываем местоположение папки куда будут выгружаться фалы и папки где находятся файлы с sql запросами. По умолчанию это:
- КаталогЗапросов=C:\СБИС Коннект\SbisFastReport\Запросы\
- КаталогОтчетов= C:\СБИС Коннект\Отправляемые\
- c. Указываем местоположение всех отчетов FastReport использущихся в SQL запросах.
- a. Указываем параметры подключения к базе данных:
Ограничения:
- Поддерживается FastReport VCL версии 3 и 4 (возможно и другие версии, где отчеты хранятся в формате FR3, а готовые отчеты в формате FP3)
- Поддерживается только базы данных MS SQL и Оracle (по требованию список может быть расширен).
- Код отчета в ini файле не должен содержать символа подчеркивание.
- Если Вы используете FastReport VCL версии 2, то вы можете для работы программы создать копию Ваших отчетов, после чего сконвертировать их в версию 3 и использовать для работы со SbisFastLoader.
Пример sql файла для системы техносбыт:
declare @dt1 datetime, @dt2 datetime
set @dt1=:dt1
set @dt2=:dt2
select invoice_id as sfakt_id1, bill_id as akt_id1, bill_id as shet_id1
from bills
where
rperiod_beg = @dt1
and advtype <> 1 and isnull(takedDebt,0) = 0
and isnull(percBill_type,0) = 0
and sbill_id>0
Пример файла SbisFastLoader.ini:
[Отчеты]
sfakt=\\server\Финансовые\sfakt.fr3
akt=\\server\Финансовые\akt.fr3
shet=\\server\Финансовые\shet.fr3
[Настройки]
Логин=***
БД=***
Сервер=***
КаталогЗапросов=C:\СБИС Коннект\SbisFastReport\sql\
КаталогОтчетов= C:\СБИС Коннект\Отправляемые\
Пример результирующего xml
<xml server=[название сервера из ini] Database=[название базы данных из ini]>
<document type=’sfakt’ id1=[ id] >
…..тело fp3 файла…..
</document>
<document type=’akt’ id1=[ id]>
…..тело fp3 файла…..
</document>
<document type=’schet’ id1=[ id]>
<source lang="ini">
…..тело fp3 файла…..
</document>
</xml>
Пример log.txt
13.02.2014 14:13:12 Начало выгрузки; c:\Все отчеты за период.sql; 01.12.2013; 31.12.2013; Всего ХХ пакетов
13.02.2014 14:13:15 Выгрузили: akt_id=123; sfakt_id=23; в файл=4324asdasd243.xml
13.02.2014 14:13:16 Закончили выгрузку
Пример error.txt
13.02.2014 14:13:16 c:\qweqweqw.fr3; [param1=…];[param2=…];[Текст ошибки]