PARAMETERS BazaD
LOCAL er AS Exception
OldSel = SELECT()
SET ESCAPE OFF
oUpdSe = CREATEOBJECT("UpdSe",BazaD)
oUpdSe.oldDataSession  = SET("Datasession")
oUpdSe.ZipFileName = "IF_6007_2010_12_20110217121751"
oUpdSe.PathExe=ADDBS(SYS(5)+SYS(2003))
oUpdSe.UpdPath = ADDBS(SYS(5)+SYS(2003)+"\Updates\Temp\"+oUpdSe.ZipFileName)
oUpdSe.logFileName=CHR(34)+oUpdSe.PathExe+"Update.Log"+CHR(34)
oUpdSe.TablesList.Add("{},docs:iff,docs_al:iff,docs_ascc:iff,docs_az:iff,docs_az_pi:iff,docs_az_orr:iff,docs_ca:iff,docs_cm:iff,docs_ii:iff,docs_orr:iff,docs_pi:iff,docs_rx:iff,docs_rz:iff,docs_xr:iff,docs_ds:iff,docs_purchase:iff,OrderList_Step:nzam")
oUpdSe.TablesList.Add("{Guide},StatusND:code,LanguageCode:code,KND:id,lncountries:alfa2,ORGANR:iff,Status:id,LogVal:id,Prefics:pref,Kst:kst,Ds:ds")
oUpdSe.UpdateDataBase()
res =oUpdSe.Lresult
RELEASE oUpdSe
SELECT (OldSel)
SET ESCAPE ON
RETURN res
*
DEFINE CLASS UpdSe as Session
** VB
	logFileName = ""
	DBID = ""
	oldDataSession = 0
	CurDataSession = 0
	Lresult = .T.
	DbSeFiNa = ""
	DbPath  = ""
	ZipFileName = ""
	UpdPath = ""
	TablesList = .Null.
** /
    R_comment = "" 
    PathExe = ""
    NameBD = ""
** VB
   	oLogFile = .NULL.
	oUpdateLog = .NULL.
** /
 PROCEDURE destroy
	this.save("Update.log")
	oCol = This.TablesList
	RELEASE oCol
	SET DATASESSION TO (this.oldDataSession)
 ENDPROC
*
 PROCEDURE init
	LPARAMETERS BazaD
** +- 10.11.2010 -+
    PUBLIC Je_db2sett, je_dbsett
** +-	This.DbSeFiNa = BazaD
	This.DbPath  = ADDBS(JUSTPATH(BazaD))
	This.TablesList = CREATEOBJECT("Collection")
	This.CurDataSession = this.DataSessionId  
	SET DATASESSION TO (this.DataSessionId)
	SET EXCLUSIVE OFF
	SET DELETE ON
	SET EXACT ON
 ENDPROC
** VB
 PROCEDURE openFile
  LPARAMETERS cFileName
  cDbID = this.dbID
  cUpdateID = JUSTSTEM(this.ZipFileName)
  oLogFile = CREATEOBJECT("Microsoft.XMLDOM")
  oLogFile.async = .F.
  IF FILE(FULLPATH(cFileName))
	oLogFile.load(FULLPATH(cFileName))
  ELSE
	cXML='<?xml version="1.0" encoding="windows-1251"?>'+CHR(13)
	cXML=cXML+'<?xml-stylesheet type="text/xsl" href="ShowLOG.xsl"?>'+CHR(13)
	cXML=cXML+'<Updates>'+CHR(13)
	cXML=cXML+'	<LastUpdate></LastUpdate>'+CHR(13)
	cXML=cXML+'	<log></log>'+CHR(13)
	cXML=cXML+'</Updates>'+CHR(13)
	oLogFile.loadXML(cXML)
  ENDIF
  This.oLogFile = oLogFile
  oLog = oLogFile.selectSingleNode("Updates/log")
  IF ISNULL(oLog)
	ERROR(" Update.log .")
  ELSE
   oBase = oLog.selectSingleNode('Base[@ID = "'+cDbID+'"]')
   IF ISNULL(oBase)
	oBase = oLogFile.createElement("Base")
	oBase.setAttribute("ID",cDbID)
	oLog.appendChild(oBase)
   ENDIF
   oUpdateLog = oBase.selectSingleNode('Update[@ID = "'+cUpdateID+'"]')
   IF ISNULL(oUpdateLog)
	oUpdateLog  = oLogFile.createElement("Update")
	oUpdateLog .setAttribute("ID",cUpdateID)
	oBase.appendChild(oUpdateLog )
   ENDIF
   this.oUpdateLog = oUpdateLog
  ENDIF
 ENDPROC
*
PROCEDURE WriteString
 LPARAMETERS cOperation, cResult
 IF !ISNULL(This.oLogFile) AND !ISNULL(this.oUpdateLog)
	oOperation  = This.oLogFile.createElement("Operation")
	oOperation.setAttribute("Caption",IIF(empty( cOperation),"",TRANSFORM( cOperation)))
	oOperation.setAttribute("Res", IIF(empty(cResult),"",TRANSFORM(cResult)))
	oOperation.setAttribute("DateTime", TRANSFORM(DATETIME(),"@YS"))
	this.oUpdateLog.appendChild(oOperation)
 ENDIF 
ENDPROC
*	
PROCEDURE save()
 LPARAMETERS cFileName
 This.oLogFile.Save(cFileName)
ENDPROC
*
PROCEDURE CheckVersion
** /
    LOCAL Up_P_ds,Db_P_ds,Dba1,Dba2,T_23,T_24,Bd_ind,Db_kluch,Eof_sel23,NZ_sel23
    LOCAL Nm_f, Db_f, Pr_i_DS, P_u_ds, xx_d_zip, xx_d_sys, st_zipD
** /
** +04.05.07
    P_u_ds = '0'   && = '1' - . Dbsettings.dbf  .              
** +
**   
	TRY
** ?Syst. Date()-26.05.10
	This.RepMes('* ˲      !', .F., .F.)
    xx_d_zip = ''
    xx_d_sys = DTOS(DATE())
    st_zipD = AT('_',This.ZipFileName, 4)
    IF st_zipD # 0
     xx_d_zip = SUBSTR(This.ZipFileName, st_zipD+1, 8)
    ENDIF
    IF xx_d_zip <= xx_d_sys
** ?
** ~   Info.txt
    f_info=This.UpdPath + "Info.txt"
	IF FILE('&f_info.') 
** !
      Pr_i_ds = '0'
** !
** ~
	infotxt=FILETOSTR(This.UpdPath + "Info.txt")
	CrntVersion=GetValstring(infotxt,"CrntVersion")
	PrevVersion=GetValstring(infotxt,"PrevVersion")
	X_TabL ='"'+This.DbPath+'Info'+'"'
** /
	This.R_comment = GetValstring(infotxt,"Comment")
** /
	USE &X_TabL Alias InfoTable In 0 Exclusive
	SELECT InfoTable
	x_crntupd = ALLTRIM(UPPER(InfoTable.crntupdate))
** !
	This.NameBD = InfoTable.Name
** !
	IF .NOT. EMPTY(x_crntupd) .AND. (CrntVersion >= x_crntupd)
**  .
     m.n1=AT('_',CrntVersion, 1)
     m.n2=AT('_',CrntVersion, 2)
     m.n3=AT('_',CrntVersion, 3)
     m.n4=AT('_',CrntVersion, 4)
*         
     m.nsyst=SUBSTR(CrntVersion,1,2)
     m.nzam=SUBSTR(CrntVersion,m.n1+1,m.n2-m.n1-1)
     m.nyear=SUBSTR(CrntVersion,m.n2+1,m.n3-m.n2-1)
     m.nipc=SUBSTR(CrntVersion,m.n3+1,m.n4-m.n3-1)
**  .
     m.k1=AT('_',x_crntupd, 1)
     m.k2=AT('_',x_crntupd, 2)
     m.k3=AT('_',x_crntupd, 3)
     m.k4=AT('_',x_crntupd, 4)
*         
     m.ksyst=SUBSTR(x_crntupd,1,2)
     m.kzam=SUBSTR(x_crntupd,m.k1+1,m.k2-m.k1-1)
     m.kyear=SUBSTR(x_crntupd,m.k2+1,m.k3-m.k2-1)
     m.kipc=SUBSTR(x_crntupd,m.k3+1,m.k4-m.k3-1)
** !  
** VB  
     this.dbID = m.nzam
     oUpdSe.OpenFile(oUpdSe.logFileName)
     This.WriteString('*    - '+This.NameBD, '')     
** !
     IF (m.nsyst=m.ksyst) .and. (m.nzam=m.kzam)
      IF m.nyear # m.kyear 
       IF ((VAL(m.nyear)-VAL(m.kyear))=1) .AND. (m.kipc='12')
    	This.Lresult = .T.
       ELSE
        x_prevUpd=m.nsyst+'_'+m.nzam+'_'+STR(VAL(m.nyear)-1,4)+'_'+'12...zip'
    	This.Lresult = .F.
	    cM_s ="*         "
        cM_s = cM_s + "  - "+x_prevUpd
       ENDIF
      ENDIF
     ELSE
	  This.Lresult = .F.
	  cM_s ="*       - "+This.ZipFileName+".zip"
     ENDIF
	ELSE
	 This.Lresult = .F.
	 cM_s ="*       - "+This.ZipFileName+".zip"
	ENDIF
** ~25.12.06 
   ELSE 
   	This.Lresult = .F.
	cM_s ="* ³  - "+ F_info
   ENDIF
** ?      
     ELSE 
    	This.Lresult = .F.
		cM_s ="*    - "+ DTOC(DATE())
     ENDIF
** ?      
   IF .NOT. This.Lresult  
    oUpdSe.OpenFile(oUpdSe.logFileName)
** !  
    This.WriteString('Error = '+cM_s, '')     
** !
   	This.RepMes(cM_s, This.Lresult, .T.)
   ENDIF
** ~
** /14.01.07
  IF This.Lresult  && III   
** !
    Pr_i_ds = '1'
** !
** -=    dbsettings   
**   .      Db_crypt
** +- 10.11.2010 -+
    Je_dbsett = '0'      && '1' - je
    Db_P_dbsett = '"'+ADDBS(This.DbPath)+'Dbsettings.dbf'+'"'
    IF FILE(Db_P_dbsett)
     Je_dbsett = '1'
    ENDIF
*    
    Je_db2sett = '0'     && '1' - je
    Db_P_db2sett = '"'+ADDBS(This.DbPath)+'Db2settings.dbf'+'"'
    IF FILE(Db_P_db2sett)
     Je_db2sett = '1'     
     Up_P_ds = '"'+ADDBS(This.UpdPath)+'Db2settings'+'"'
     Db_P_ds = '"'+ADDBS(This.DbPath)+'Db2settings'+'"'
    ELSe
     Up_P_ds = '"'+ADDBS(This.UpdPath)+'Dbsettings'+'"'
     Db_P_ds = '"'+ADDBS(This.DbPath)+'Dbsettings'+'"'
    ENDIF
** +-
    Dba1 = ADDBS(This.UpdPath)+'Dba1'
    Dba2 = ADDBS(This.UpdPath)+'Dba2'
    Bd_ind="Alltrim(UPPER(Tblname))+ALLTRIM(UPPER(Caption))"      && Index
*
    IF FILE("&Dba1..idx")
     ERASE "&Dba1..idx"
    ENDIF
*
    IF FILE("&Dba2..idx")
      ERASE "&Dba2..idx"
    ENDIF
*
    USE &Up_P_ds. Alias T_23 In 0 Exclusive
** +07.05.07 
    P_u_ds = '1'
** +
	USE &Db_P_ds. Alias T_24 In 0 Exclusive
** +- 10.11.2010
    IF (Je_db2sett = '1') .AND. (Je_dbsett = '1')
	 USE &Db_P_dbsett. Alias T_24_old In 0 Exclusive
    ENDIF
** +-
** +07.05.07
    P_u_ds = '0'
** +
** #07.05.09    <>  <.  >
*
    Typ_cr_23='0'    && "0" - zagaln. kod., "1" - ind. kod.
    Typ_cr_24='0'    && "0" - zagaln. kod., "1" - ind. kod.
*     
    SELE T_23
    SET FILTER TO (FieldType=-1)
    GO TOP
*
    SELE T_24
    SET FILTER TO (FieldType=-1) 
    GO TOP
* 
    IF .NOT. EOF('T_23') .AND. .NOT. EOF('T_24')
** perevirka kod. v BD     
     SELE T_24
     IF ATC('TypeCrypt=1', STRTRAN(Values, " ", "")) != 0
        Typ_cr_24='1' && "1" - indyvid. koduv.
     ELSE 
        Typ_cr_24='0' && "0" - zagaln. koduv.
     ENDIF
** perevirka kod. v Onovlenni     
     SELE T_23
     IF ATC('TypeCrypt=1', STRTRAN(Values, " ", "")) != 0
        Typ_cr_23='1'    && "1" - indyvid. koduv.
     ELSE 
        Typ_cr_23='0'    && "0" - zagaln. koduv.
     ENDIF
** korektn. i nekorektn. umov
     DO CASE
** korektno
            CASE ((Typ_cr_24='1') .AND. (Typ_cr_23='1')) .OR. ((Typ_cr_24='0') .AND. (Typ_cr_23='0'))
                This.Lresult = .T.
** - #29.05.09
             IF TYPE("_TypeCrypt") = "L"
              IF ((Typ_cr_24='1') .AND. (Typ_cr_23='1'))
               _TypeCrypt = .T.  && indyv. koduv.
              ELSE
               _TypeCrypt = .F.  && zagal. koduv. 
              ENDIF
             ENDIF
** - #
** Nekorektn
            CASE (Typ_cr_24='1') .AND. (Typ_cr_23='0')
		      This.Lresult = .F.
			  cM_s ="*     ,    - . "
              cM_s = cM_s + "    !"   
		      SELE T_23
		      USE
*
			  this.writeString( 'Error = '+cM_s, '')   
   			  This.RepMes(cM_s, This.Lresult, .T.)
            CASE (Typ_cr_24='0') .AND. (Typ_cr_23='1')
		      This.Lresult = .F.
			  cM_s ="*     ,    - . "
              cM_s = cM_s + "    !"   
		      SELE T_23
		      USE
*
			  this.writeString( 'Error = '+cM_s, '')   
   			  This.RepMes(cM_s, This.Lresult, .T.)

         ENDCASE
    ELSE  && nevidpov. DBsettings.dbf
      This.Lresult = .F.
	  cM_s ="*          <FieldType=-1>"
      SELE T_23
      USE
*
  	  this.writeString( 'Error = '+cM_s, '')   
   	  This.RepMes(cM_s, This.Lresult, .T.)
*
    ENDIF
   IF This.Lresult       && IIII

** #
    SELE T_23
    INDEX ON &Bd_ind. TO "&Dba1" COMPACT
    SET INDEX TO  "&Dba1..idx"                 
    GO TOP
*
    SET FILTER TO (FieldType=1) .OR. (FieldType=2)
    GO TOP
*
    SELE T_24
    INDEX ON &Bd_ind. TO "&Dba2" COMPACT
    SET INDEX TO  "&Dba2..idx"                 
    GO TOP
*
    SET FILTER TO (FieldType=1) .OR. (FieldType=2)
    GO TOP
**     
    SELE T_23
    DO WHILE .NOT. EOF()  && II - poznach. cyclu  
     SELE T_23
     Db_kluch = Alltrim(UPPER(Tblname))
     DO WHILE .NOT. EOF() .AND. (Db_kluch = Alltrim(UPPER(Tblname)))            
      SELE T_23
      Nm_f = ALLTRIM(UPPER(Caption))
      Db_f = Alltrim(UPPER(Tblname))+Nm_f
         
**    .    23                    
      IF ATC('Cryption=1', STRTRAN(Values, " ", "")) != 0
**  .            
**   Dbsettings                 
       SELE T_24
       SEEK Db_f
**    .   24                     
       IF .NOT. EOF() .AND. (ATC('Cryption=1', STRTRAN(Values, " ", "")) != 0)
**              
       ELSE
   	    This.Lresult = .F.
		cM_s ="*         "
       ENDIF
*                 
      ENDIF
      SELE T_23
      SKIP 
     ENDDO            
*  
     IF This.Lresult  
      Eof_sel23='1'
      IF .NOT. EOF()
       Eof_sel23='0'
       Nz_seL23=RECNO()
      ENDIF 
**   24         
**
      SELE T_24
      SET EXACT OFF
      SEEK Db_kluch 
      SET EXACT ON
*
      DO WHILE .NOT. EOF() .AND. (Db_kluch = Alltrim(UPPER(Tblname)))            
       SELE T_24
       Nm_f = ALLTRIM(UPPER(Caption))
       Db_f = Alltrim(UPPER(Tblname))+Nm_f

**    .   24                    
       IF ATC('Cryption=1', STRTRAN(Values, " ", "")) != 0
**  .            
**   Dbsettings                 
        SELE T_23
        SEEK Db_f
**       23                     
        IF .NOT. EOF() .AND. (ATC('Cryption=1', STRTRAN(Values, " ", "")) != 0)
**  .            
        ELSE
          This.Lresult = .F.
		  cM_s ="*         "
        ENDIF
       ENDIF
       SELE T_24
       SKIP 
      ENDDO            
*
      IF Eof_sel23='0'
       SELE T_23
       GO Nz_seL23
      ENDIF 
     ENDIF
*            
    ENDDO      && II
** Dbsettings  ,    . 
** -31.01.08
    SELE T_23
    USE
** -
    IF .NOT. This.Lresult  
** !  
	 this.writeString( 'Error = '+cM_s, '')   
** !
   	 This.RepMes(cM_s, This.Lresult, .T.)
    ENDIF
** #07.05.09  
      ENDIF  && IIII
** #
  ENDIF  && III
** /
       
  CATCH TO er
	This.Lresult = .F.
	cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
	cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
** !  
	this.writeString( 'Error = '+cM_s, '')   
** !
	This.RepMes(cM_s, This.Lresult, .T.)
    IF Pr_i_ds = '0'
	 cM_s="* ³      : Info.txt  Info.dbf"
    ELSE
** +21.07.09
    IF (P_u_ds = '1')
     IF (ALLTRIM(STR(er.errorno))='3') .OR. (ALLTRIM(STR(er.errorno))='1705')
      cM_s="*     .      .         ."
     ELSE
      cM_s="*     .        : DbSettings.dbf  Db2Settings.dbf. ³     ."
     ENDIF
    ELSE 
** + 
	cM_s="* ³     : DbSettings.dbf  Db2Settings.dbf"
   ENDIF
  ENDIF
** !  
	This.writeString(cM_s, '') 
** !
	This.RepMes(cM_s, This.Lresult, .T.)
	FINALLY
	ENDTRY
 ENDPROC
*
 PROCEDURE UpdateDataBase
	LOCAL cFull_TN,Del_FN, Upd_FN, Ins_FN, Chn_FN, KL_temp1, R_txf, R_Fpdf
 	cM_s = ""
   	X_BazaD= This.DbPath+"Edb"
	This.CheckVersion()
** ? 18.05.10  Rezerv. BD
		IF This.Lresult
          This.RezervBD()
        ENDIF
** ?
** + 04.11.10  Structur. BD
		IF This.Lresult
          This.UP_FI()
        ENDIF
** +
	IF This.Lresult
*!*	   Docs   Txf -15.10.07 
*!*	      
	FOR EACH cTableList IN This.TablesList
		Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
		FOR i = 2 TO GETWORDCOUNT(cTableList,",")
		Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
		cKey_FN = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),2,":"))
        SET EXACT ON
        IF Ct_Na = 'docs'
   		 cFull_TN = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'"'
	 	 Del_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Del_'+Ct_Na+'"'
		 Upd_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Upd_'+Ct_Na+'"'
		 Ins_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Ins_'+Ct_Na+'"'
		 Chn_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Chn_'+Ct_Na+'"'

 	  	 USE &cFull_TN Alias &Ct_Na In 0 Exclusive
         SELE &Ct_Na
		    Dba1 =ADDBS(This.UpdPath)+'Dba25'
