PARAMETERS BazaD
ON ERROR
LOCAL er AS Exception
PUBLIC cLV_Param AS Character, cLV_filePath AS Character 
cLV_filePath =""
cLV_param = TYPE("Lv_UpdIntern")
IF cLV_param = 'U'
  Lv_UpdIntern = .F.
ENDIF
OldSel = SELECT()
SET ESCAPE OFF
oUpdSe = CREATEOBJECT("UpdSe",BazaD)
oUpdSe.oldDataSession  = SET("Datasession")
oUpdSe.ZipFileName = "IF_6572_2026_04_20260505141524"
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.logFileName_all=CHR(34)+oUpdSe.PathExe+"Update_all.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")
oUpdSe.TablesList.Add("{Guide},StatusND:code,LanguageCode:code,KND:id,lncountries:alfa2,ORGANR:iff,Status:id,LogVal:id,Prefics:pref,Kst:kst,Ds:ds,typeaz:typeaz,groups:id_docs,fdiblank:id,typeed:ed,typeaccess:access")
oUpdSe.UpdateDataBase()
res =oUpdSe.Lresult
RELEASE oUpdSe
SELECT (OldSel)
SET ESCAPE ON
ON ERRO do infoerro with erro(),prog(),line(1)
RETURN res
*
DEFINE CLASS UpdSe as Session
** VB

    logFileName_all = ""

	logFileName = ""
	DBID = ""
	oldDataSession = 0
	CurDataSession = 0
	Lresult = .T.
	DbSeFiNa = ""
	DbPath  = ""
	ZipFileName = ""
	UpdPath = ""
	TablesList = .Null.
** /
    R_comment = "" 
    PathExe = ""
    NameBD = ""
** VB
   	oLogFile = .NULL.
	oUpdateLog = .NULL.
** VL 01.02.2018
    oLogFile_all = .NULL.
    oUpdateLog_all = .NULL.
** /
 PROCEDURE destroy
  this.save("Update.log", "Update_all.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
** LV - 01.02.2018
 PROCEDURE openFile_all
  LPARAMETERS cFileName
  cDbID = this.dbID
  cUpdateID = JUSTSTEM(this.ZipFileName)
  oLogFile_all = CREATEOBJECT("Microsoft.XMLDOM")
  oLogFile_all.async = .F.
  IF FILE(FULLPATH(cFileName))
   oLogFile_all.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_all.loadXML(cXML)
  ENDIF
  This.oLogFile_all = oLogFile_all
  oLog = oLogFile_all.selectSingleNode("Updates/log")
  IF ISNULL(oLog)
   ERROR(" Update_all.log .")
  ELSE
  oBase = oLog.selectSingleNode('Base[@ID = "'+cDbID+'"]')
  IF ISNULL(oBase)
   oBase = oLogFile_all.createElement("Base")
   oBase.setAttribute("ID",cDbID)
   oLog.appendChild(oBase)
  ENDIF
  oUpdateLog_all = oBase.selectSingleNode('Update[@ID = "'+cUpdateID+'"]')
  IF ISNULL(oUpdateLog_all)
	oUpdateLog_all  = oLogFile_all.createElement("Update")
	oUpdateLog_all .setAttribute("ID",cUpdateID)
	oBase.appendChild(oUpdateLog_all )
  ENDIF
  this.oUpdateLog_all = oUpdateLog_all
 ENDIF
ENDPROC
*
PROCEDURE WriteString_all
 LPARAMETERS cOperation, cResult
 IF !ISNULL(This.oLogFile_all) AND !ISNULL(this.oUpdateLog_all)
	oOperation  = This.oLogFile_all.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_all.appendChild(oOperation)
 ENDIF 
ENDPROC
** --- LV	
PROCEDURE save()
 LPARAMETERS cFileName, cFilename_all
 This.oLogFile.Save(cFileName)
 This.oLogFile_all.Save(cFileName_all)
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  .              
**   
** $$ 19.05.2011 +---        Informs.exe 
    Bucva_Drive = UPPER(JUSTDRIVE(This.UpdPath))
    Vilno_Drive = DISKSPACE(Bucva_Drive, 2)
    IF Vilno_Drive >= 1000000000     && povynno buty vilno >= 1 
** $$ 
	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))
** \\   26.07.2021
    cLV_filePath = '"'+ALLTRIM(UPPER(InfoTable.filepath))+'"' 
** \\
** !
	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)

     oUpdSe.OpenFile_all(oUpdSe.logFileName_all)
** !
     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.
