Предобработка банковской выписки
Добавлено: 07 июл 2010, 20:33
Есть файл банковской выписки в формате БС Парус (dbf)
Формат описан ниже
№ Имя поля Размерность Содержание Примечание/поле в ДБО
Есть ресурс который осуществлял предобработку этого файла в вид удобоваримый галактике.
Uploaded with ImageShack.us
После установки последних обновлений от 30.06.10, последнего VIP'а и сборки этого ресурса предобработка производиться перестала.
Вызов шел через ФРО-Операции-Ввод банковской выписки
Хочу предупредить сразу, товарищи! Код не мой, я только пытаюсь научиться разбиратсья во всех взаимосвязях между обновлениями атлантиса, сборкой ресурсов и
вечными танцами с бубнеом над исходниками после обновлений. Камрады, помогите понять почему эта зараза не хочет делать то что она должна.
Ниже привожу исходники ресурса предобработки.
vyp.vip
vypscript.vih
Формат описан ниже
№ Имя поля Размерность Содержание Примечание/поле в ДБО
Код: Выделить всё
1* TYP_DOC N(1,0) Тип записи 0 - документ, 1- выписка
2* NUM_DOC С(12) Номер документа
3* DATE_DOC Date Дата документа
4- ORG_FR С(15) Краткий код Контрагента От Кого
5 ORG_FN C(255) Наименование контрагента От Кого От Кого платеж
6 ORG_FC С(3) Код страны Контрагента От Кого Цифровой код (для России - 643)
7* ORG_FS С(25) Счет контрагента От Кого Для выписки - счет, по которому выписка
8 ORG_FI С(14) ИНН Контрагента От Кого
9*/ ORG_FB С(9) БИК контрагента От Кого
10 ORG_FKS С(25) Кор. Счет контрагента От Кого
11 ORG_FBN C(80) Название банка Контрагента От Кого
12 ORG_FBSN С(25) Название населенного пункта Банка Контрагента От Кого
13 OR_FBSNT С(5) Краткое название типа населенного пункта Банка контрагента От Кого
14- ORG_TR С(15) Краткий код Контрагент Кому
15 ORG_TN C(255) Наименование контрагента Кому Кому платеж
16 ORG_TC С(3) Код страны Контрагента Кому
17*/ ORG_TS С(25) Счет контрагента Кому
18 ORG_TI С(14) ИНН Контрагента Кому
19*/ ORG_TB С(9) БИК контрагента Кому
20 ORG_TKS С(25) Кор. Счет контрагента Кому
21 ORG_TBN C(80) Название банка Контрагента Кому
22 ORG_TBSN С(25) Название населенного пункта Банка Контрагента Кому
23 OR_TBSNT С(5) Краткое название типа населенного пункта Банка контрагента Кому
24 NOTE C(255) Назначение платежа
25*/ CURR С(3) Валюта (код) Цифровой код (для рубля России - 810)
26*/ SUMMA_DOC N(18,2) Сумма документа Для документа
27- ST_NDS N(8,4) Ставка НДС Для документа
28- SUMMA_NDS N(18,2) Сумма НДС Для документа
29- DATE_PAY Date Срок платежа
30 APP_PAY N(1,0) Тип платежа 0 - Почтой,
1 - телеграф,
2 - электронно,
3 - (не заполняется)
31* STATM_ID N(10,0) ID выписки Для выписки - уникальный номер выписки. Для документа - номер выписки, которой соответствует документ. Документы "привязываются " к выпискам именно по этому полю.
31/* TURN_DB N(18,2) Оборот по дебету Для выписки
32/* TURN_KR N(18,2) Оборот по кредиту Для выписки
33/* REST_IN N(18,2) Входящий остаток Для выписки
34/* REST_OUT N(18,2) Исходящий остаток Для выписки
44 PayerKPP С(9) КПП плательщика (102) PayerKPP
45 ReceiverKPP С(9) КПП получателя (103) ReceiverKPP
46 Stat1256 С(2) Показатель статуса (101) Stat1256
47 CBCcode С(19) Код бюджетной классификации (104) CBCcode
48 OKATOcode С(11) Код ОКАТО (105) OKATOcode
49 PayGrndParam С(2) Показатель основания платежа (106) PayGrndParam
50 TaxPeriodParam1 С(2) Показатель налогового периода (107), символы 1-2 (107) = TaxPeriodParam1 + '.' + TaxPeriodParam2 + '.' + TaxPeriodParam3
51 TaxPeriodParam2 С(2) Показатель налогового периода (107), символы 4-5
52 TaxPeriodParam3 С(4) Показатель налогового периода (107), символы 7-10
53 DocNumParam С(15) Показатель номера документа (108) Разложить в поля DocNumParam1 (первые 2 символа), DocNumParam2(остальные символы)
54 DocDateParam Date Показатель даты документа (109) Разложить в поля DocDateParam1 (dd), DocDateParam2 (mm), DocDateParam3 (yyyy)
55 PayTypeParam C(2) Показатель типа платежа (110) PayTypeParam
Примечания:
* Поле обязательно к заполнению для всех типов документов данного формата
*/ Поле обязательно к заполнению для первого из 2-х типов документов данного формата (аналогично - другие подобные символы)
- Поле на данный момент не заполняется (не обрабатывается), оставлено в формате на будущее
Uploaded with ImageShack.us
После установки последних обновлений от 30.06.10, последнего VIP'а и сборки этого ресурса предобработка производиться перестала.
Вызов шел через ФРО-Операции-Ввод банковской выписки
Хочу предупредить сразу, товарищи! Код не мой, я только пытаюсь научиться разбиратсья во всех взаимосвязях между обновлениями атлантиса, сборкой ресурсов и
вечными танцами с бубнеом над исходниками после обновлений. Камрады, помогите понять почему эта зараза не хочет делать то что она должна.
Ниже привожу исходники ресурса предобработки.
vyp.vip
Код: Выделить всё
#include VypScript.vih
interface IBankVypScript '' EscClose;
Var
Handle : LongInt;
Sch, CurSch, D_OPl1 : String;
Flag : Byte;
Table Struct jPrev "Таблица для превью данных"
(
NoDoc : String,
NameKorr : String,
MFOKorr : String,
AccKorr : String,
SodPr : String,
Sum_D : Double,
Sum_K : Double,
D_Opl : string,
inn : string
)
;
create view
as select
*
from
jPrev
;
Function BeforeImport(asFileName : string; abDbf : boolean; adDate : date;
awTipVip : word; acBankOrVal : comp; acBankDocF : comp;
awMakeRound : word; afTypeRound : double) : boolean;
{
! intinit;
Handle := DBFOpen(asFileName, stOpen);
StartNewVisual(vtNumericVisual,vfTimer,'Идет обработка',1);
if dbfGetfirst(Handle)=tsOK
Do
{
Flag := dbfGetFieldValue(Handle,'Typ_Doc');
If Flag=1
{
CurSch := dbfGetFieldValue(Handle,'Org_FS');
d_OPl1:=dbfGetFieldValue(Handle,'Date_Doc');
}
If Flag=0
{
ClearBuffer(#jPrev);
Sch := dbfGetFieldValue(Handle,'Org_FS');
jPrev.NoDoc:= dbfGetFieldValue(Handle,'Num_Doc');
jPrev.SodPr:= dbfGetFieldValue(Handle,'Note');
! message (dbfGetFieldValue(Handle,'Date_Doc'));
jPrev.D_Opl:= D_Opl1;
If Sch=CurSch
{
jPrev.NameKorr:= dbfGetFieldValue(Handle,'Org_TN');
jPrev.MFOKorr := dbfGetFieldValue(Handle,'Org_TB');
jPrev.AccKorr := dbfGetFieldValue(Handle,'Org_TS');
jPrev.Sum_K := dbfGetFieldValue(Handle,'Summa_Doc');
jPrev.inn := dbfGetFieldValue(Handle,'Org_ti');
}
Else
{
jPrev.NameKorr:= dbfGetFieldValue(Handle,'Org_FN');
jPrev.MFOKorr := dbfGetFieldValue(Handle,'Org_FB');
jPrev.AccKorr := dbfGetFieldValue(Handle,'Org_FS');
jPrev.Sum_D := dbfGetFieldValue(Handle,'Summa_Doc');
jPrev.inn := dbfGetFieldValue(Handle,'Org_fi');
}
Insert current jPrev;
}
}While dbfGetNext(Handle)=tsOK
DbfClose(Handle);
Handle := DBFOpen(asFileName,stCreate);
DbfAddField(Handle, 'Nodoc', dbChar,12,0);
DbfAddField(Handle, 'SodPr', dbChar,255,0);
DbfAddField(Handle, 'D_Opl', dbchar,10,0);
DbfAddField(Handle, 'NameKorr', dbChar,255,0);
DbfAddField(Handle, 'MFOKorr', dbChar,9,0);
DbfAddField(Handle, 'AccKorr', dbChar,25,0);
DbfAddField(Handle, 'Sum_D', dbNum,15,2);
DbfAddField(Handle, 'Sum_K', dbNum,15,2);
DbfAddField(Handle, 'Acc', dbChar,25,0);
DbfAddField(Handle, 'inn', dbChar,25,0);
If GetFirst jPrev=TsOK
Do
{
dbfPutFieldValue(Handle,'NoDoc',jPrev.Nodoc);
dbfPutFieldValue(Handle,'SodPr',jPrev.SodPr);
dbfPutFieldValue(Handle,'D_Opl',jPrev.D_Opl);
dbfPutFieldValue(Handle,'NameKorr',jPrev.NameKorr);
dbfPutFieldValue(Handle,'MFOKorr',jPrev.MFOKorr);
dbfPutFieldValue(Handle,'AccKorr',jPrev.AccKorr);
dbfPutFieldValue(Handle,'Sum_K',jPrev.Sum_K);
dbfPutFieldValue(Handle,'Sum_D',jPrev.Sum_D);
dbfPutFieldValue(Handle,'Acc' ,CurSch);
dbfPutFieldValue(Handle,'inn',trim(jPrev.inn));
DBFInsertRecord(Handle);
}While GetNext jPrev=TsOk
StopVisual('',0);
DbfClose(Handle);
delete all jprev;
showerrors;
exitproc;
beforeimport := true;
}
//:= DBFGetFieldValue(handle, 'DETAILS')
procedure AfterImport;
{
exit;
}
Function VidPlatIsDogRef: boolean;
{
exit;
}
HandleEvent
cmInit:
{
abort;
}
end;
end.
Код: Выделить всё
//------------------------------------------------------------------------------
// (c) корпорация Галактика
// Галактика 5.85 - Финансовый контур
// Интерфейс пред- и постобработки файла банковской выписки
//------------------------------------------------------------------------------
!#ifdef ComponentVersion
#Component "F_BankDocF"
!#end
#doc
Объект пред- и постобработки файла банковской выписки
#end
ObjInterface OBankVypScript;
#doc
Предобработка файла банковской выписки
#end
Function BeforeImport(asFileName : string; // Путь и имя файла с выпиской
abDbf : boolean; // true - DBF-формат, false - TXT-формат
adDate : date;
awTipVip : word; // 0 - рублевая, 1 - валютная, 2 - ???
acBankOrVal : comp; // if (awTipVip = 2) KlVal.nRec else CashBank.nRec
acBankDocF : comp; // BankDocF.nRec
awMakeRound : word; // 0 - нет, 1 - >= 0.5, 2 - в большую сторону
afTypeRound : double // 0.01, 0.1, 1, 10, 100 и т.д.
) : boolean;
#doc
Постобработка файла банковской выписки
#end
Procedure AfterImport;
#doc
Необходимость выполнения распределения платежа по договору, ссылка на который передана через поле "Тип платежа"
#end
Function VidPlatIsDogRef: boolean;
End;
VipInterface IBankVypScript implements OBankVypScript
#ifdef Atl51
Licensed (Free)
#end
;