*
		    IF FILE("&Dba1..idx")
		     ERASE "&Dba1..idx"
		    ENDIF
*
            SELE &Ct_Na
		    INDEX ON &cKey_FN. TO "&Dba1."  COMPACT
		    SET INDEX TO  "&Dba1..idx"                 
		    GO TOP
*
         IF Field_yes('txf') .AND. Field_yes('fpdf')
*
		    USE &Upd_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Txf_Fpdf
**
            SELE T_25
            USE
*
		    USE &Ins_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Txf_Fpdf
**
            SELE T_25
            USE
*
		    USE &Chn_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Txf_Fpdf
**
            SELE T_25
            USE
         ENDIF
*
**  nnn - 16.11.2010 -  Flag...1,2,3  i  nzam
         SELE &Ct_Na
         GO Top
*
         IF Field_yes('flag1') .AND. Field_yes('flag2') .AND. Field_yes('flag3') .AND. Field_yes('nzam')
*
		    USE &Upd_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Flag123_nzam
**
            SELE T_25
            USE
*
		    USE &Ins_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Flag123_nzam
**
            SELE T_25
            USE
*
		    USE &Chn_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   16.11.2010
            DO Flag123_nzam
**
            SELE T_25
            USE
          ENDIF
** nnn -
** ddd - 17.11.2010 - ddd Vstanovlennia Flag4
			Path_dbflag4 = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Dbflag4'+'"'
	 	  	USE &Path_dbflag4 Alias T_dbflag4 In 0 Exclusive
            SET ORDER TO TAG IFF
            Go Top