** * 18.07.2019  L.V.
        x_prevUpd=m.nsyst+'_'+m.nzam+'_'+'RR'+'_'+'12...zip ,  RR='
	    cM_s ="*     : "
        cM_s = cM_s + x_prevUpd
        IF  m.kipc='12'
         x_prevUpd_RR = STR(Int(VAL(m.kyear)+1),4)
         n_xRr = Int(VAL(m.nyear)-VAL(m.kyear)-2) 
        ELSE
         x_prevUpd_RR = STR(Int(VAL(m.kyear)),4)
         n_xRr = Int(VAL(m.nyear)-VAL(m.kyear)-1) 
        ENDIF
        FOR i = 1 TO n_xRr
         IF  m.kipc='12'
           x_prevUpd_RR =x_prevUpd_RR + ", " + STR(Int(VAL(m.kyear)+1+i),4)
         ELSE  
           x_prevUpd_RR =x_prevUpd_RR + ", " + STR(Int(VAL(m.kyear)+i),4)
         ENDIF
        ENDFOR    
          x_prevUpd_RR =x_prevUpd_RR + ". " + "    www.leonorm.com.ua/p/ukr/sinform.htm#UBDZ"+;
          "    <  >"
        cM_s = cM_s + x_prevUpd_RR
** *
*!*		    cM_s ="*         "
*!*	        cM_s = cM_s + "  - "+x_prevUpd
       ENDIF
      ENDIF
     ELSE
	  This.Lresult = .F.
	  cM_s ="*       - "+This.ZipFileName+".zip"
     ENDIF
	ELSE
	 This.Lresult = .F.
** 03.12.2019 - utochnennia
     IF .NOT. EMPTY(x_crntupd)
	   cM_s ="*       - "+This.ZipFileName+".zip"
     ELSE 
	   cM_s ="*         ,    ˲. "
     EndIf
**      
	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)

    oUpdSe.OpenFile_all(oUpdSe.logFileName_all)
** !  
    This.WriteString('! '+cM_s, '')     

  	This.WriteString_all('! '+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
** 31.01.2018 perestavleno z pochatku 
     This.WriteString('*    - '+This.NameBD, '')     

     This.WriteString_all('*    - '+This.NameBD, '')     
*
** 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.
		      SELE T_23
		      USE
*
** - %18.12.2013
              IF (cLV_Param = 'U') .OR. ((cLV_Param != 'U') .AND. (.NOT. Lv_UpdIntern))
			    cM_s ="*     ,    - . "
                cM_s = cM_s + "    !"   
			    this.writeString( '! '+cM_s, '')   

			    this.writeString_all( '! '+cM_s, '')   
*
    			This.RepMes(cM_s, This.Lresult, .T.)
**  04.04.2017  -          
               ELSE    
			    cM_s ="*    ,    - . "
                cM_s = cM_s + "  -     !"   
    			This.RepMes(cM_s, This.Lresult, .T.)
             ENDIF
** - %

            CASE (Typ_cr_24='0') .AND. (Typ_cr_23='1')
		      This.Lresult = .F.
		      SELE T_23
		      USE
*
** - %18.12.2013
              IF (cLV_Param = 'U') .OR. ((cLV_Param != 'U') .AND. (.NOT. Lv_UpdIntern))
			    cM_s ="*     ,    - . "
                cM_s = cM_s + "    !"   
			    This.writeString( '! '+cM_s, '')   

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

      this.writeString_all( 'Error = '+cM_s, '')   
   	  This.RepMes(cM_s, This.Lresult, .T.)
*
    ENDIF
   IF This.Lresult       && IIII
** #+ 20.02.2019 -   Db2Settings   
   SELE T_24
   Go TOP  
   Db_p_Values = Values
   SELE T_23
   Go Top
   REPLACE Values with Db_p_Values
** #+
** #
    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   
     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
*            
** 25.11.2019 - -   SELECT -  
     SELECT T_23
**            
    ENDDO      && II
** Dbsettings  ,  . 
** -31.01.08
    SELE T_23
    USE
** -
    IF .NOT. This.Lresult  
** !  
	 this.writeString( 'Error = '+cM_s, '')   

	  this.writeString_all( 'Error = '+cM_s, '')   
** !
   	 This.RepMes(cM_s, This.Lresult, .T.)
    ENDIF
** #07.05.09  
      ENDIF  && IIII
** #
  ENDIF  && III
** /
       
  CATCH TO er
	This.Lresult = .F.
*** 09.01.2020 
    oUpdSe.OpenFile(oUpdSe.logFileName)
    oUpdSe.OpenFile_all(oUpdSe.logFileName_all)
***
	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_all( '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.writeString_all(cM_s, '') 
** !
	This.RepMes(cM_s, This.Lresult, .T.)
	FINALLY
	ENDTRY
** $$ 19.05.2011 
     ELSE
       This.Lresult = .F.
       oUpdSe.OpenFile(oUpdSe.logFileName)

       oUpdSe.OpenFile_all(oUpdSe.logFileName_all)
**
 	   cM_s="*    ,     <&Bucva_Drive.>  ² ̲ - ղ >= 1 " 
       this.writeString(cM_s, '')    

       this.writeString_all(cM_s, '')    
	   This.RepMes(cM_s, .T., .T.)
       =INKEY(5)
     ENDIF
** $$
 ENDPROC
**
 PROCEDURE UpdateDataBase
	LOCAL cFull_TN,Del_FN, Upd_FN, Ins_FN, Chn_FN, KL_temp1, R_txf, R_Fpdf, KL_temp2, KL_temp3
 	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')    &&  .AND. (This.DbId != '6571').AND. (This.DbId != '6572')   && 18.05.2021 - comentovano  
   		 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') .AND. (This.DbId != '6571').AND. (This.DbId != '6572')  && 18.05.2021 - dodano 6571, 6572
*
		    USE &Upd_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = cKey_FN
            DO Txf_Fpdf WITH Kl_temp1
**
            SELE T_25
            USE
*
		    USE &Ins_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = cKey_FN
            DO Txf_Fpdf WITH Kl_temp1
**
            SELE T_25
            USE
*
		    USE &Chn_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = cKey_FN
            DO Txf_Fpdf WITH Kl_temp1
**
            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
** 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 = Trim(&cKey_FN.)   &&  TRIM 18.05.2021
               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
*
** !!!  13.03.2015 - obrobka v Docs_az fields txf, fpdf
*
        IF (Ct_Na = 'docs_az') .AND. (This.DbId != '6571') .AND. (This.DbId != '6572')     && 16.09.2021  
   		 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
*
         IF Field_yes('txf') .AND. Field_yes('fpdf')
		    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
*
		    USE &Upd_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = cKey_FN
            DO Txf_Fpdf WITH Kl_temp1
**
            SELE T_25
            USE
*
** dlia  Ins_, Chn_
            SELE &Ct_Na
            CLOSE INDEXES 
*
		    IF FILE("&Dba1..idx")
		     ERASE "&Dba1..idx"
		    ENDIF
*
            SELE &Ct_Na
		    INDEX ON LEFT(IFF,80)+LEFT(az,20) TO "&Dba1."  COMPACT    && 12.05.2017  
		    SET INDEX TO  "&Dba1..idx"                 
		    GO TOP
*
		    USE &Ins_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = "LEFT(IFF,80)+LEFT(az,20)"    && 12.05.2017 
            DO Txf_Fpdf WITH Kl_temp1
**
            SELE T_25
            USE
*
		    USE &Chn_FN. Alias T_25 In 0 Exclusive
		    SELE T_25
		    GO TOP
**   13.03.2015
            KL_temp1 = "LEFT(IFF,80)+LEFT(az,20)"    && 12.05.2017 
            DO Txf_Fpdf WITH Kl_temp1
            SELE T_25
            USE
         ENDIF
*
            SELE &Ct_Na
            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,",")),"{","}")
					This.RepMes("*ު ֲ... "+Ct_Pa, .f., .f.)
					For i = 2 To Getwordcount(cTableList,",")
						Ct_Na    = Alltrim(Getwordnum(Alltrim(Getwordnum(cTableList,i,",")),1,":"))
						cKey_FN = Alltrim(Getwordnum(Alltrim(Getwordnum(cTableList,i,",")),2,":"))
						*<S>
						This.RepMes(": "+Ct_Na, .f., .f.)
						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
