Пример экспорта платёжек из БЭСТ-4 в формат 1С

Автор:Юрий Травкин
Дата:26.09.2002
Просмотров:4532
Скачиваний:825
Оценка: - , Оценок - 0
Скачать (rar-файл; Размер - 8599)

Обсудить в форуме

Описание

Этот пример экспортирует платёжки из бухгалтерии БЭСТ-4
сетевая версия 9.05/001 от 28.05.2002 г. и создаёт файл импорта
в формате 1С (ВерсияФормата=1.01) для Банк-Клиента.
Так как в этой версии БЭСТа нет специальных полей соответствующих
требованиям указания ЦБ РФ от 03.03.2003 N 1256-У, они указываются
через точку с запятой в назначении платежа. Например:

02;1020102;64401000000;ТП;МС.02.2003;0;20.03.2003;НС; НДС за май 2003г.


Более подробное описание смотрите в фале readme.txt или Exp_BEST.mac.

Текст примера

 /* ==========================================================================
                                                           
   Назначение: 
   ----------
      Экспорт платежек из бухгалтерии БЭСТ (файл rsdoc.dbf).  Создание 
   файла импорта в формате 1С (ВерсияФормата=1.01) для Банк-Клиента.
   Так как в этой версии БЭСТА нет специальных полей соответствующих
   требованиям указания ЦБ РФ от 03.03.2003 N 1256-У, они указываются
   через точку с запятой в назначении платежа. Например:

   02;1020102;64401000000;ТП;МС.02.2003;0;20.03.2003;НС; НДС за май 2003г.

   
   Описание:    
   --------
      Поместите файл BEST.rsg в папку OBJ, файл Exp_Best.mac в папку MAC.

      В меню Банк-Клиента "Администрирование-Меню пользователей" найдите 
    строку с названием "Импорт документа" и поменяйте "Название меню" на
    "Экспорт из бухгалтерии БЭСТ", а "Имя макроса" на Exp_Best. 
    Если не хотите менять, создайте новую команду меню.

      Формат файла rsdoc.dbf соответствует сетевой версии БЭСТ-4 9.05/001
    от 28.05.2002 г. Путь к файлу rsdoc.dbf нужно прописать в переменной
    Target (42 строка этого файла).

      Если все сделано и файл 1c_to_kl.txt создан успешно он будет
    показан в окне редактора Банк-Клиента. 

      Всё остальное уже сделано R-Style :-)  
      Команда "Импорт/Экспорт с 1С" сделает все проверки и покажет отчет
    в окне редактора Банк-Клиента после импорта.
      
   =========================================================================*/
   import RSLX; /* для расширений ActiveX */

    FILE report ("..\\txtfile\\1c_to_kl.txt") txt write;
    FILE best () dbf;
    FILE rpt () txt;  

    Var frm, vrsl, iMax=0, i=0;
    Var Target="c:\\bdate\\rsdoc.dbf";
    Var pospoint=0, appoint, trg="", trg1="", trg2="", trg3="",
        trg4="", trg5="", trg6="", trg7="", trg8="";

     Open(best,Target);
     prev(best);    
     iMax = GetPos ( best );

     vrsl = ActiveX("RSGENOLE.VRslRun.1"); 
     frm = vrsl.RunFrm("Req_BEST");
     frm.pFileNameExp = Target; 
     frm.pFileRecord = String(iMax);
     frm.pReturnCode = 0; 
     frm.openForm ();

     if ( frm.pReturnCode != 0 )
      Insert( report, "1CClientBankExchange ");
      Insert( report, "ВерсияФормата=1.01");
      Insert( report, "Кодировка=Windows ");
      Insert( report, "Отправитель=Бухгалтерский учет, редакция 4.2 ");
      Insert( report, "Получатель=Клиент банка InterBank v.5.1 R-Style Software Lab ");
      Insert( report, "ДатаСоздания= ");
      Insert( report, "ВремяСоздания= ");
      Insert( report, "ДатаНачала= ");
      Insert( report, "ДатаКонца= ");
      Insert( report, "РасчСчет= ");
      Insert( report, "РасчСчет= ");
      Insert( report, "РасчСчет= ");
      Insert( report, "Документ=Платежное поручение ");

      VclInitProgress (iMax, "Экспорт из БЭСТа");  /* рисуем progress bar */

      rewind (best);
      while (next (best))
       VclUseProgress (i);           /* рисуем progress bar */

       if ( (best.doper==frm.pDateExp) and (best.mfo_pay=="046401772                ") )

             Insert( report, "СекцияДокумент=Платежное поручение");

             Insert( report, "Номер="+best.Ndoc);
             Insert( report, "Дата="+String(best.Doper));
             Insert( report, "Сумма="+best.Summa1 );
             Insert( report, "ПлательщикСчет="+best.Acc_pay);
             if ( strlen(Trim(best.Codp_pay))<15 )
                /* Если в поле Codp_pay не указан КПП вашего клиента, 
                а клиент не знает как его туда вставить, допишите его */         
                Insert( report, "ПлательщикИНН="+Trim(best.Codp_pay)+"/650101001");
              else
                Insert( report, "ПлательщикИНН="+Trim(best.Codp_pay) );
             end;
             Insert( report, "Плательщик="+oem_to_ansi(best.org_pay) );
             Insert( report, "Плательщик1="+oem_to_ansi(best.org_pay) );
             Insert( report, "ПлательщикРасчСчет="+best.Acc_pay);
             Insert( report, "ПлательщикБанк1="+oem_to_ansi(best.Bank_pay));
             Insert( report, "ПлательщикБанк2=");
             Insert( report, "ПлательщикБИК="+best.Mfo_pay);
             Insert( report, "ПлательщикКорсчет="+best.Corr_pay);

             Insert( report, "ПолучательСчет="+best.Acc_rcv);
             Insert( report, "ПолучательИНН="+best.Codp_rcv);
             Insert( report, "Получатель="+oem_to_ansi(best.Org_rcv));
             Insert( report, "Получатель1="+oem_to_ansi(best.Org_rcv));
             Insert( report, "ПолучательРасчСчет="+best.Acc_rcv);
             Insert( report, "ПолучательБанк1="+oem_to_ansi(best.Bank_rcv));
             Insert( report, "ПолучательБанк2=");
             Insert( report, "ПолучательБИК="+best.Mfo_rcv);
             Insert( report, "ПолучательКорсчет="+best.Corr_rcv);

             Insert( report, "ВидПлатежа="+"электронно");
             Insert( report, "ВидОплаты=");
             Insert( report, "Очередность="+best.Tabl_04);