*
            SELE &Ct_Na
            GO Top
          IF Field_yes('flag4') .and. (cKey_FN='iff')
            SELE &Ct_Na
            REPLACE flag4 WITH .NULL.  ALL  && Ochystka flag4 pered onovlennim
** Vstaovlennia flag4 v tablyciah onovlennia
*
		    USE &Upd_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
            DO Flag4_act
**
            SELE T_25
            USE
*
		    USE &Ins_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
            DO Flag4_act
**
            SELE T_25
            USE
*
		    USE &Chn_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
            DO Flag4_act
**
            SELE T_25
            USE
*
** Vstaovlennia flag4 v DOCS
            SELECT T_dbflag4
            GO Top
            DO WHILE .NOT. EOF() 
               KL_temp1 = &cKey_FN.
               SELE &Ct_Na
               SEEK KL_temp1
               IF .NOT. EOF()
                REPLACE flag4 WITH '33'
               ENDIF
               SELECT T_dbflag4
               SKIP
            ENDDO
          ENDIF
** ddd -
            SELE &Ct_Na
            USE
            SELECT T_dbflag4
            USE
        Endif
        SET EXACT OFF

		 ENDFOR
      ENDFOR
*!*	-
			TRY
				BEGIN TRANSACTION
				OPEN DATABASE (This.DbPath+"Edb") EXCLUSIVE 
				FOR EACH cTableList IN This.TablesList
					Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
					FOR i = 2 TO GETWORDCOUNT(cTableList,",")
						Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
						cKey_FN = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),2,":"))
						this.UpdateTable(Ct_Pa, Ct_Na, cKey_FN)
					ENDFOR
				ENDFOR
