Интеграция со СБИС

Сформировать пакеты в SbisFastLoader

Сформировать пакеты в SbisFastLoader

Основной инструмент SbisFastLoader - это набор sql-запросов. Каждый запрос определяет один тип выгружаемых пакетов. Например, если счета на предоплату отправляются отдельно от документов реализации (фактура + накладная/акт + счет + детализация счета), то для предоплаты и документов реализации нужно создать отдельные sql-запросы.

В каждой строке результата запроса должен содержаться список отчетов, который оформлен особым образом. Из названий колонок в списке будут взяты отчеты и параметры в виде [имя отчета]_[параметр отчета]. При выгрузке, отчеты из списка будут помещены в один пакет.

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

Select ... AS spisok_lc, ... AS spisok_begin, ... AS spisok_end, ... AS schet_id FROM ....

В результате запроса получится список:

№ стрspisok_lsspisok_beginspisok_endschet_id
121401-11-201330-11-2013324
221501-11-201330-11-2013325
321601-11-201330-11-2013Null

Алгоритм работы

Для каждой строки из списка SbisFastLoader:

  1. Вызовет отчет из параметра «spisok» в SbisFastLoader.ini и передаст ему три параметра: «ls», «begin» и «end». Значение параметров программа возьмет из столбцов «spisok_ls», «spisok_begin», «spisok_end».
  2. Вызовет отчет из параметра «schet» в SbisFastLoader.ini и передаст ему параметр «id» со значением из столбца «schet_id».
  3. Если оба отчета выполнились корректно, то файлы FP3 будут помещены в один xml-файл и выгружены в каталог, который указан в параметре «КаталогОтчетов». Ошибки при выполнении будут записаны в лог-файл, а выгрузка продолжится.
  4. Если все параметры одного отчета равны «Null», то отчет не войдет в состав состав пакета. Например, по строке 3 счет на предоплату выгружен не будет.

Пример 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

Пример выходного 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]>
      ..тело 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=];[Текст ошибки]