Здравствуйте! Я тут был последний раз в прошлом году под ником
Fomka — и вот у меня снова возникла необходимость написать сюда, в раздел по программированию в SAP.
Есть задача "Формировать из SAP файл с данными по СПД для загрузки в банк-клиент". У разных банков разные форматы этого файла, и для программирования такой выгрузки нужно их знать. Делюсь своими наработками по Сбербанку и нуждаюсь в информации по Райффайзенбанку.
Общая информация про СПД и ПС
ПС — это паспорт сделки. СПД — это справка о подтверждающих документах, относящихся к одному/нескольким ПС. В файле с СПД могут быть документы как одного, так и нескольких ПС. В каждом документе кроме номера ПС указывается сумма.
СбербанкИспользует банк-клиент
«Клиент-Сбербанк», который принимает текстовые файлы формата XML, с расширением .xml, в кодировке Юникод.
Сбербанк, из файла загружается один ПС с одним документомCode:
Компания ПС документ сумма из документа
ОАО "Серьёзная компания" 12380828/1230/1940/1/0 12306061/100114/0000107 13301.56
Смотри файл SPD_SBT_1.xml (архив с файлами
тут)
Code:
<?xml version="1.0" encoding="windows-1251"?>
<package>
<table name="ConfDoc">
<tabledesc>
<fielddesc name="NUM" type="numeric" length="19"/>
<fielddesc name="DATE" type="date" length="10"/>
<fielddesc name="PASSPORT" type="string" length="22"/>
<fielddesc name="PAYER" type="string" length="255"/>
<fielddesc name="BANKPAY" type="string" length="254"/>
<fielddesc name="CONTENT" type="table" length="0"/>
<fielddesc name="CORRECT" type="numeric" length="19"/>
</tabledesc>
<record>
<field name="NUM" null="false" value="38"/>
<field name="DATE" null="false" value="2014.03.08"/>
<field name="PASSPORT" null="false" value="12380828/1230/1940/1/0"/>
<field name="PAYER" null="false" value="ОАО "Серьёзная компания""/>
<field name="BANKPAY" null="false" value="Московский банк ОАО "Сбербанк России""/>
<field name="CORRECT" null="false" value="0"/>
<content>
<table name="ConfDocDocuments">
<tabledesc>
<fielddesc name="F_1" type="string" length="2"/>
<fielddesc name="F_2" type="string" length="255"/>
<fielddesc name="F_3" type="string" length="58"/>
<fielddesc name="F_D_1" type="date" length="8"/>
<fielddesc name="F_4" type="string" length="5"/>
<fielddesc name="F_5" type="string" length="3"/>
<fielddesc name="F_6" type="numeric" length="18"/>
<fielddesc name="F_7" type="string" length="3"/>
<fielddesc name="F_8" type="numeric" length="18"/>
<fielddesc name="F_9" type="string" length="1"/>
<fielddesc name="F_D_2" type="date" length="8"/>
<fielddesc name="F_10" type="string" length="3"/>
<fielddesc name="F_S_2" type="string" length="4000"/>
<fielddesc name="F_11" type="numeric" length="18" />
<fielddesc name="F_12" type="numeric" length="18" />
<fielddesc name="F_PARTNO" type="numeric" length="19" />
<fielddesc name="F_SOURCEDOCGUID" type="string" length="39" />
</tabledesc>
<record>
<field name="F_1" null="false" value="1"/>
<field name="F_2" null="false" value=""/>
<field name="F_3" null="false" value="12306061/100114/0000107"/>
<field name="F_D_1" null="false" value="2014.01.11"/>
<field name="F_4" null="false" value="01_3"/>
<field name="F_5" null="false" value="840"/>
<field name="F_6" null="false" value="13301.56"/>
<field name="F_7" null="false" value=""/>
<field name="F_8" null="false" value=""/>
<field name="F_9" null="false" value="2"/>
<field name="F_D_2" null="false" value=""/>
<field name="F_10" null="false" value=""/>
<field name="F_S_2" null="false" value=""/>
<field name="F_11" null="false" value="0"/>
<field name="F_12" null="false" value="0"/>
<field name="F_PARTNO" null="false" value=""/>
<field name="F_SOURCEDOCGUID" null="false" value=""/>
</record>
</table>
</content>
</record>
</table>
</package>
Сбербанк, из файла загружается один ПС и несколько документовCode:
Компания ПС документ сумма из документа
ОАО "Более серьёзная компания" 12380828/1231/1940/1/0 12306061/110114/0000123 83001.02
ОАО "Более серьёзная компания" 12380828/1231/1940/1/0 12306061/120114/0000148 99008.98
Смотри файл SPD_SBT_2.xml (архив с файлами
тут)
Code:
<?xml version="1.0" encoding="windows-1251"?>
<package>
<table name="ConfDoc">
<tabledesc>
<fielddesc name="NUM" type="numeric" length="19"/>
<fielddesc name="DATE" type="date" length="10"/>
<fielddesc name="PASSPORT" type="string" length="22"/>
<fielddesc name="PAYER" type="string" length="255"/>
<fielddesc name="BANKPAY" type="string" length="254"/>
<fielddesc name="CONTENT" type="table" length="0"/>
<fielddesc name="CORRECT" type="numeric" length="19"/>
</tabledesc>
<record>
<field name="NUM" null="false" value="38"/>
<field name="DATE" null="false" value="2014.03.08"/>
<field name="PASSPORT" null="false" value="12380828/1231/1940/1/0"/>
<field name="PAYER" null="false" value="ОАО "Более серьёзная компания""/>
<field name="BANKPAY" null="false" value="Московский банк ОАО "Сбербанк России""/>
<field name="CORRECT" null="false" value="0"/>
<content>
<table name="ConfDocDocuments">
<tabledesc>
<fielddesc name="F_1" type="string" length="2"/>
<fielddesc name="F_2" type="string" length="255"/>
<fielddesc name="F_3" type="string" length="58"/>
<fielddesc name="F_D_1" type="date" length="8"/>
<fielddesc name="F_4" type="string" length="5"/>
<fielddesc name="F_5" type="string" length="3"/>
<fielddesc name="F_6" type="numeric" length="18"/>
<fielddesc name="F_7" type="string" length="3"/>
<fielddesc name="F_8" type="numeric" length="18"/>
<fielddesc name="F_9" type="string" length="1"/>
<fielddesc name="F_D_2" type="date" length="8"/>
<fielddesc name="F_10" type="string" length="3"/>
<fielddesc name="F_S_2" type="string" length="4000"/>
<fielddesc name="F_11" type="numeric" length="18" />
<fielddesc name="F_12" type="numeric" length="18" />
<fielddesc name="F_PARTNO" type="numeric" length="19" />
<fielddesc name="F_SOURCEDOCGUID" type="string" length="39" />
</tabledesc>
<record>
<field name="F_1" null="false" value="1"/>
<field name="F_2" null="false" value=""/>
<field name="F_3" null="false" value="12306061/110114/0000123"/>
<field name="F_D_1" null="false" value="2014.01.11"/>
<field name="F_4" null="false" value="01_3"/>
<field name="F_5" null="false" value="840"/>
<field name="F_6" null="false" value="83001.02"/>
<field name="F_7" null="false" value=""/>
<field name="F_8" null="false" value=""/>
<field name="F_9" null="false" value="2"/>
<field name="F_D_2" null="false" value=""/>
<field name="F_10" null="false" value=""/>
<field name="F_S_2" null="false" value=""/>
<field name="F_11" null="false" value="0"/>
<field name="F_12" null="false" value="0"/>
<field name="F_PARTNO" null="false" value=""/>
<field name="F_SOURCEDOCGUID" null="false" value=""/>
</record>
<record>
<field name="F_1" null="false" value="1"/>
<field name="F_2" null="false" value=""/>
<field name="F_3" null="false" value="12306061/120114/0000148"/>
<field name="F_D_1" null="false" value="2014.01.12"/>
<field name="F_4" null="false" value="01_3"/>
<field name="F_5" null="false" value="840"/>
<field name="F_6" null="false" value="99008.98"/>
<field name="F_7" null="false" value=""/>
<field name="F_8" null="false" value=""/>
<field name="F_9" null="false" value="2"/>
<field name="F_D_2" null="false" value=""/>
<field name="F_10" null="false" value=""/>
<field name="F_S_2" null="false" value=""/>
<field name="F_11" null="false" value="0"/>
<field name="F_12" null="false" value="0"/>
<field name="F_PARTNO" null="false" value=""/>
<field name="F_SOURCEDOCGUID" null="false" value=""/>
</record>
</table>
</content>
</record>
</table>
</package>
РайффайзенбанкИспользует банк-клиент iELBA, официальная страница расположена по адресу
http://i-elba.raiffeisen.ru. С апреля 2014 начаты работы по переходу на систему ELBRUS Internet (
объявление от 15 апреля 2014).
Цитата:
Настоящим ЗАО «Райффайзенбанк» (далее – Банк) информирует Вас о том, что в рамках процесса оптимизации систем дистанционного обслуживания Банк осуществляет перевод Клиентов с систем дистанционного банковского обслуживания iELBA/ELBA на Систему «Банк-Клиент «ELBRUS Internet» (далее – Система «ELBRUS Internet») в связи с выводом систем iELBA\ELBA из эксплуатации.
В системе iELBA используются текстовые файлы формата
TDEDIF, с расширением .bcw, принимается кодировка
ANSI (Windows-1252).
Цитирую описание формата (
документ размером 3,7 мегабайта от 2008 года)
Цитата:
Файл TDEDIF может содержать один или несколько документов, идущих подряд (разделены переводами строк) и имеющих формат:
::DOCBEGIN::
:BODYBEGIN_0
:VERSION:=RBA
:FIELDS:=
:ID:=<строковый_идентификатор_документа>
:STATE:=<целочисленный_код_состояния>
:DOCTYPE:=<строковый_идентификатор_типа_документа>
:<поле1>:=<значение1>
:<поле2>:=<значение2>
…
:<полеN>:=<значениеN>
:BODYEND_0
::DOCEND::
Райффайзенбанк, iELBA, из файла загружается один ПС с одним документомCode:
Компания ПС документ сумма из документа
ОАО "Серьёзная компания" 13010113/3123/0000/2/1 10131013/200213/0000841 27550.70
Смотри файл SPD_RFB_1.bcw (архив с файлами
тут)
Code:
::DOCBEGIN::
:BODYBEGIN_0
:DOCTYPE:=ECREFCONFIRM
:ACCOUNT:=40702810400006172725
:DATE:=26.03.2014
:FROM_NAME:=ОАО "Серьёзная компания"
:NAMEBANK:=ЗАО "РАЙФФАЙЗЕНБАНК"
:NUMBER:=170
:PASSPORT_OF_DEAL:=13010113/3123/0000/2/1
:REFDATE:=26032014
:ISUPDATE:=
:EXECUTORFIO:=
:EXECUTORPHONE:=
:IRNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\s0000000000_0000000000\x02\x00\x00\x00s1
:IRAMOUNTINCURRENCY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x0A\x00\x00\x00s27550.70
:IRCONTRACTAMOUNT:=
:IRCONTRACTCURRENCY:=
:IRCURRENCYCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x04\x00\x00\x00s978
:IRAMOUNTINCURRENCY_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRCONTRACTAMOUNT_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRTERM:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s
:IRDELIVERY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x02\x00\x00\x00s4
:IRDOCUMENTCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x05\x00\x00\x00s01_4
:IRDOCNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x18\x00\x00\x00s10131013/200213/0000841
:IRDOCDATE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s20022014
:IRCOUNTRY:=
:NTNUMBER:=
:NTTEXT:=
:BODYEND_0
::DOCEND::
Райффайзенбанк, iELBA, из файла должен загрузиться один ПС и несколько документов — тут БОЛЬШОЙ вопросСледующий файл в банк-клиенте отображается не так, как хочется пользователю. Вместо отображения двух документов на одной закладке (в рамках одного ПС) отображаются две закладки с одним документом на каждой.
Code:
Компания ПС документ сумма из документа
ОАО "Более серьёзная компания" 13010113/0001/0000/2/1 10611061/200213/0000001 108108.81
ОАО "Более серьёзная компания" 13010113/0001/0000/2/1 10611061/200213/0000123 21021.20
Смотри файл SPD_RFB_2.bcw (архив с файлами
тут)
Code:
::DOCBEGIN::
:BODYBEGIN_0
:DOCTYPE:=ECREFCONFIRM
:ACCOUNT:=40702810000000000652
:DATE:=14.05.2014
:FROM_NAME:=ОАО "Более серьёзная компания"
:NAMEBANK:=ЗАО "РАЙФФАЙЗЕНБАНК"
:NUMBER:=93
:PASSPORT_OF_DEAL:=13010113/0001/0000/2/1
:REFDATE:=14052014
:ISUPDATE:=
:EXECUTORFIO:=
:EXECUTORPHONE:=
:IRNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\s0000000000_0000000000\x02\x00\x00\x00s1
:IRAMOUNTINCURRENCY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x0A\x00\x00\x00s108108.81
:IRCONTRACTAMOUNT:=
:IRCONTRACTCURRENCY:=
:IRCURRENCYCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x04\x00\x00\x00s840
:IRAMOUNTINCURRENCY_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRCONTRACTAMOUNT_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRTERM:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s
:IRDELIVERY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x02\x00\x00\x00s1
:IRDOCUMENTCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x05\x00\x00\x00s01_3
:IRDOCNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x18\x00\x00\x00s10611061/200213/0000001
:IRDOCDATE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s\x09\x00\x00\x00s00000000
:IRCOUNTRY:=
:NTNUMBER:=
:NTTEXT:=
:BODYEND_0
:BODYBEGIN_1
:DOCTYPE:=ECREFCONFIRM
:ACCOUNT:=40702810000000000652
:DATE:=14.05.2014
:FROM_NAME:=ОАО "Более серьёзная компания"
:NAMEBANK:=ЗАО "РАЙФФАЙЗЕНБАНК"
:NUMBER:=94
:PASSPORT_OF_DEAL:=13010113/0001/0000/2/1
:REFDATE:=14052014
:ISUPDATE:=
:EXECUTORFIO:=
:EXECUTORPHONE:=
:IRNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\s0000000000_0000000000\x02\x00\x00\x00s1
:IRAMOUNTINCURRENCY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x0A\x00\x00\x00s21021.20
:IRCONTRACTAMOUNT:=
:IRCONTRACTCURRENCY:=
:IRCURRENCYCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x04\x00\x00\x00s840
:IRAMOUNTINCURRENCY_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRCONTRACTAMOUNT_OS:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x01\x00\x00\x00s
:IRTERM:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s
:IRDELIVERY:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x02\x00\x00\x00s1
:IRDOCUMENTCODE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x05\x00\x00\x00s01_3
:IRDOCNUMBER:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x18\x00\x00\x00s10611061/200213/0000123
:IRDOCDATE:=\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00s0000000000_0000000000\x09\x00\x00\x00s\x09\x00\x00\x00s00000000
:IRCOUNTRY:=
:NTNUMBER:=
:NTTEXT:=
:BODYEND_1
::DOCEND::
Вроде бы данные в файле SPD_RFB_2.bcw соответствуют тому, что сказано в описании: BODYBEGIN_0..BODYEND_0, BODYBEGIN_1..BODY_END_1. Однако банк-клиент не понимает, что в одном ПС находятся два документа.
Подскажите, как подобрать формат так, чтобы райффайзеновский банк-клиент отобразил данные под обоим документам в рамках одного паспорта сделки?