** /
	       UPDATE InfoTable SET crntupdate = This.ZipFileName, comment = This.R_comment
** /			
** -31.01.08
           SELE InfoTable
           USE
** -
			CATCH TO er
			 This.Lresult = .F.
			 cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
			 cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
** !  
    		this.writeString('Error = '+cM_s, '')  
    		this.writeString('*     : '+Ct_Pa+Ct_Na+' -   : '+cKey_FN, '')  
** !
			 This.RepMes(cM_s, This.Lresult, .T.)
			FINALLY
			IF This.Lresult
 			 END TRANSACTION
			 cM_s="*    ϲ     - "+This.ZipFileName+".zip"
** !  
			this.writeString(cM_s, '')
** !
			This.RepMes(cM_s, This.Lresult, .F.)		
            =INKEY(5)
** .03.12.07     
                m.ProtUpd = This.ZipFileName
                m.ProtUpd = STRTRAN(m.ProtUpd, 'IF', 'ProtUpd') 
                x_ProtUpd = ADDBS(This.UpdPath) + m.ProtUpd + ".txt"   &&   
                x_ProtUpdDb = ADDBS(This.DbPath) + m.ProtUpd + ".txt"  &&    
* 
		        IF FILE("&x_ProtUpd")  &&   
                 COPY  FILE  "&x_ProtUpd"  TO  "&x_ProtUpdDb"		

 				 cM_s="* ˲ ̲  ̲  - "+x_ProtUpdDb
   			     this.writeString(cM_s, '')
				 This.RepMes(cM_s, This.Lresult, .F.)		
** -31.01.08 
 				 cM_s="*  ˲ ̲    ֲ     () "
   			     this.writeString(cM_s, '')
				 This.RepMes(cM_s, This.Lresult, .F.)		
** -
** #08.05.09  
                 wer_LI = FILETOSTR('&x_ProtUpd.')
                 wer_defis = ATC('-', wer_LI, 1)
                 IF (wer_defis != 0) .AND. (wer_defis < 20)   &&    
                   wer_LI = SUBSTR(wer_LI,1,wer_defis-1)
 				   cM_s='*  Ѳ "-" - '+TRIM(wer_LI)+'.       - ˲ !!!'
   			       this.writeString(cM_s, '')
				   This.RepMes(cM_s, This.Lresult, .F.)		
                 ENDIF
** #
                 =INKEY(5)
                ENDIF
** .
				ELSE
					ROLLBACK
				ENDIF
			ENDTRY
		ENDIF
** ~        
		IF This.Lresult
** ~        
		cM_s="*    - "+ X_BazaD+".dbc"
** !  
		this.writeString(cM_s)
** !
		This.RepMes(cM_s, .F., .F.)
		this.PackTales()
*
		cM_s="*   Ѳ  - "+ X_BazaD+".dbc"
** !  
		this.writeString(cM_s)
** !
		This.RepMes(cM_s, .F., .F.)
		this.DeletInd()
** \03.03.08  Dbsettings
        Up_P_ds_LV = ADDBS(This.UpdPath)+'Dbsettings.dbf'
        Db_P_ds_LV = ADDBS(This.DbPath)+'Dbsettings.dbf'
        Up_P_ds_fpt = ADDBS(This.UpdPath)+'Dbsettings.fpt'
        Db_P_ds_fpt = ADDBS(This.DbPath)+'Dbsettings.fpt'
