Экспорт/импорт из клиент-банка Сбербанк

ПНР и сопровождение

Модераторы: m0p3e, edward_K, Модераторы

Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Экспорт/импорт из клиент-банка Сбербанк

Сообщение Masygreen »

экспорт почти всегда прокатывает без своего API, а вот загрузку всегда переписываю .. действительно самым разумным будет реализовать обмен документами в формате 1с - т.к. это в России уже ни кем не принятый, но у всех действующий производственный стандарт
Время ведет!
pk
Постоянный обитатель
Сообщения: 135
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва Связьтранснефть

Re: Экспорт/импорт из клиент-банка Сбербанк

Сообщение pk »

Один наш умница-программист сделал интерфейс импорта пп из текстового 1С-формата (ВТБ, СБРФ и т.п. банк-клиенты). Типы документов (переменная td) переопределите в зависимости от собственной БД. Пользуйтесь;)

Код: Выделить всё

VipInterface ImportSB Licensed (Free);
Interface ImportSB DoAccept;
var dd,nomer,summa,platsch1,platsch2,polsch1,polsch2,platinn,platname1,platbik,platbank,polinn,polname,polbik,polbank,nazn:string;
var statsost,platkpp,polkpp,kbk_,okato,pokosn,pokper,poknom,pokdat,poktip,vidopl,dd2,ochered:string;
var platrec,platbankrec,polrec,polbankrec:comp;
var s1,s2,s3,vid_:string;
var dat1,dat2,dat3:date;
var d1,d2,d3:double;
var i,j,k:integer;
var SourcePath,F_NAME:string;
var td:word;
var ifnext,ifend:boolean;
var str: array [1..37] of string;
Create view
as select * from plpor;
Create View Org
var inn: string
as select * from katorg
where ((inn==katorg.unn));
Create view bank
var bik,rs:string
as select * from katbank
where ((bik==katbank.mfo1 and rs==katbank.schet1));

Form Print_import( 'PrintImp.out' );

file hndFile;
Screen switch
        Buttons
          cmImport;



  <<
    <. Импорт   .>


  >>
end;