/* 1256-У */
             appoint = oem_to_ansi(best.Osnov_);
             trg1="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==2)
                   trg1 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "СтатусСоставителя="+trg1);

             trg2="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==7)
                   trg2 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательКБК="+trg2);

             trg3="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==11)
                   trg3 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ОКАТО="+trg3);

             trg4="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==2)
                   trg4 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательОснования="+trg4);

             trg5="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==10)
                   trg5 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательПериода="+trg5);

             trg6="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)>0)
                   trg6 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательНомера="+trg6);

             trg7="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)>0)
                   trg7 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательДаты="+trg7);



             trg8="";
             pospoint  = Index(appoint, ";");
             if (pospoint>0)
                trg = substr(appoint,1,pospoint-1);
                if (strlen(trg)==2)
                   trg8 = trg;
                   appoint = substr(appoint,pospoint+1);
                end;
             end;
             Insert( report, "ПоказательТипа="+trg8);

             Insert( report, "НазначениеПлатежа="+appoint );
             Insert( report, "НазначениеПлатежа1=");

             Insert( report, "КонецДокумента" );

       end;

       i = i + 1;

      end; /* while*/ 


      Insert( report, "КонецФайла" );

      Close(report);
      Open(rpt,"..\\txtfile\\1c_to_kl.txt");
      rewind (rpt);
      while (next (rpt))
         [ # ]( rpt.str );
      end;

      VclRemProgress (i);  /* удаляем progress bar */

     end;