** \
** +- 10.11.2010  -+
        Up_P_ds_LV2 = ADDBS(This.UpdPath)+'Db2settings.dbf'
        Db_P_ds_LVc2 = ADDBS(This.DbPath)+'CDb2settings.dbf'
        Up_P_ds_fpt2 = ADDBS(This.UpdPath)+'Db2settings.fpt'
        Db_P_ds_fptc2 = ADDBS(This.DbPath)+'CDb2settings.fpt'
** +-
** -31.01.08
        SELE T_24
        USE
** -
** +- 10.11.2010 -+
        IF (Je_db2sett = '1') .AND. (Je_dbsett = '1')
          SELE T_24_old
          USE
        ENDIF
** +-
** \03.03.08   Dbsettings
        IF FILE(Up_P_ds_LV) .AND. FILE(Up_P_ds_fpt)
          COPY  FILE  "&Up_P_ds_LV"  TO  "&Db_P_ds_LV"		
          COPY  FILE  "&Up_P_ds_fpt"  TO  "&Db_P_ds_fpt"
        ENDIF  		
** \
** 10.02.09  Userssettings.xml 
        Up_P_ds_xml = ADDBS(This.UpdPath)+'Userssettings.xml'
        Db_P_ds_xml = ADDBS(This.DbPath)+'Userssettings\Userssettings.xml'
        COPY  FILE  "&Up_P_ds_xml"  TO  "&Db_P_ds_xml"		
** 
** +- 10.11.2010  -+
        IF FILE(Up_P_ds_LV2) .AND. FILE(Up_P_ds_fpt2)
          COPY  FILE  "&Up_P_ds_LV2"  TO  "&Db_P_ds_LVc2"		
          COPY  FILE  "&Up_P_ds_fpt2"  TO  "&Db_P_ds_fptc2"	
        ENDIF  	
** +-
** ~       
		ENDIF
** ~        
      CLOSE DATABASES  
	ENDPROC
** ?  ﳿ ,18.05.10
 PROCEDURE RezervBD  
  LOCAL Bd_oryg, Bd_dubl, Bd_dubl_Guide, Bd_dubl_usersSet, xx_Bd_oryg, xx_kudy, Bcrezult
* *    ., 
  Bd_oryg = This.Dbpath
  Xx_Bd_oryg = STRTRAN(Bd_oryg, '\\', '')
  Xx_Bd_oryg = STRTRAN(Xx_Bd_oryg, ':', '')
  Bd_dubl = This.Pathexe+"Updates\TempBd\"+Xx_Bd_oryg
  Bd_dubl_Guide = Bd_dubl+"Guide\"
  Bd_dubl_UsersSet = Bd_dubl+"UsersSettings\"
*
   TRY
*
	cM_s="* ²  Ͳ   - "+ X_BazaD+".dbc"
	this.writeString(cM_s)
	This.RepMes(cM_s, .F., .F.)
*
    OPEN DATABASE (This.DbPath+"Edb") EXCLUSIVE 
	FOR EACH cTableList IN This.TablesList
     Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
	  FOR i = 2 TO GETWORDCOUNT(cTableList,",")
		Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
        cFull_TN = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'"'
** +! 12.11.2010 +! 
        cFull_TN_DBF = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.dbf'+'"'
        IF FILE(cFull_TN_DBF) 
** +!
		USE &cFull_TN Alias &Ct_Na In 0 Exclusive		
		USE IN &Ct_Na	
** +! 12.11.2010 +! 
        ENDIF  
** +!
	  ENDFOR
	ENDFOR
		CATCH TO er
		    This.Lresult = .F.
			cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
			cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
    		this.writeString('Error = '+cM_s, '') 
			This.RepMes(cM_s, This.Lresult, .F.)
*
			FINALLY
			IF This.Lresult
			 cM_s="*  ϲ     " + X_BazaD+".dbc"
 		     this.writeString(cM_s)    
 			 This.RepMes(cM_s, .F., .F.)
             =INKEY(5)
			ELSE
			 cM_s="*       " + X_BazaD+".dbc"+ "     ."
  		     this.writeString(cM_s, '')     
			 This.RepMes(cM_s, This.Lresult, .F.)
             =INKEY(5)
			 cM_s="* ²²   " + X_BazaD+".dbc"
             IF DIRECTORY(Bd_dubl)
			   cM_s=cM_s+"  Ͳ   : "+Bd_dubl
             ENDIF
   		       this.writeString(cM_s, '')     
			   This.RepMes(cM_s, This.Lresult, .F.)
               cM_s="*  в   ! " 
    		   this.writeString(cM_s, '')     
			   This.RepMes(cM_s, This.Lresult, .F.)
               =INKEY(5)
			  ENDIF
			ENDTRY
* * COPY    
  Bcrezult = .T.
  IF This.Lresult 
    IF !DIRECTORY(Bd_dubl)
       MD(Bd_dubl)
    ENDIF
    IF !DIRECTORY(Bd_dubl_Guide)
       MD(Bd_dubl_Guide)
    ENDIF
    IF !DIRECTORY(Bd_dubl_UsersSet)
       MD(Bd_dubl_UsersSet)
    ENDIF
* * ---+ 02.12.2010 +---        
    Bucva_Drive = UPPER(JUSTDRIVE(Bd_dubl))
    Vilno_Drive = DISKSPACE(Bucva_Drive, 2)
    IF Vilno_Drive >= 500000000     && povynno buty vilno >= 500 Mb
* * ---+ 02.12.2010 +---
*
	TRY
*
	FOR EACH cTableList IN This.TablesList
    Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
	  FOR i = 2 TO GETWORDCOUNT(cTableList,",")
		Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
        cFull_TN = ADDBS(This.DbPAth + Ct_Pa) + Ct_Na+'.*'
** +! 12.11.2010 +! 
        cFull_TN_DBF = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.dbf'+'"'
        IF FILE(cFull_TN_DBF) 
** +!
*
         IF ATC('GUIDE',cFull_TN) # 0
           xx_kudy = Bd_dubl_Guide + Ct_Na+'.*'
           COPY  FILE  "&cFull_TN"  TO  "&xx_kudy"		
         ELSE
           xx_kudy = Bd_dubl + Ct_Na+'.*'
           COPY  FILE  "&cFull_TN"  TO  "&xx_kudy"		
         ENDIF
*
** +! 12.11.2010 +! 
        ENDIF  
** +!
	  ENDFOR
	ENDFOR
    Up_P_ds_LV = ADDBS(This.UpdPath)+'Dbsettings.dbf'
    Up_P_ds_fpt = ADDBS(This.UpdPath)+'Dbsettings.fpt'
    Db_P_ds_LV = Bd_dubl + 'Dbsettings.dbf'
    Db_P_ds_fpt = Bd_dubl + 'Dbsettings.fpt'
