Saldo

 FUNCTION Saldo( cVO, aPar )  // сальдо счета
   LOCAL nRez := 0, cSchet, i, cCode, cNS, cKey := '', cAlias,;
         aOst:= {0,0}
   FIELD DTOB_n,KTOB_n,DTOST,KTOST
   cNS := UPPER(aPar[1])
   IF ( i:=AT(".", cNS) ) == 0
     cAlias := 'TMP'
     IF ( i := AT("*", cNS) ) == 0                  //Сюда
       cSchet := PADR( ALLTRIM( cNS ) , 10 )
       i := 10
     ELSEIF i == 3
       i := 2
       cSchet := LEFT( cNs, i )
       cAlias := "TMPSCHET"
     ELSE
       i--
       cSchet := LEFT( cNs, i )
     ENDIF
     cKey := aVariables[1][2]+cSchet
     //(cAlias)->( SetScope( '', cKey,, {OrdSetFocus()} ),;
     (cAlias)->( SetScope( OrdKey(), cKey ),;
      /*BROWSE(),*/;
      DBEVAL( {||IF(RIGHT(cVo,1) == "0" , aOst[1] += DTOB_n, ),;
      IF(RIGHT(cVo,1)==  "1" , aOst[1] += DTOST,  ),;
      IF(RIGHT(cVo,1) == "0" , aOst[2] += KTOB_n, ),;
      IF(RIGHT(cVo,1) == "1" , aOst[2] += KTOST,  ) ;
      } ),;
      SETSCOPE();
      )
     nRez := OstSchet(aOst, cSchet, '', aVariables[1][2], {        ;
          {0,.T.},;
          {0,.T.} ;
          })[IF(LEFT(cVo,1)=='0',1,2)][1]
   ELSE
     cSchet := PADR( ALLTRIM( LEFT(cNS, i-1)  ), 10 )
     cCode  := SUBSTR(cNS, i+1)
     IF ( i := AT("*", cSchet) ) <> 0
       cSchet := LEFT( cSchet, --i)
     ENDIF
     cKey := aVariables[1][2]+cSchet
     IF ( i := AT("*", cCode) ) == 0
       i := 6
       cCode  :=   Global_Analit( cCode )
     ELSE
       i--
       cCode := LEFT( cCode, i )
     ENDIF
   IF LEN(cSchet) == 10 ;   cKey += cCode ;    ENDIF
     TMPANAL->( SetScope( '', cKey,, { OrdSetFocus() } ),;
               DBEVAL( {||IF(cVo == "00" , nRez += TMPANAL->DTOB_n, ),;
               IF(cVo == "01" , nRez += TMPANAL->DTOST,  ),;
               IF(cVo == "10" , nRez += TMPANAL->KTOB_n, ),;
               IF(cVo == "11" , nRez += TMPANAL->KTOST,  ) ;
               },;
               {|| TMPANAL->CODE = cCode };
               ),;
               SetScope();
               )
   ENDIF
   IF nErrorTmp <> -1 // предупреждения нужны
     IF !VALUTA->(DBSEEK( aVariables[1][2]) )
       Str2File( " Код валюты: "+aVariables[1][2]+" отсутствует в справочнике валют", nErrorTmp )
     ENDIF
     IF !PLAN->(DBSEEK( cSchet ))
       Str2File( "Строка N"+STR(nLine,10)+" Счет: "+cSchet+" отсутствует в плане счетов", nErrorTmp )
     ELSEIF cCode <> NIL     .AND. ;
            !ANALIT->(DBSEEK( cSchet+cCode ))
       Str2File( "Строка N"+STR(nLine,10)+" Аналитический счет: "+cCode+;
                " на счете: "+cSchet+"отсутствует", nErrorTmp )
     ENDIF
   ENDIF
   RETURN (nRez)