** 17.09.2021 -   , ,   RezervBD()
			 LOCAL Bd_oryg, Xx_Bd_oryg, Bd_dubl 
* *     
             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
** 17.09.2021 -------------
			 This.Lresult = .F.
			 cM_s="ERROR : "+STR(er.errorno)+" - "+er.message
			 cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
** !  
    		this.writeString(cM_s, '')  
    		this.writeString_all(cM_s, '')  
   		    This.RepMes(cM_s, This.Lresult, .F.)
*
            cM_s13='*     : '+Ct_Pa+'\'+Ct_Na+' -   : '+cKey_FN
            cM_s13=cM_s13+'. '+'     ².'
    		this.writeString(cM_s13, '')  
    		this.writeString_all(cM_s13, '')  
** !
			 This.RepMes(cM_s13, This.Lresult, .F.)
*
			 cM_s="*   в   ,   ,     "
   		       this.writeString(cM_s, ' !!!')     
   		       this.writeString_all(cM_s, ' !!!')     
			   This.RepMes(cM_s, This.Lresult, .F.)
	           IF DIRECTORY(Bd_dubl) .AND. (Alltrim(STR(er.errorno)) != '114')
				 cM_s="*      : "+Bd_dubl
    		     this.writeString(cM_s, ' !!!')     

    		     this.writeString_all(cM_s, ' !!!')     
			     This.RepMes(cM_s, This.Lresult, .F.)
			   ENDIF
               cM_s="*  в   ! " 
    		   this.writeString(cM_s, ' !!!')     

    		   this.writeString_all(cM_s, ' !!!')     
			   This.RepMes(cM_s, This.Lresult, .F.)
*
			FINALLY
			IF This.Lresult
 			 *END TRANSACTION
			 cM_s="*    ϲ     - "+This.ZipFileName+".zip"