*
    IF FILE(Up_P_ds_LV) .AND. FILE(Up_P_ds_fpt)
      COPY  FILE  "&Up_P_ds_LV"  TO  "&Db_P_ds_LV"		
      COPY  FILE  "&Up_P_ds_fpt"  TO  "&Db_P_ds_fpt"		
    ENDIF
* 
    Up_P_ds_xml = ADDBS(This.DbPath)+'Userssettings\Userssettings.xml'
    Db_P_ds_xml = Bd_dubl_UsersSet + 'Userssettings.xml'
    COPY  FILE  "&Up_P_ds_xml"  TO  "&Db_P_ds_xml"		
*
** +- 10.11.2010  -+
    Up_P_ds_LV2 = ADDBS(This.UpdPath)+'Db2settings.dbf'
    Up_P_ds_fpt2 = ADDBS(This.UpdPath)+'Db2settings.fpt'
    Db_P_ds_LV2 = Bd_dubl + 'Db2settings.dbf'
    Db_P_ds_fpt2 = Bd_dubl + 'Db2settings.fpt'
*
    IF FILE(Up_P_ds_LV2) .AND. FILE(Up_P_ds_fpt2)
      COPY  FILE  "&Up_P_ds_LV2"  TO  "&Db_P_ds_LV2"		
      COPY  FILE  "&Up_P_ds_fpt2"  TO  "&Db_P_ds_fpt2"
    ENDIF  		
