Posted: 22 Jun 2005 10:40 Post subject: Экспорт в формате PayDocRuXE
Из руководства к ДБО BS-Client v.3.0:
Quote:
Взаимодействие с БС «БЭСТ»
Обмен данными возможен между системой BS-Client и БС БЭСТ-4 версии 9.03 и выше. Импорт документов из БЭСТ 4.10 может осуществляться в формате PayDocRuXE.
PayDocRuXE - это новый формат импорта данных в систему BS-Client 3.0 - 30 полей вместо 15, которые были в PayDocRu. Если мы говорим об одной системе (а у нас программисты из 3 банков ставили 3 разные клиентские программы), то в BS-Client Вам нужно заходить в "Связь с БС" -> "Форматы импорта документов" и полям его базы данных присваивать значения полей rsdoc.dbf, причем настройки не слишком жесткие - какие-то поля можно будет убрать, если потребуется. Более конкретно мало чего могу сказать - нам ставили эту программу без поддержки импорта из БЭСТ4, так что пришлось заводить в БЭСТ свой формат экспорта в текстовый файл.
Скорей всего говорим об одном и том же.
Вот и у меня сомнения по поводу прямого импорта из rsdoc.
Похоже одно и то же.
Может выложите формат экспорта в упомянутую систему, юзерам для использования, разработчику для включения в дистрибутив?
Но прочитать что система поддерживала импорт из БЭСТ-4 приятно
Правда теперь пункта этого нет
PAYDOCRU. %DATECREATE = %Date;
PAYDOCRU. %TIMECREATE = %Time;
PAYDOCRU. %TABLEIDENT = 1;
PAYDOCRU. CLIENT = %GETCLIENT;
PAYDOCRU. STATUS = %GetSchemeID(PayDocRu);
PAYDOCRU. CUSTID = %GETCUSTOMER;
PAYDOCRU. SERVICE = 1;
PAYDOCRU. DESTCLIENT = SQL: select Client from Customer where PostLevel=1;
PAYDOCRU. DOCUMENTDATE = DocumentDate;
PAYDOCRU. DOCUMENTNUMBER = DocumentNumber;
PAYDOCRU. CURRCODE = CurrCode;
PAYDOCRU. PAYER = PayerName;
PAYDOCRU. PAYERINN = SQL: select Customer.INN from Customer,Account where (Account.Account='PayerAccount') and (Account.Client=Customer.Client) and (Account.CustId=Customer.CustId);
PAYDOCRU. PAYERKPP = PayerKPP;
PAYDOCRU. PAYERACCOUNT = PayerAccount;
PAYDOCRU. PAYERBIC = SQL: select BIC from Account where Account.Account='PayerAccount';
PAYDOCRU. PAYERCORRACCOUNT = SQL: select BankRu.CorrAccount from BankRu,Account where (Account.Account='PayerAccount') and (Account.BIC=BankRu.BIC);
PAYDOCRU. PAYERBANKNAME = SQL: select BankRu.Name from BankRu,Account where (Account.Account='PayerAccount') and (Account.BIC=BankRu.BIC);
PAYDOCRU. PAYERBANKTYPE = SQL: select BankRuType.NameShort from BankRuType, BankRu, Account where (Account.Account='PayerAccount') and (Account.BIC=BankRu.BIC)AND(BankRuType.Code = BankRu.Type);
PAYDOCRU. PAYERPROPERTYTYPE = SQL: select Propertytype.NameShort from Propertytype, Account where (Account.Account='PayerAccount') and (Account.Propertytype=Propertytype.Autokey);
PAYDOCRU. PAYERPLACE = SQL: select BankRu.Place from BankRu,Account where (Account.Account='PayerAccount') and (Account.BIC=BankRu.BIC);
PAYDOCRU. PAYERPLACETYPE = SQL: select PlaceType.NameShort from PlaceType, BankRu, Account where (Account.Account='PayerAccount')AND(Account.BIC=BankRu.BIC)AND(BankRu.PlaceType = PlaceType.Autokey);
PAYDOCRU. RECEIVER = Receiver;
PAYDOCRU. RECEIVERINN = ReceiverINN;
PAYDOCRU. RECEIVERACCOUNT = ReceiverAccount;
PAYDOCRU. RECEIVERBIC = ReceiverBIC;
PAYDOCRU. RECEIVERCORRACCOUNT= SQL: select BankRu.CorrAccount from BankRu where (BankRu.BIC='RECEIVERBIC');
PAYDOCRU. RECEIVERBANKNAME = SQL: select BankRu.Name from BankRu where (BankRu.BIC='RECEIVERBIC');
PAYDOCRU. RECEIVERBANKTYPE = SQL: select BankRuType.NameShort from BankRuType, BankRu where (BankRu.BIC='RECEIVERBIC')AND(BankRuType.Code=BankRu.Type);
PAYDOCRU. RECEIVERPLACE = SQL: select BankRu.Place from BankRu where (BankRu.BIC='RECEIVERBIC');
PAYDOCRU. RECEIVERPLACETYPE = SQL: select PlaceType.NameShort from PlaceType, BankRu where (PlaceType.AutoKey=BankRu.PlaceType)AND(BankRu.BIC='RECEIVERBIC');
PAYDOCRU. AMOUNT = Amount;
PAYDOCRU. GROUND = %CONCATE(Ground,Nds);
PAYDOCRU. PAYMENTURGENT = PaymentUrgent;
PAYDOCRU. PAYUNTIL = PayUntil;
PAYDOCRU. OPERTYPE = OperType;
PAYDOCRU. SENDTYPE = SendType;
PAYDOCRU. RECEIVERKPP = ReceiverKPP;
PAYDOCRU. STAT1256 = Stat1256;
PAYDOCRU. CBCCODE = CBCcode;
PAYDOCRU. OKATOCODE = OKATOcode;
PAYDOCRU. PAYGRNDPARAM = PayGrndParam;
PAYDOCRU. TAXPERIODPARAM1 = TaxPeriodParam1;
PAYDOCRU. TAXPERIODPARAM2 = TaxPeriodParam2;
PAYDOCRU. TAXPERIODPARAM3 = TaxPeriodParam3;
PAYDOCRU. DOCNUMPARAM2 = DocNumParam2;
PAYDOCRU. DOCDATEPARAM1 = DocDateParam1;
PAYDOCRU. DOCDATEPARAM2 = DocDateParam2;
PAYDOCRU. DOCDATEPARAM3 = DocDateParam3;
PAYDOCRU. PAYTYPEPARAM = PayTypeParam;
Соответственно, в настройках экспорта в БЭСТ4 ("Настройка системы Клиент-Банк" -> "Текстовый формат" -> по Alt-1) прописываются поля, которые в описании формата, в этом же порядке (имена не важно какие), а источники формирования для них будут такими (выбираются из справочника):
DocumentDate - Дата документа
DocumentNumber (*) {||right(rsdoc->ndoc,3)}
CurrCode - пустое поле (*) {||''} (в формате будет "ФОРМУЛА""810"; 810 - код рубля)
PayerAccount - Счет плательщика
PayerName - Организация плательщик
ReceiverBIC - МФО получателя
ReceiverAccount - Счет получателя
Receiver - Организация получателя
ReceiverINN - ИНН получателя
Amount - Сумма
Ground - Назн.платежа
Nds - у меня стоит пустое поле (в структуре rsdoc.dbf отдельно НДС нет, но в банке при приеме и обработке он выделяется)
PaymentUrgent - Очередность платежа
PayUntil - Срок платежа
OperType - Вид операции
SendType - Вид платежа
ReceiverKPP - КПП получателя
Stat1256 - Статус предприятия (можно пустое поле)
CBCcode - КБК
OKATOcode - ОКАТО получателя
PayGrndParam - Показатель основания платежа
TaxPeriodParam1 : (*) {||aGlobVars[4]}
TaxPeriodParam2 : (*) {||aGlobVars[5]}
TaxPeriodParam3 : (*) {||aGlobVars[6]}
DocNumParam2 (*) {||aGlobVars[7]}
DocDateParam1 (*) {||aGlobVars[8]}
DocDateParam2 (*) {||aGlobVars[9]}
DocDateParam3 (*) {||aGlobVars[10]}
PayTypeParam (*) {||rsdoc->type_plat}
PayerKPP - КПП плательщика
(*) - те поля, которые в справочнике надо добавить ("Имя источника" -> F2 -> F4) и ввести в описание эти выражения. А для их расчета предусмотрен fileeval exp.fev:
Обязательно: в списке полей в БЭСТе первым (перед DocumentDate) ввести поле с описанием: {||'#'+alltrim(str(fileeval('exp.fev')))+'|PayDocRuXE'} (BS-Client воспринимает эту строку как ID документа в файле для импорта и тип, и это для каждого документа), а последним - поле с источником "Признак окончания документа" ({||';end'}).
Вообщем итог:
Использование стандартного способа настройки в формат TXT довольно неудобно. К тому же какие-то проблемы с отдельным приобретением.
Все решается довольно просто отдельным макросо
Joined: 17 Mar 2003 Posts: 357 Location: Гусев Сергей Александрович Occupation: Сисадм Interests: Нижний Новгород
Posted: 30 Jun 2005 14:15 Post subject:
Мы решили эту задачу написанием отдельной проги, которая конвертит данные из rsdoc.dbf в txt-формат PayDocExe последнего замеса (тот, который понимает ДБО BS-Client тоже последнего замеса). Все работает уже почти год.
Вообще некоторые клиент-банки умеют работать напрямую с rsdoc.dbf, что, вообще говоря, намного удобнее, чем работа с промежуточными форматами.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum