Сделал на випе но тормозит СТРАШНО, что можно придумать?
Код: Выделить всё
Create View vwkatOrg
var Vkod : String
As Select *
From katOrg
where
katOrg.Code=Vkod
;
Create View vwkatOrgProv
var sINN : String
sKPP : String
sName: String
As Select *
From katOrg
where ((
sINN /== katOrg.UNN and
sKPP /== katOrg.KodPlatNDS (noindex) and
sName/== katOrg.Name
))
;
Create View vwPodrInfo
var cKatOrg : comp
As Select *
From PodrInfo
where
PodrInfo.cPodr=cKatOrg
and PodrInfo.OKVED=0
;
Create View vwPodrInfoPost
var cKatOrg : comp
As Select *
From PodrInfo
where
PodrInfo.cPodr=cKatOrg
;
Create View vwkatCity
var City : String
As Select *
From katCity
where
katCity.Name=City
;
Create View vwkatState
var State : String
As Select *
From katState
where
katState.Name=State
;
Create View vwkatB
var sMFO1 : String
As Select *
From katB
where
katB.MFO1=sMFO1
;
Create View vwkatBank
var cKatOrg : String
As Select *
From katBank
where
katBank.cOrg=cKatOrg
;
Create View vwAddressn
var cAddr:comp
As Select *
From Addressn
where Addressn.nrec=cAddr
;
create view vwmytempKO
as select mytempKO.*
;
Create View vwAttrVal
var AttrNam_Name : String
AttrNam_wTable : word
AttrVal_cRec : comp
As Select Attrnam.name, attrval.vstring
from Attrnam, Attrval
where ((
AttrNam_wTable==attrnam.wtable and
AttrNam.nrec==Attrval.cAttrNam
))
and AttrNam.Name=AttrNam_Name
and AttrVal.cRec =AttrVal_cRec
;
Create View vwAttrNam
var AttrNam_Name : String
AttrNam_wTable: word
As Select *
from Attrnam
where ((
AttrNam_wTable==attrnam.wtable
))
and AttrNam.Name=AttrNam_Name
;
create view vwDep
var sKod : string
TypePodr: word
as select katpodr.*
from katpodr
where
((
TypePodr == katpodr.sklad
))
and katpodr.kod=sKod
;
Код: Выделить всё
Procedure OutTemp;
begin
StartNewVisual (vtRotateVisual,vfConfirm, 'Вставка записей', 0);
MyCount:= 0;
if vwmytempKO.GetFirst=tsOk then
do
{
MyCount:=MyCount+1;
iNextVisual(MyCount);
Flag:=0;
If vwmytempKO.mytempKO.Name = ''
{
LogList_01.write('Warning Не задано наименование контрагента, код ',0);
LogList_01.write(vwmytempKO.mytempKO.Kod,0);
continue;
}
vwKatOrg.VKod:=vwmytempKO.mytempKO.Kod;
if not(vwKatOrg.GetFirst=tsOk) then //если организации нет
{
vwKatOrg.KatOrg.nrec:=comp(0);
vwKatOrg.KatOrg.Code:= vwmytempKO.mytempKO.Kod;
Flag:=1;
}
MyPos:=Pos('/',vwmytempKO.mytempKO.INN);
if MyPos=0 then MyPos:=Pos('\',vwmytempKO.mytempKO.INN);
if MyPos=0 then
{
vwKatOrg.KatOrg.UNN:=vwmytempKO.mytempKO.INN;
}
else
{
vwKatOrg.KatOrg.UNN:= SubStr(vwmytempKO.mytempKO.INN,1,MyPos-1);
vwKatOrg.KatOrg.KodPlatNDS := SubStr(vwmytempKO.mytempKO.INN,MyPos+1,length(vwmytempKO.mytempKO.INN));
};
vwKatOrg.KatOrg.Name := vwmytempKO.mytempKO.Name ;
vwKatorgProv.sINN:=vwKatOrg.KatOrg.UNN;
vwKatorgProv.sKPP:=vwKatOrg.KatOrg.KodPlatNDS;
vwKatorgProv.sName:=vwKatOrg.KatOrg.Name;
If vwKatorgProv.GetFirst = tsOk then
{
LogList_01.write('Error Контрагент с ИНН:'+vwKatorgProv.UNN+' КПП:'+vwKatorgProv.sKPP+' и названием:'+vwKatorgProv.sName,0);
LogList_01.write('уже существует с кодом:'+vwKatorgProv.KatOrg.Code+', код внедряемой записи:'+vwmytempKO.mytempKO.Kod+'. запись добавлена с фразой (дубль) перед названием',0);
vwKatOrg.KatOrg.Name := '(дубль)'+vwmytempKO.mytempKO.Name ;
}
if length(trim(vwmytempKO.mytempKO.Name2))>0 then vwKatOrg.KatOrg.Name :=vwKatOrg.KatOrg.Name+' '+trim(vwmytempKO.mytempKO.Name2);
if length(trim(vwmytempKO.mytempKO.Name3))>0 then vwKatOrg.KatOrg.Name :=vwKatOrg.KatOrg.Name+' '+trim(vwmytempKO.mytempKO.Name3);
vwKatOrg.KatOrg.Addr := vwmytempKO.mytempKO.IndexUr+', '+vwmytempKO.mytempKO.respUr+', '+vwmytempKO.mytempKO.RayonUr+', '+trim(vwmytempKO.mytempKO.GorodUr)+', '+trim(vwmytempKO.mytempKO.UlicaUr);
vwKatOrg.KatOrg.IndexK := vwmytempKO.mytempKO.IndexUr ;
vwKatCity.City := vwmytempKO.mytempKO.GorodUr;
if vwKatCity.GetFirst<>tsOk then
{
vwKatCity.KatCity.Name := vwmytempKO.mytempKO.GorodUr;
vwKatCity.insert current KatCity;
}
vwKatState.State := vwmytempKO.mytempKO.StranaN;
if vwKatState.GetFirst<>tsOk then
{
vwKatState.KatState.Name := vwmytempKO.mytempKO.StranaN;
vwKatState.KatState.Kod := vwmytempKO.mytempKO.StranaK;
vwKatState.insert current KatState;
}
vwKatOrg.KatOrg.cCity := vwKatCity.KatCity.nrec ;
vwKatOrg.KatOrg.cState := vwKatState.KatState.nrec ;
vwKatOrg.KatOrg.Tel := vwmytempKO.mytempKO.Tel ;
vwKatOrg.KatOrg.OKPO := vwmytempKO.mytempKO.OKPO ; // Код по ОКПО
vwKatOrg.KatOrg.OKONH := vwmytempKO.mytempKO.OKONH; // Код по ОКНХ
if Flag=1 then
{
vwKatOrg.insert current KatOrg;
}
else
{
vwKatOrg.update current KatOrg;
}
vwKatOrg.VKod:=vwmytempKO.mytempKO.Kod;
if vwKatOrg.GetFirst=tsOk then //ищем данную орг, ее нрек
{
//БИК
vwKatB.sMFO1:=vwmytempKO.mytempKO.BIK;
if vwKatB.GetFirst=tsOk then
{
vwKatBank.cKatOrg:=vwKatOrg.KatOrg.nrec;
if vwKatBank.GetFirst=tsOk then
{
vwKatBank.KatBank.Name := vwKatB.KatB.Name ; // Наименование
vwKatBank.KatBank.Remark := vwKatB.KatB.Remark; // Комментарий
vwKatBank.KatBank.Addr := vwKatB.KatB.Addr ; // Адрес
vwKatBank.KatBank.MFO1 := vwKatB.KatB.MFO1 ; // Код МФО
vwKatBank.KatBank.MFO2 := vwKatB.KatB.MFO2 ; // Код РКЦ
vwKatBank.KatBank.Schet2 := vwKatB.KatB.KorSchet; // Счет
vwKatBank.update current KatBank;
}
else
{
vwKatBank.KatBank.nrec := comp(0);
vwKatBank.KatBank.Name := vwKatB.KatB.Name ; // Наименование
vwKatBank.KatBank.Remark := vwKatB.KatB.Remark; // Комментарий
vwKatBank.KatBank.Addr := vwKatB.KatB.Addr ; // Адрес
vwKatBank.KatBank.MFO1 := vwKatB.KatB.MFO1; // Код МФО
vwKatBank.KatBank.MFO2 := vwKatB.KatB.MFO2; // Код РКЦ
vwKatBank.KatBank.Schet2 := vwKatB.KatB.KorSchet; // Счет
vwKatBank.insert current KatBank;
}
}
else
{
! vwKatB.KatB.nrec:=0;
! vwKatB.KatB.MFO1:=vwmytempKO.mytempKO.BIK;
! vwKatB.insert current KatB;
LogList_01.write('warning Не найдена позиция');
LogList_01.write('Проверить банк с БИК '+vwmytempKO.mytempKO.BIK);
}
//Адреса
vwPodrInfoPost.cKatOrg:=vwKatOrg.KatOrg.nrec;
if vwPodrInfoPost.GetFirst<>tsOK then
{
//Юр адрес
vwAddressn.addressn.saddress1:=vwmytempKO.mytempKO.IndexUr+', '+vwmytempKO.mytempKO.respUr+', '+vwmytempKO.mytempKO.RayonUr+', '+trim(vwmytempKO.mytempKO.GorodUr)+', '+trim(vwmytempKO.mytempKO.UlicaUr);
vwAddressn.addressn.spostind :=trim(vwmytempKO.mytempKO.IndexUr);
vwaddressn.addressn.nrec :=0;
vwAddressn.insert current addressn;
vwPodrInfoPost.PodrInfo.nrec := 0;
vwPodrInfoPost.PodrInfo.insnomer := string(vwAddressn.addressn.nrec);
vwPodrInfoPost.PodrInfo.cpodr := vwKatOrg.KatOrg.nrec;
//Почт адрес
if trim(vwmytempKO.mytempKO.GorodPo)<>'' and trim(vwmytempKO.mytempKO.UlicaPo)<>'' then
{
vwaddressn.addressn.nrec :=0;
vwAddressn.addressn.saddress1:=trim(vwmytempKO.mytempKO.GorodPo)+', '+trim(vwmytempKO.mytempKO.UlicaPo);
vwAddressn.insert current addressn;
vwPodrInfoPost.PodrInfo.okved := string(vwAddressn.addressn.nrec);
}
vwPodrInfoPost.insert current PodrInfo;
}
else
{
//Юр адрес
vwAddressn.cAddr:=comp(vwPodrInfoPost.PodrInfo.insnomer);
if vwAddressn.GetFirst=tsOK then
{
vwAddressn.addressn.saddress1:=vwmytempKO.mytempKO.IndexUr+', '+vwmytempKO.mytempKO.respUr+', '+vwmytempKO.mytempKO.RayonUr+', '+trim(vwmytempKO.mytempKO.GorodUr)+', '+trim(vwmytempKO.mytempKO.UlicaUr);
vwAddressn.addressn.spostind :=trim(vwmytempKO.mytempKO.IndexUr);
vwAddressn.update current addressn;
}
else
{
vwAddressn.addressn.saddress1:=vwmytempKO.mytempKO.IndexUr+', '+vwmytempKO.mytempKO.respUr+', '+vwmytempKO.mytempKO.RayonUr+', '+trim(vwmytempKO.mytempKO.GorodUr)+', '+trim(vwmytempKO.mytempKO.UlicaUr);
vwAddressn.addressn.spostind :=trim(vwmytempKO.mytempKO.IndexUr);
vwAddressn.addressn.nrec :=0;
vwAddressn.insert current addressn;
vwPodrInfoPost.PodrInfo.insnomer := string(vwAddressn.addressn.nrec);
vwPodrInfoPost.update current PodrInfo;
}
//Почт адрес
vwAddressn.cAddr:=comp(vwPodrInfoPost.PodrInfo.okved);
if vwAddressn.GetFirst=tsOK then
{
if trim(vwmytempKO.mytempKO.GorodPo)<>'' and trim(vwmytempKO.mytempKO.UlicaPo)<>'' then
{
vwAddressn.addressn.saddress1:=trim(vwmytempKO.mytempKO.GorodPo)+', '+trim(vwmytempKO.mytempKO.UlicaPo);
vwAddressn.update current addressn;
}
else
{
vwAddressn.delete current addressn;
}
}
else
{
if trim(vwmytempKO.mytempKO.GorodPo)<>'' and trim(vwmytempKO.mytempKO.UlicaPo)<>'' then
{
vwaddressn.addressn.nrec :=0;
vwAddressn.addressn.saddress1:=trim(vwmytempKO.mytempKO.GorodPo)+', '+trim(vwmytempKO.mytempKO.UlicaPo);
vwAddressn.insert current addressn;
vwPodrInfoPost.PodrInfo.okved := string(vwAddressn.addressn.nrec);
vwPodrInfoPost.update current PodrInfo;
}
}
}
//внеш аттр 'Табельный номер'
if length(trim(vwmytempKO.mytempKO.SotrTabNo))>0 then
{
vwAttrVal.AttrNam_Name :='Табельный номер';
vwAttrVal.AttrNam_wTable:=word('1418');
vwAttrVal.AttrVal_cRec :=vwKatOrg.KatOrg.nRec;
if vwAttrVal.GetFirst=tsOk then
{
vwAttrVal.AttrVal.vString := vwmytempKO.mytempKO.SotrTabNo ;
vwAttrVal.update current AttrVal;
}
else
{
vwAttrVal.AttrVal.nrec :=comp(0);
vwAttrVal.AttrVal.vString :=vwmytempKO.mytempKO.SotrTabNo;
vwAttrVal.AttrVal.cRec :=vwKatOrg.KatOrg.nRec ;
vwAttrVal.AttrVal.wTable :=word('1418') ;
vwAttrNam.AttrNam_Name :=vwAttrVal.AttrNam_Name ;
vwAttrNam.AttrNam_wTable :=vwAttrVal.AttrNam_wTable ;
if vwAttrNam.GetFirst=tsOk then
vwAttrVal.Attrval.cAttrNam := vwAttrNam.AttrNam.nRec ;
vwAttrVal.insert current AttrVal;
};
};
}; //if vwKatOrg.GetFirst=tsOk then //ищем данную орг, ее нрек
} while (vwmytempKO.GetNext=tsOk);
StopVisual('Работа завершена',1);
end;