** +-
*
	CATCH TO er
		Bcrezult = .F.
		cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
		cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
   		this.writeString('Error = '+cM_s, '') 
		This.RepMes(cM_s, Bcrezult, .F.)
	FINALLY
		IF Bcrezult
 		   cM_s="*  ϲ    ֲ: " + Bd_dubl
	       this.writeString(cM_s, '')    
		   This.RepMes(cM_s, .T., .T.)
           =INKEY(5)
		ELSE
			cM_s="*    ϲͲ     " + Bd_dubl
 		    this.writeString(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            =INKEY(5)
			cM_s="*  Ͳ  ²²   " + X_BazaD+".dbc"
  		    this.writeString(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            cM_s="*  в   ! " 
    		this.writeString(cM_s, '')     
            =INKEY(5)
		ENDIF
	 ENDTRY
*
* * ---+ 02.12.2010 +---
     ELSE
 	   cM_s="*    ϲ  .   <&Bucva_Drive.> ² ̲ < 500 Mb" 
       this.writeString(cM_s, '')    
	   This.RepMes(cM_s, .T., .T.)
       =INKEY(5)
     ENDIF
* * ---+ 02.12.2010 +---
	ENDIF
ENDPROC
** ?
** + New ,01.11.10
*
 PROCEDURE Up_Fi  
  LOCAL Bd_oryg, Imia_F, Type_FA, Dovg_FA, DEC_FA, Type_old, Dovg_old, DEC_OLD, Upd_f, x_kp, x_i, Bcrezult
  Bd_oryg = This.Dbpath
**   New Structure
  Bcrezult = .T.
  IF This.Lresult 
*
	TRY
*
	cM_s="*     - "+ X_BazaD+".dbc"
	this.writeString(cM_s)
	This.RepMes(cM_s, .F., .F.)
*
	FOR EACH cTableList IN This.TablesList
	 Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
	 FOR i = 2 TO GETWORDCOUNT(cTableList,",")
	 Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
** +! 12.11.2010  +!
   	 cFull_TN_dbf = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.dbf'+'"'
     IF FILE(cFull_TN_dbf)
** +!
   	 cFull_TN = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'"'
	 Upd_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Upd_'+Ct_Na+'"'

 	 USE &cFull_TN Alias &Ct_Na In 0 Exclusive
     SELE &Ct_Na
*
   	 USE &Upd_FN Alias Upd_F In 0 Exclusive
     SELE Upd_F
         
**      EDB
     SELE Upd_F
     x_kp=FCOUNT()
     Dovg_FA = 0
     DEC_FA = 0
     DEC_OLD = 0
     Dovg_old = 0
     SET EXACT ON
     FOR   x_i =1 TO x_kp
       SELE Upd_F
       Imia_F=FIELD(x_i)
       Type_FA=TYPE(Imia_F)
**
       DO CASE
          CASE Type_FA='C' .OR. Type_FA='N' .OR. Type_FA='F' .OR. Type_FA='Q' .OR. Type_FA='V'     
              Dovg_FA = FSIZE(Imia_F)
              IF Type_FA='N' .OR. Type_FA='F'
                DEC_FA = Ret_drob(&Imia_F)
              ELSE
                DEC_FA = 0
              ENDIF
          OTHERWISE          
              Dovg_FA = 0
       ENDCASE  
*            
       SELE &Ct_Na
       IF .NOT. FIELD_YES(Imia_F)  && nema polia, potribno dobavyty
        DO CASE
          CASE Type_FA='W' .OR. Type_FA='Y' .OR. Type_FA='D' .OR. Type_FA='T' .OR. Type_FA='G' .OR. Type_FA='I' .OR. Type_FA='L' .OR. Type_FA='M'   
             ALTER TABLE '&Ct_Na' ADD  '&Imia_F' &Type_FA NULL
          CASE Type_FA='C' .OR. Type_FA='V'
             ALTER TABLE '&Ct_Na' ADD  '&Imia_F' &Type_FA (Dovg_FA) NULL     && NOCPTRANS
          CASE Type_FA='Q' 
             ALTER TABLE '&Ct_Na' ADD  '&Imia_F' &Type_FA (Dovg_FA) NULL 
          CASE Type_FA='N' .OR. Type_FA='F'
             ALTER TABLE '&Ct_Na' ADD  '&Imia_F' &Type_FA (Dovg_FA, DEC_FA) NULL
        ENDCASE  
       ELSE     && je pole, vykonaty zminy v storonu zbilshennia
         Type_old=TYPE(Imia_F)
         IF Type_FA = Type_old
*
	       DO CASE
	          CASE Type_old='C' .OR. Type_old='N' .OR. Type_old='F' .OR. Type_old='Q' .OR. Type_old='V'     
	              Dovg_old = FSIZE(Imia_F)
	              IF Type_old='N' .OR. Type_old='F'
	                DEC_OLD = Ret_drob(&Imia_F)
	              ELSE
	                DEC_OLD = 0
	              ENDIF
	          OTHERWISE          
	              Dovg_OLD = 0
	       ENDCASE  
** Vyznachennia umov zminy dovgyn poliv          
	        DO CASE
	          CASE Type_FA='C' .OR. Type_FA='V'
               IF (Dovg_FA > Dovg_old)
	             ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA (Dovg_FA) NULL  && NOCPTRANS
               ENDIF
	          CASE Type_FA='Q' 
               IF (Dovg_FA > Dovg_old)
	             ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA (Dovg_FA) NULL
               ENDIF
	          CASE Type_FA='N' .OR. Type_FA='F'
                 IF (Dovg_FA > Dovg_old) .and. (DEC_FA > DEC_old)
 	               ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA (Dovg_FA, DEC_FA)  NULL
                 ENDIF
                 IF (Dovg_FA > Dovg_old) .and. (DEC_FA <= DEC_old)
 	               ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA (Dovg_FA, DEC_old) NULL
                 ENDIF
                 IF (Dovg_FA <= Dovg_old) .and. (DEC_FA > DEC_old)
 	               ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA (Dovg_old, DEC_FA) NULL
                 ENDIF
	        ENDCASE  
*
         ELSE    && Type_FA='D', Type_old='M', Imia_F='dateofcorr' .or. 'dateofform', Ct_na = 'docs'  
           IF (Type_FA='D') .and. (Type_old='M') .and. ((LOWER(Imia_F)='dateofcorr') .or. (LOWER(Imia_F)='dateofform')) .and.(Ct_na = 'docs')
 	         ALTER TABLE '&Ct_Na' ALTER COLUMN  &Imia_F &Type_FA  NULL
           ENDIF
*
         ENDIF
       ENDIF
       ENDFOR
        USE IN &Ct_Na
        USE IN Upd_F
** +! 12.11.2010  +!
      ENDIF
** +!        
      ENDFOR    
     ENDFOR

	CATCH TO er
	    This.Lresult = .F.
		Bcrezult = .F.
		cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
		cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
   		this.writeString('Error = '+cM_s, '') 
		This.RepMes(cM_s, Bcrezult, .F.)
	FINALLY
		IF Bcrezult
 		   cM_s="*      ֲ: " + Bd_oryg
	       this.writeString(cM_s, '')    
		   This.RepMes(cM_s, .T., .T.)
           =INKEY(5)
		ELSE
			cM_s="*    Ͳ    ֲ " + Bd_oryg
 		    this.writeString(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            =INKEY(5)
			cM_s="*  Ͳ  ²²   ϲ  " + X_BazaD+".dbc"
  		    this.writeString(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            cM_s="*  в   ! " 
    		this.writeString(cM_s, '')     
            =INKEY(5)
		ENDIF
	 ENDTRY
*
       ERASE "&Bd_oryg.*.TBK"
       ERASE "&Bd_oryg.*.BAK"
*
	ENDIF
   SET EXACT OFF
ENDPROC
** +
** Pack
	PROCEDURE PackTales  
		IF This.Lresult
			PResult = .T.
			TRY
				FOR EACH cTableList IN This.TablesList
** -31.01.08 
                    Ct_Pa = STREXTRACT(ALLTRIM(GETWORDNUM(cTableList,1,",")),"{","}")
** -
					FOR i = 2 TO GETWORDCOUNT(cTableList,",")
						Ct_Na    = ALLTRIM(GETWORDNUM(ALLTRIM(GETWORDNUM(cTableList,i,",")),1,":"))
** +! 12.11.2010  +!
     	              cFull_TN_dbf = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.dbf'+'"'
                      IF FILE(cFull_TN_dbf)
** +!
** -31.01.08 
                        cFull_TN = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'"'
						USE &cFull_TN Alias &Ct_Na In 0 Exclusive		
** -
** #10.06.09  TAG "NAMEUA", "Caption"
                        cFullTableCDX = ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.CDX' 
                        SET EXACT ON
                        IF ('docs' = Ct_Na) 
                           IF FILE('&cFullTableCDX.')   && cdx je
                             Xz_NAMEUA = ""
                             Xz_CAPTION = ""
							 FOR ikj =1 TO Tagcount(cFullTableCDX)
                               cTag = TAG(ikj)
                               IF UPPER(cTag) = "NAMEUA" 
                                Xz_NAMEUA = cTag
                               ENDIF
                               IF UPPER(cTag) = "CAPTION" 
                                Xz_CAPTION = cTag
                               ENDIF
							 ENDFOR 
*
                             IF .NOT. EMPTY(Xz_NAMEUA)
                               DELETE TAG &Xz_NAMEUA
                             ENDIF
*
                             IF .NOT. EMPTY(Xz_CAPTION)
                               DELETE TAG &Xz_CAPTION
                             ENDIF
						  ENDIF
                        ENDIF
                        SET EXACT OFF
** #
						Pack
						USE IN &Ct_Na	
** +! 12.11.2010  +!
                     ENDIF
** +!        
					ENDFOR
				ENDFOR
			CATCH TO er
				PResult = .F.
				cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
				cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
** !  
    		this.writeString('Error = '+cM_s, '') 
** !
				This.RepMes(cM_s, Presult, .T.)
			FINALLY
				IF PResult
				 cM_s="*     " + X_BazaD+".dbc"
** !  
            	 this.writeString(cM_s, '')    
** !
				 This.RepMes(cM_s, This.Lresult, .T.)
                 =INKEY(5)
				ELSE
				 cM_s="*      " + X_BazaD+".dbc"
** !  
    		this.writeString(cM_s, '')     
** !
					This.RepMes(cM_s, Presult, .T.)
				ENDIF
			ENDTRY
		ENDIF
	ENDPROC
**     EDB   
	PROCEDURE DeletInd  
		IF This.Lresult
			PResult = .T.
			TRY
                nn=ADBOBJECTS(A_cont, 'TABLE')
                FOR ni=1 TO nn
                 IF ATC('cont_',A_cont(ni),1)=1
                  REMOVE TABLE A_cont(ni) DELETE
                 ENDIF
                ENDFOR 
			CATCH TO er
				PResult = .F.
				cM_s="* ERROR : "+STR(er.errorno)+" - "+er.message
				cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
** !  
    		this.writeString('Error = '+cM_s, '')
** !
				This.RepMes(cM_s, Presult, .T.)
			FINALLY
				IF PResult
					cM_s="*    Ѳ  " + X_BazaD+".dbc"
** !  
    		this.writeString(cM_s, '')
** !
					This.RepMes(cM_s, This.Lresult, .T.)
                    =INKEY(5)
				ELSE
					cM_s="*     Ѳ  " + X_BazaD+".dbc"
** !  
    		this.writeString(cM_s, '')     
** !
					This.RepMes(cM_s, Presult, .T.)
				ENDIF
			ENDTRY
		ENDIF
	ENDPROC
*
	PROCEDURE UpdateTable
	  LPARAMETERS Ct_Pa, Ct_Na, cKey_FN
	  LOCAL cFull_TN,Del_FN, Upd_FN, Ins_FN, Chn_FN
** +! 12.11.2010  +!
      cFull_TN_dbf = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'.dbf'+'"'
      IF FILE(cFull_TN_dbf)
** +!

		cFull_TN = '"'+ADDBS(This.DbPAth + Ct_Pa)+ Ct_Na+'"'
		Del_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Del_'+Ct_Na+'"'
		Upd_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Upd_'+Ct_Na+'"'
		Ins_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Ins_'+Ct_Na+'"'
		Chn_FN = '"'+ADDBS(This.UpdPath+Ct_Pa)+ 'Chn_'+Ct_Na+'"'
		
		USE &cFull_TN Alias &Ct_Na In 0 Exclusive		
** -31.01.08 
		USE &Del_FN Alias DelFileDel In 0 Exclusive		
		USE &Upd_FN Alias UpdFileUpd In 0 Exclusive		
		USE &Ins_FN Alias InsFileIns In 0 Exclusive		
		USE &Chn_FN Alias ChnFileChn In 0 Exclusive		
** -
		Delete From &Ct_Na Where &cKey_FN in (Select &cKey_FN From &Del_FN)
		Delete From &Ct_Na Where &cKey_FN in (Select &cKey_FN From &Upd_FN)
		Insert Into &Ct_Na Select * From &Upd_FN
		Delete From &Ct_Na Where &cKey_FN in (Select &cKey_FN From &Ins_FN)
		Insert Into &Ct_Na Select * From &Ins_FN
		Delete From &Ct_Na Where &cKey_FN in (Select &cKey_FN From &Chn_FN)
		Insert Into &Ct_Na Select * From &Chn_FN
** -31.01.08 
        USE In &Ct_Na 
		USE IN DelFileDel    	
		USE IN UpdFileUpd    	
		USE IN InsFileIns    	
		USE IN ChnFileChn    	
** -
** +! 12.11.2010  +!
       ENDIF
** +!

	ENDPROC

	PROCEDURE RepMes
		LPARAMETERS cText, Lresult, IsUpdate
		SET DATASESSION TO (this.oldDataSession)
		IF USED('ProcessStatus')
			IF !IsUpdate
				APPEND BLANK IN ProcessStatus
			ENDIF
			GO BOTTOM IN ProcessStatus
			REPLACE Lstatus WITH Lresult, cCaption WITH cText IN ProcessStatus
            SELECT ProcessStatus
			IF TYPE("_screen.ActiveForm.Pageframe1.Page2.Grid1")="O"
				_screen.ActiveForm.Refresh
				_screen.ActiveForm.Pageframe1.Page2.Grid1.Refresh 
				DOEVENTS
			ENDIF 
			
		ENDIF
		SET DATASESSION TO (This.CurDataSession)
     ENDPROC
ENDDEFINE


PROCEDURE GetValstring
	LPARAMETERS cFrom, cVal
	RETURN ALLTRIM(STRTRAN(STREXTRACT(STRTRAN(cFrom,";;",CHR(3)),UPPER(cVal)+" =",";",1,1),CHR(3),";"))
ENDPROC

** -18/10/07    
PROCEDURE Field_yes
PARAMETERS Naim_fi
PRIVATE x_kp, x_i  
 x_kp=FCOUNT()
 FOR   x_i =1 TO x_kp
  IF LOWER(ALLTRIM(naim_fi))=LOWER(ALLTRIM(FIELD(x_i)))
   RETURN .T.
  ENDIF
 ENDFOR    
RETURN .F.
*
** Vid Sergija
FUNC Ret_drob &&      
PARA chislo &&         
*-  --------- 
* ? ret_drob(1.000) 
*------------------------- 
IF Type('m.chislo')#'N' .AND. Type('m.chislo')#'F'
 chislo=0 
Endif 
Priv d_chislo,p_chislo 
d_chislo=ALLTRIM(PADC(m.chislo,30)) 
p_chislo=AT(SET('Point'),m.d_chislo) 
Return IIF(m.p_chislo=0,0,Len(m.d_chislo)-m.p_chislo)
*
**   16.11.2010 
PROCEDURE Txf_Fpdf
 DO WHILE .NOT. EOF()
  KL_temp1 = &cKey_FN.
*!*	 -29.11.07   FPDF  
      R_FPDF = FPDF
      IF .NOT. ISNULL(R_FPDF) .AND. EMPTY(R_FPDF)
       R_FPDF = .NULL.
      ENDIF              
*!*	 -
      SELE &Ct_Na
      R_txf = 0 
      SEEK KL_temp1
      IF .NOT. EOF()
        R_txf = txf
*!*	-29.11.07    FPDF  
       IF .NOT. ISNULL(FPDF) .AND. .NOT. EMPTY(FPDF)
        R_FPDF = FPDF
       ENDIF              
*!*	-
      ENDIF
      SELE T_25
      REPLACE txf WITH R_txf, fpdf WITH R_FPDF
      SKIP
  ENDDO
RETURN
**
PROCEDURE Flag123_nzam
 DO WHILE .NOT. EOF()
  KL_temp1 = &cKey_FN.
*!*	 -16.11.10  i  
      R_flag1 = flag1
      R_flag2 = flag2
      R_flag3 = flag3
*
      IF .NOT. ISNULL(R_flag1) .AND. EMPTY(R_flag1)
       R_flag1 = .NULL.
      ENDIF              
      IF .NOT. ISNULL(R_flag2) .AND. EMPTY(R_flag2)
       R_flag2 = .NULL.
      ENDIF              
      IF .NOT. ISNULL(R_flag3) .AND. EMPTY(R_flag3)
       R_flag3 = .NULL.
      ENDIF              
*!*	 -
      SELE &Ct_Na
      R_nzam = '  ' 
      SEEK KL_temp1
      IF .NOT. EOF()
        R_nzam = nzam
*!*	-16.11.10     
       IF .NOT. ISNULL(R_flag1) .AND. .NOT. EMPTY(R_flag1)
        R_flag1 = flag1
       ENDIF              
       IF .NOT. ISNULL(R_flag2) .AND. .NOT. EMPTY(R_flag2)
        R_flag2 = flag2
       ENDIF              
       IF .NOT. ISNULL(R_flag3) .AND. .NOT. EMPTY(R_flag3)
        R_flag3 = flag3
       ENDIF              
*!*	-
      ENDIF
      SELE T_25
      REPLACE Flag1 WITH R_flag1, Flag2 WITH R_flag2, Flag3 WITH R_flag3, Nzam WITH R_nzam
      SKIP
  ENDDO
RETURN
**
PROCEDURE Flag4_act
 DO WHILE .NOT. EOF()
  KL_temp1 = &cKey_FN.
      SELE T_dbflag4
      R_Flag4 = .NULL. 
      SEEK KL_temp1
      IF .NOT. EOF()
        R_Flag4 = '33'
      ENDIF
      SELE T_25
      REPLACE Flag4 WITH R_flag4
      SKIP
  ENDDO
RETURN
*