HandleEvent
          cmInit:
          {

          }
          cmImport:
          {
            nomer      :='';
            dd         :='';
            summa      :='';
            platsch1   :='';
            platinn    :='';
            platname1  :='';
            platbank   :='';
            platbik    :='';
            platsch2   :='';
            polsch1    :='';
            polinn     :='';
            polname    :='';
            polbank    :='';
            polbik     :='';
            polsch2    :='';
            vidopl     :='';
            ochered    :='';
            nazn       :='';
            statsost   :='';
            platkpp    :='';
            polkpp     :='';
            kbk_       :='';
            okato      :='';
            pokosn     :='';
            pokper     :='';
            poknom     :='';
            pokdat     :='';
            poktip     :='';
            td         :=0;
            ifnext     :=true;
            ifend      :=false;
            F_NAME := GetFileName('*.txt', 'Выберите файл');
            if hndFile.OpenFile(F_NAME, stOpenRead) then
            begin
                  message('Файл открыли');
                  while not hndFile.eof do
                  begin
                        while (s1<>OEM2ANSI('КонецРасчСчет'))and (ifnext=true) do hndFile.Readln(s1);
                        ifnext:=false;
                        j:=1;
                        while j<=37 do
                        begin
                             hndFile.Readln(s1);
                             if s1=oem2ansi('КонецФайла') then begin ifend:=true;break;end;
                             str[j]:=Ansi2oem(s1);
                             j:=j+1;
                        end;
                        j:=1;
                        while j<=37 do
                        begin
                              i:=pos('=',str[j]);
                              s2:=SubStr(str[j],1,i-1);
                              case s2 of
                                  'Номер'                 :nomer      :=Trim(Substr(str[j],i+1,255));
                                  'Дата'                  :dd         :=Trim(Substr(str[j],i+1,255));
                                  'Сумма'                 :summa      :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикСчет'        :platsch1   :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикИНН'         :platinn    :=Trim(Substr(str[j],i+1,255));
                                  'Плательщик1'           :platname1  :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикБанк1'       :platbank   :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикБИК'         :platbik    :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикКорсчет'     :platsch2   :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательСчет'        :polsch1    :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательИНН'         :polinn     :=Trim(Substr(str[j],i+1,255));
                                  'Получатель1'           :polname    :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательБанк1'       :polbank    :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательБИК'         :polbik     :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательКорсчет'     :polsch2    :=Trim(Substr(str[j],i+1,255));
                                  'ВидПлатежа'            :vidopl     :=Trim(Substr(str[j],i+1,255));
                                  'Очередность'           :ochered    :=Trim(Substr(str[j],i+1,255));
                                  'НазначениеПлатежа'     :nazn       :=Trim(Substr(str[j],i+1,255));
                                  'СтатусСоставителя'     :statsost   :=Trim(Substr(str[j],i+1,255));
                                  'ПлательщикКПП'         :platkpp    :=Trim(Substr(str[j],i+1,255));
                                  'ПолучательКПП'         :polkpp     :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательКБК'         :kbk_       :=Trim(Substr(str[j],i+1,255));
                                  'ОКАТО'                 :okato      :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательОснования'   :pokosn     :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательПериода'     :pokper     :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательНомера'      :poknom     :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательДаты'        :pokdat     :=Trim(Substr(str[j],i+1,255));
                                  'ПоказательТипа'        :poktip     :=Trim(Substr(str[j],i+1,255));
                                  'СекцияДокумент'        :vid_       :=Trim(Substr(str[j],i+1,255));
                              end;
                              j:=j+1;
                        end;
                        if vid_='Платежное требование' then td:=word(10199);    //ВТБ  П/Т
                        if (vid_='Платежное поручение')and (platinn<>'7723011906')  then td:=(10188);     //ВТБ П/П
                        if (vid_='Платежное поручение')and (platinn='7723011906')  then td:=(0);//Собственные не закачиваем
                        set org.inn:=platinn;
                        if org.getfirst=TsOk then platrec:=org.katorg.nrec else platrec:=0;
                        set org.inn:=polinn;
                        if org.getfirst=TsOk then polrec:=org.katorg.nrec else polrec:=0;
                        set bank.bik:=platbik;
                        set bank.rs:=platsch1;
                        if bank.getfirst=TsOk then platbankrec:=bank.katbank.nrec else platbankrec:=0;
                        set bank.bik:=polbik;
                        set bank.rs:=polsch1;
                        if bank.getfirst=TsOk then polbankrec:=bank.katbank.nrec else polbankrec:=0;
                        if (polrec<>0) and (polbankrec<>0) and (platrec<>0) and (platbankrec<>0) and (td<>0) and (ifend<>true) then
                        begin
                              insert plpor set
                              plpor.tidk=td,
                              plpor.TIDKGAL=word(1),
                              plpor.VIDDK=0,
                              plpor.PRI=0,
                              plpor.DIRECT=1,//собственное
                              plpor.NODOK=nomer,
                              plpor.YEARDOC=year(strtodate(dd,'dd.mm.yyyy')),
                              plpor.DATVIP=strtodate(dd,'dd.mm.yyyy'),
                              plpor.DATOTS=strtodate(dd,'dd.mm.yyyy'),
                              plpor.DATOB=strtodate(dd,'dd.mm.yyyy'),
                              plpor.CPLAT=platrec,
                              plpor.CBANKPLAT=platbankrec,
                              plpor.FILBANKPLAT=platbank,
                              plpor.CPOL=polrec,
                              plpor.CBANKPOL=polbankrec,
                              plpor.FILBANKPOL=polbank,
                              plpor.CBANKKORR=0,
                              plpor.CGRUZOTP=0,
                              plpor.CGRUZPOL=0,
                              plpor.CPLATNEW=0,
                              plpor.SUMPLAT=summa,
                              plpor.CVAL=0,
                              plpor.SUMPLATV=summa,
                              plpor.DATAPOL='',
                              plpor.MONTH='',
                              plpor.NAMEPL1=substr(nazn,1,100),
                              plpor.NAMEPL2=substr(nazn,101,100),
                              plpor.NAMEPL3=substr(nazn,202,100),
                              plpor.DESCR='BEZ',
                              plpor.DESGR='1';
                              if td=10199 then  Print_import.write('Платежное требование')
                              else
                              if td=10188 then  Print_import.write('Платежное поручение')
                              Print_import.write(nomer);
                              Print_import.write(strtodate(dd,'dd.mm.yyyy'));
                              Print_import.write(double(summa));
                              Print_import.write(nazn);
                        end;
                  end;
                  message('OK');
                  Print_import.ShowFile;
                  CloseInterface(cmDefault);
            end;
          }
end;
end.

.Set name 'Print_import'
.fields
tipdoc:string
numdoc:string
datdoc:date
sumdoc:double
nazdoc:string
.endfields
.{
  ^ ^ ^ &'&&&&&&&&&&&&.&& ^
.}
.endform
.linkform 'importsb_mptus1' prototype is 'Print_import'
.fields
tipdoc
numdoc
datdoc
sumdoc
nazdoc
.endfields
.{
  ^ ^ ^ &'&&&&&&&&&&&&.&& ^
.}
.endform
С ув..
NM
Постоянный обитатель
Сообщения: 184
Зарегистрирован: 10 авг 2005, 16:27
Откуда: Архангельск

Re: Экспорт/импорт из клиент-банка Сбербанк

Сообщение NM »

Добрый день. Для передачи документов в банк мы использовали модуль "Клиент-Банк". Теперь, в силу некоторых причин, нам требуется модуль "Обмен бизнес-документами". Есть предположение, что модуль "Клиент-банк" - усеченная версия модуля "Обмен бизнес-документами". Подскажите, пожалуйста, в чем сходство и различие этих модулей, и можем ли мы использовать модуль "Обмен бизнес-документами" для передачи платежных поручений в банк?
Спасибо.
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Re: Экспорт/импорт из клиент-банка Сбербанк

Сообщение Polimer »

NM писал(а): можем ли мы использовать модуль "Обмен бизнес-документами" для передачи платежных поручений в банк?
В чем различие не знаю, использовать можно.
NM
Постоянный обитатель
Сообщения: 184
Зарегистрирован: 10 авг 2005, 16:27
Откуда: Архангельск

Re: Экспорт/импорт из клиент-банка Сбербанк

Сообщение NM »

Спасибо, будем пробовать
Ответить