** !  
			this.writeString(cM_s, '')

			 this.writeString_all(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.writeString_all(cM_s, '')
				 This.RepMes(cM_s, This.Lresult, .F.)		
** -31.01.08 
 				 cM_s="*           Ͳ ϲ   () "
   			     this.writeString(cM_s, ' !')

   			     this.writeString_all(cM_s, ' !')
				 This.RepMes(cM_s, This.Lresult, .F.)		
** #08.05.09  
                 wer_LI = FILETOSTR('&x_ProtUpd.')
*!*	                 wer_defis = ATC('-', wer_LI, 1)
                 wer_defis = ATC(Chr(13)+Chr(10), wer_LI, 1)
*!*	                 IF (wer_defis != 0) .AND. (wer_defis < 20)   &&   
                 IF (wer_defis != 0) .AND. (wer_defis < 80)   &&   
                   wer_LI = SUBSTR(wer_LI,1,wer_defis-1)
*!*	 				   cM_s='*  Ѳ "-" - '+TRIM(wer_LI)+'.       - ˲ !!!'
 				   cM_s='* '+TRIM(wer_LI)+'.       - ˲ !!!'
   			       this.writeString(cM_s, ' !')

   			       this.writeString_all(cM_s, ' !')
				   This.RepMes(cM_s, This.Lresult, .F.)		
** 20.09.2021 -  .   "LeoMetr"  3..
                   If (This.DbId="6317") 
 				     cM_s='* Ͳ ϲ  "LeoMetr"  - 3..   01.12.2021 .'
   			         this.writeString(cM_s, ' !')

   			         this.writeString_all(cM_s, ' !')
				     This.RepMes(cM_s, This.Lresult, .F.)		
                   Endif
** 20.09.2021 - -------------
                 ENDIF
** #
                 =INKEY(5)
                ENDIF
** !18.04.11  
                m.Verif = This.ZipFileName
                m.Verif = STRTRAN(Verif, 'IF', 'Verif') 
                m.Kverif = AT('_', m.Verif, 4)
                IF m.Kverif != 0
                  m.Verif = SUBSTR(m.Verif, 1, m.Kverif-1) 
                  x_VerifUpd = ADDBS(This.UpdPath) + m.Verif + ".html"   &&   
                  x_VerifUpdDb = ADDBS(This.DbPath) + m.Verif + ".html"  &&    
* 
		          IF FILE("&x_VerifUpd")  &&   
                    COPY  FILE  "&x_VerifUpd"  TO  "&x_VerifUpdDb"		
*
 				    cM_s="* Ͳ  ²̲Ҳ ί  ² ί ̲  - "+x_VerifUpdDb
   			        this.writeString(cM_s, '')

   			        this.writeString_all(cM_s, '')
				    This.RepMes(cM_s, This.Lresult, .F.)		
*
                    =INKEY(5)
                  ENDIF
                 ENDIF
** .
				ELSE
					ROLLBACK
				ENDIF
			ENDTRY
		ENDIF
** ~        
		IF This.Lresult
** ~        
		cM_s="*    - "+ X_BazaD+".dbc"
** !  
		this.writeString(cM_s)

		this.writeString_all(cM_s)
** !
		This.RepMes(cM_s, .F., .F.)
		this.PackTales()
*
		cM_s="*   Ѳ  - "+ X_BazaD+".dbc"
** !  
		this.writeString(cM_s)

		this.writeString_all(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'
** 20.02.2019 -   Db2settings
        Db_P_ds_LV_04 = ADDBS(This.DbPath)+'Db2settings.dbf'
        Db_P_ds_fpt_04 = ADDBS(This.DbPath)+'Db2settings.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"	
** #+ 20.02.2019 - Actualizacija  Db2Settings
          COPY  FILE  "&Db_P_ds_LVc2"  TO  "&Db_P_ds_LV_04"		
          COPY  FILE  "&Db_P_ds_fptc2"  TO  "&Db_P_ds_fpt_04"	
        ENDIF  	
** +----- 18.08.2017 Onovlennia Datat dli BD 6571  -----+
        IF (This.DbId = '6571') .OR. (This.DbId = '6572')   && 16.09.2019
**
          DECLARE integer SetFileAttributes IN WIN32API string cFileName, integer nTypeAttr
**
            Up_P_DT_LV = ADDBS(This.UpdPath)+'Datat\*.*'   
**
** \\ 26.07.2021 -     
            Bd_P_DT_LV = ADDBS(This.DbPath)+'Datat\'
            Do CASE  
               Case !Empty(&cLV_filePath.)
                    If !Directory(&cLV_filePath)
                    Bd_P_DT_LV1 = '"'+ADDBS(This.DbPath)+'Datat\'+'"'
                    If !Directory(&Bd_P_DT_LV1)
                     MD &Bd_P_DT_LV1
                    ENDIF
   		             cM_s="*    - "+cLV_filePath+"  ²,  . "
   		             cM_s=cM_s+"       - "+Bd_P_DT_LV
			         this.writeString(cM_s)
			         this.writeString_all(cM_s)

   		             This.RepMes(cM_s, .F., .F.)
                    ELSE 
                     Bd_P_DT_LV = Addbs(&cLV_filePath.)
                    ENDIF
               OTHERWISE
                    Bd_P_DT_LV1 = '"'+ADDBS(This.DbPath)+'Datat\'+'"'

   		             cM_s="*       (). "
   		             cM_s=cM_s+"       - "+Bd_P_DT_LV1
			         this.writeString(cM_s)
			         this.writeString_all(cM_s)

   		             This.RepMes(cM_s, .F., .F.)

                    If !Directory(&Bd_P_DT_LV1.)
                     MD &Bd_P_DT_LV1.
                    ENDIF
           ENDCASE
** \\
		    cM_s="*  Ҳ   - "+Bd_P_DT_LV
			this.writeString(cM_s)
			this.writeString_all(cM_s)
** !
		    This.RepMes(cM_s, .F., .F.)
*
            in_n=Adir(m_up, '&Up_P_DT_LV')

           For in1=1 TO in_n     
             Up_P_DT_LV_F = ADDBS(This.UpdPath)+'Datat\' + m_up(in1,1)  
             Db_P_DT_LV_F = Bd_P_DT_LV + m_up(in1,1)
             IF FILE("&Db_P_DT_LV_F.") 
 **   "read only" 
              =SetFileAttributes("&Db_P_DT_LV_F.",0x80)
             ENDIF 
              COPY  FILE  "&Up_P_DT_LV_F."  TO  "&Db_P_DT_LV_F."		
           ENDFOR  

            =INKEY(15)

			cM_s="*   Ҳ   - "+Bd_P_DT_LV
    		this.writeString(cM_s, '')
    		this.writeString_all(cM_s, '')
** !
			This.RepMes(cM_s, .T., .T.)

        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_dubl_Reestr, Bd_Upd_Reestr
** !$ 07.02.2012
  LOCAL Bd_dubl_Library, Bd_Upd_Library
* *    ., 
  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\"
** $ 29.04.11
  Bd_dubl_Reestr = Bd_dubl+"Reestr\"
  Bd_Upd_Reestr = ADDBS(This.DbPath)+"Reestr\"
** !$ 07.02.2012
  Bd_dubl_Library = Bd_dubl+"Library\"
  Bd_Upd_Library = ADDBS(This.DbPath)+"Library\"
**!!    06.05.2013 - rozshyty Bd_dubl na poslidovnist papok
    nd_sl_3=OCCURS('\', Xx_Bd_oryg)
    n_kk_papok = nd_sl_3+1
    DECLARE AP_BD_DU(n_kk_papok)  
    AP_BD_DU(1) = This.Pathexe+"Updates\TempBd\"
    FOR IM_X=1 TO nd_sl_3
       nmn_sl = ATC('\', Xx_Bd_oryg, IM_X)
      AP_BD_DU(IM_X+1) = This.Pathexe+"Updates\TempBd\"+SUBSTR(Xx_Bd_oryg, 1, nmn_sl-1)
    ENDFOR
** !!
   TRY
** $ 29.04.11  Edb.dbc,dcx,dct  UPD
    Up_P_edb_dbc = ADDBS(This.DbPath)+'Edb.dbc'
    Up_P_edb_dcx = ADDBS(This.DbPath)+'Edb.dcx'
    Up_P_edb_dct = ADDBS(This.DbPath)+'Edb.dct'
    Db_P_edb_dbc = ADDBS(This.UpdPath)+'Edb.dbc'
    Db_P_edb_dcx = ADDBS(This.UpdPath)+'Edb.dcx'
    Db_P_edb_dct = ADDBS(This.UpdPath)+'Edb.dct'
*
    IF FILE(Up_P_edb_dbc) .AND. FILE(Up_P_edb_dcx) .AND. FILE(Up_P_edb_dct)
      COPY  FILE  "&Up_P_edb_dbc"  TO  "&Db_P_edb_dbc"		
      COPY  FILE  "&Up_P_edb_dcx"  TO  "&Db_P_edb_dcx"
      COPY  FILE  "&Up_P_edb_dct"  TO  "&Db_P_edb_dct"
    ENDIF  		
**  Info.dbf, fpt v Upd
    Db_P_info_dbf = '"'+ADDBS(This.UpdPath)+'Info'+'"'
	SELECT InfoTable
    COPY TO &Db_P_info_dbf
** $
	cM_s="* ²  Ͳ   - "+ X_BazaD+".dbc"
	this.writeString(cM_s)

	this.writeString_all(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+"  - &Ct_Na."
			cM_s=cM_s+".  "+"LINE : "+STR(er.Lineno)+" - "+er.LineContents+"."
    		this.writeString('Error = '+cM_s, '') 

    		this.writeString_all('Error = '+cM_s, '') 
			This.RepMes(cM_s, This.Lresult, .F.)
**
			FINALLY
			IF This.Lresult
			 cM_s="*  ϲ     " + X_BazaD+".dbc"
 		     this.writeString(cM_s)    

 		     this.writeString_all(cM_s)    
 			 This.RepMes(cM_s, .F., .F.)
             =INKEY(5)
			ELSE
			 cM_s="*       " + X_BazaD+".dbc"+ "     ."
  		     this.writeString(cM_s, '')     

  		     this.writeString_all(cM_s, '')     
			 This.RepMes(cM_s, This.Lresult, .F.)
             =INKEY(5)
			 cM_s="*   в   ,   ,     "
   		       this.writeString(cM_s, ' !!!')     

   		       this.writeString_all(cM_s, ' !!!')     
			   This.RepMes(cM_s, This.Lresult, .F.)
	           IF DIRECTORY(Bd_dubl)
				 cM_s="*      : "+Bd_dubl
    		     this.writeString(cM_s, ' !!!')     

    		     this.writeString_all(cM_s, ' !!!')     
			     This.RepMes(cM_s, This.Lresult, .F.)
			   ENDIF
               cM_s="*  в   ! " 
    		   this.writeString(cM_s, ' !!!')     

    		   this.writeString_all(cM_s, ' !!!')     
			   This.RepMes(cM_s, This.Lresult, .F.)
               =INKEY(5)
			  ENDIF
			ENDTRY
* * COPY    
  Bcrezult = .T.
  IF This.Lresult 
*** 13.11.2019 -    Setusers.dbf,   6317. 
	If INDBC("setusers", "TABLE") .AND. (This.Dbid = '6317')
	 Select 0
	 Use Setusers EXCL
	 Zap              && ZAP    TRY
**	 Delete ALL       && DELETE   TRY
	 Use IN Setusers 
	Endif
***
** !! 06.05.2013 -- stvorennia poslidovno vsih papok
    FOR IM_X=1 TO nd_sl_3+1
       X_papky = '"'+AP_BD_DU(IM_X)+'"'
       IF !DIRECTORY(&X_papky)
           MD &X_papky
       ENDIF
    ENDFOR
*
    Bd_dubl_Guide1 = '"'+Bd_dubl_Guide+'"'
    IF !DIRECTORY(&Bd_dubl_Guide1)
       MD &Bd_dubl_Guide1
    ENDIF
    Bd_dubl_UsersSet1 = '"'+Bd_dubl_UsersSet+'"'
    IF !DIRECTORY(&Bd_dubl_UsersSet1)
       MD &Bd_dubl_UsersSet1
    ENDIF
** $ 29.04.11
    Bd_Upd_Reestr1 = '"'+Bd_Upd_Reestr+'"' 
    IF DIRECTORY(&Bd_Upd_Reestr1)
        Bd_dubl_Reestr1 = '"'+Bd_dubl_Reestr+'"'   
	    IF !DIRECTORY(&Bd_dubl_Reestr1)
	       MD &Bd_dubl_Reestr1
	    ENDIF
    ENDIF 
** !$  07.02.2012
    Bd_Upd_Library1 = '"'+Bd_Upd_Library+'"' 
    IF DIRECTORY(&Bd_Upd_Library1)
        Bd_dubl_Library1 = '"'+Bd_dubl_Library+'"'
	    IF !DIRECTORY(&Bd_dubl_Library1)
	       MD &Bd_dubl_Library1
	    ENDIF
    ENDIF 
** !!
	TRY
** $$ 18.05.2011 -    (Cont_...)
    All_bd_dubl = Bd_dubl+'*.*'
    ERASE "&All_bd_dubl"
** $$
	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
** $ 29.04.11  -  Cont_ ......
    nn=ADBOBJECTS(A_cont, 'TABLE')
    FOR ni=1 TO nn
     IF ATC('cont_',A_cont(ni),1)=1
       Ct_Na = A_cont(ni)
       cFull_TN = ADDBS(This.DbPAth) + Ct_Na+'.*'
       xx_kudy = Bd_dubl + Ct_Na+'.*'
       COPY  FILE  "&cFull_TN"  TO  "&xx_kudy"	
     ENDIF
    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  		
** +-
** $ 29.04.11  Edb.dbc,dcx,dct  Upd   Reestr
    Up_P_edb_dbc = ADDBS(This.UpdPath)+'Edb.dbc'
    Up_P_edb_dcx = ADDBS(This.UpdPath)+'Edb.dcx'
    Up_P_edb_dct = ADDBS(This.UpdPath)+'Edb.dct'
    Db_P_edb_dbc = Bd_dubl + 'Edb.dbc'
    Db_P_edb_dcx = Bd_dubl + 'Edb.dcx'
    Db_P_edb_dct = Bd_dubl + 'Edb.dct'
*
    IF FILE(Up_P_edb_dbc) .AND. FILE(Up_P_edb_dcx) .AND. FILE(Up_P_edb_dct)
      COPY  FILE  "&Up_P_edb_dbc"  TO  "&Db_P_edb_dbc"		
      COPY  FILE  "&Up_P_edb_dcx"  TO  "&Db_P_edb_dcx"
      COPY  FILE  "&Up_P_edb_dct"  TO  "&Db_P_edb_dct"
    ENDIF  		
* 
    IF DIRECTORY(Bd_Upd_Reestr)
        xz_miniR = ADDBS(This.DbPath)+'Reestr\minireestr.dbf'
        xz_miniRall = ADDBS(This.DbPath)+'Reestr\minireestrall.dbf'
	    Up_P_ds_Reestr = ADDBS(This.DbPath)+'Reestr\*.*'
	    Db_P_ds_Reestr = Bd_dubl_Reestr + '*.*'
        IF FILE(xz_miniR) .OR. FILE(xz_miniRall)
	     COPY  FILE  "&Up_P_ds_Reestr"  TO  "&Db_P_ds_Reestr"		
        ENDIF
    ENDIF 
** !$ 07.02.2012     Library
    IF DIRECTORY(Bd_Upd_Library)
        xz_libakt = ADDBS(This.DbPath)+'Library\libakt.dbf'
        xz_libr = ADDBS(This.DbPath)+'Library\libr.dbf'
        xz_libre = ADDBS(This.DbPath)+'Library\libre.dbf'
        xz_librez = ADDBS(This.DbPath)+'Library\librez.dbf'
        xz_librm = ADDBS(This.DbPath)+'Library\librm.dbf'
        xz_librmz = ADDBS(This.DbPath)+'Library\librmz.dbf'
*
	    Up_P_ds_Library = ADDBS(This.DbPath)+'Library\*.*'
	    Db_P_ds_Library = Bd_dubl_Library + '*.*'
        IF FILE(xz_libakt) .OR. FILE(xz_libr) .OR. FILE(xz_libre) .OR. FILE(xz_librez) .OR. FILE(xz_librm) .OR. FILE(xz_librmz)
	     COPY  FILE  "&Up_P_ds_Library"  TO  "&Db_P_ds_Library"		
        ENDIF
    ENDIF 
** Copy Setusers.dbf, fpt
	    Up_P_SetUs_D = ADDBS(This.DbPath)+'Setusers.dbf'
	    Up_P_SetUs_F = ADDBS(This.DbPath)+'Setusers.fpt'
	    Db_P_SetUs_D = Bd_dubl + 'Setusers.dbf'
	    Db_P_SetUs_F = Bd_dubl + 'Setusers.fpt'
        IF FILE(Up_P_SetUs_D) .AND. FILE(Up_P_SetUs_F)    
         COPY  FILE  "&Up_P_SetUs_D"  TO  "&Db_P_SetUs_D"		
         COPY  FILE  "&Up_P_SetUs_F"  TO  "&Db_P_SetUs_F"
        ENDIF
** Copy Info.dbf, fpt
    Up_P_info_dbf = ADDBS(This.UpdPath)+'Info.dbf'
    Up_P_info_fpt = ADDBS(This.UpdPath)+'Info.fpt'
    Db_P_info_dbf = Bd_dubl + 'Info.dbf'
    Db_P_info_fpt = Bd_dubl + 'Info.fpt'
*
    IF FILE(Up_P_info_dbf) .AND. FILE(Up_P_info_fpt) 
      COPY  FILE  "&Up_P_info_dbf"  TO  "&Db_P_info_dbf"		
      COPY  FILE  "&Up_P_info_fpt"  TO  "&Db_P_info_fpt"
    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.writeString_all('Error = '+cM_s, '') 
		This.RepMes(cM_s, Bcrezult, .F.)
	FINALLY
		IF Bcrezult
 		   cM_s="*  ϲ    ֲ: " + Bd_dubl
	       this.writeString(cM_s, '')    

	       this.writeString_all(cM_s, '')    
		   This.RepMes(cM_s, .T., .T.)
           =INKEY(5)
		ELSE
			cM_s="*    ϲͲ     " + Bd_dubl
 		    this.writeString(cM_s, '')     

 		    this.writeString_all(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            =INKEY(5)
			cM_s="*  Ͳ  ²²   " + X_BazaD+".dbc"
  		    this.writeString(cM_s, '')     

  		    this.writeString_all(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            cM_s="*  в   ! " 
    		this.writeString(cM_s, '')     

    		this.writeString_all(cM_s, '')     
            =INKEY(5)
		ENDIF
	 ENDTRY
*
	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.writeString_all(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'+'"'
*
** 24.05.2021 -     LogVal
*
     If (This.Dbid="6571") .and. (Lower(Ct_na)="logval")
	  setdbname = '"'+ADDBS(This.DbPAth + Ct_Pa)+'logval'+'"'
      IF .NOT. FILE(cFull_TN_dbf)   &&  logval
**   logval.dbf, .fpt, .cdx 
		If !Indbc("logval","TABLE")
			Create Table &setdbname (ID C(10),VALUE I(4),PICTURE W,NAME C(50))
            INDEX ON id  TAG  id  ADDIT
            USE
		Else
			Create Table (ADDBS(This.DbPAth + Ct_Pa)+'logval') free(ID c(10))
			Remove Table logval DELETE
			Create Table &setdbname (ID C(10),VALUE I(4),PICTURE W,NAME C(50))
            INDEX ON id  TAG  id  ADDIT
            USE
        ENDIF
*
      ELSE
**  logval ,    DBC,   ,   
		If !Indbc("logval","TABLE")
		 logval_dbfcdxfpt = '"'+ADDBS(This.DbPAth + Ct_Pa)+'logval.*'+'"'
         Delete File (&logval_dbfcdxfpt.)
			Create Table &setdbname (ID C(10),VALUE I(4),PICTURE W,NAME C(50))
            INDEX ON id  TAG  id  ADDIT
            USE
        ENDIF
*
      ENDIF
     ENDIF
******* --   24.05.2021    LogVal
*
     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)  && potribno dobavyty pole
*
** 11.03.2020 -      Docs_az.dbf (BD - 6571)
*
        If (This.Dbid="6571") .and. (Lower(Ct_na)="docs_az") .and. ((Imia_F="ORR").or.(Imia_F="RZ").or.(Imia_F="RX").or.(Imia_F="PI"))
          ALTER TABLE '&Ct_Na' ADD  '&Imia_F' &Type_FA 
        ELSE 
**
        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  
** 11.03.2020
        ENDIF
**
       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  
               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.writeString_all('Error = '+cM_s, '') 
		This.RepMes(cM_s, Bcrezult, .F.)
	FINALLY
		IF Bcrezult
 		   cM_s="*      ֲ: " + Bd_oryg
	       this.writeString(cM_s, '')    

	       this.writeString_all(cM_s, '')    
		   This.RepMes(cM_s, .T., .T.)
           =INKEY(5)
		ELSE
			cM_s="*    Ͳ    ֲ " + Bd_oryg
 		    this.writeString(cM_s, '')     

 		    this.writeString_all(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            =INKEY(5)
			cM_s="*  Ͳ  ²²   ϲ  " + X_BazaD+".dbc"
  		    this.writeString(cM_s, '')     

  		    this.writeString_all(cM_s, '')     
			This.RepMes(cM_s, Bcrezult, .F.)
            cM_s="*  в   ! " 
    		this.writeString(cM_s, '')     

    		this.writeString_all(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+'"'
                        This.RepMes(" : "+Ct_Na, .f., .f.)
						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
				This.RepMes("*     ", .f., .f.)
			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.writeString_all('Error = '+cM_s, '') 
				This.RepMes(cM_s, Presult, .T.)
			FINALLY
				IF PResult
				 cM_s="*     " + X_BazaD+".dbc"
            	 this.writeString(cM_s, '')    

    		     this.writeString_all(cM_s, '')    
				 This.RepMes(cM_s, This.Lresult, .T.)
                 =INKEY(5)
				ELSE
				    cM_s="*      " + X_BazaD+".dbc"
    		        this.writeString(cM_s, '')     

    		        this.writeString_all(cM_s, '')     
					This.RepMes(cM_s, Presult, .T.)
** 10.12.2015 -  볺   
				  cM_s="* !!! Ӫ ²     ϲ,            !!!"
    		      this.writeString(cM_s, ' ')    

    		      this.writeString_all(cM_s, ' ')    
				  This.RepMes(cM_s, .T., .F.)

                  =INKEY(15)
				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.writeString_all('Error = '+cM_s, '')
				This.RepMes(cM_s, Presult, .T.)
			FINALLY
				IF PResult
					cM_s="*    Ѳ  " + X_BazaD+".dbc"
    		        this.writeString(cM_s, '')

    		        this.writeString_all(cM_s, '')
					This.RepMes(cM_s, This.Lresult, .T.)
                    =INKEY(5)
				ELSE
					cM_s="*     Ѳ  " + X_BazaD+".dbc"
    		        this.writeString(cM_s, '')     

    		        this.writeString_all(cM_s, '')     
					This.RepMes(cM_s, Presult, .T.)
				ENDIF
**  10.12.2015  -     
                =INKEY(20)
			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
**   13.03.2015
PARAMETERS KL_temp2
 DO WHILE .NOT. EOF()
  KL_temp3 = &KL_temp2. 
*!*	 -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 = .NULL.  && Do 30.05.2011 bulo R_txf = 0 
      SEEK KL_temp3
      IF .NOT. EOF()
** ^^ 30.05.2011     Bulo R_txf = txf zamist IF ....
       IF txf=0
        R_txf = .NULL.
       ELSE
        R_txf = txf
       ENDIF 
*!*	-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     
*!*	- 30.06.2016 -  (R_flag1), (R_flag2), (R_flag3)   (flag1), (flag2), (flag3)
       IF .NOT. ISNULL(flag1) .AND. .NOT. EMPTY(flag1)
        R_flag1 = flag1
       ENDIF              
       IF .NOT. ISNULL(flag2) .AND. .NOT. EMPTY(flag2)
        R_flag2 = flag2
       ENDIF              
       IF .NOT. ISNULL(flag3) .AND. .NOT. EMPTY(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 = Trim(&cKey_FN.)    &&  TRIM 18.05.2021
      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
*
