//Налоговый расчет по авансовым платежам по транспортному налогу
Private NPYL, OKVED, Name_org, aFIORuk, aUp, aOpisSved, cPerOtch, aNalUpl
private aArr, ArrLen, cResult, i, j,aRasch, aArr_o, ArrLen_o, cResult_o,okato_1

SetRound(0)
//Массив атрибутов для налогоплательщика
NPYL :={}
If UvNalRO()
   Name_org :=GetData('ИМЯ_ПРЕД','C')
Else
   Name_org :=GetData('Ин_Орг','C')
Endif
AADD(NPYL,{"НаимОрг",name_org})
AADD(NPYL,{"ИННЮЛ",substr(GetData("ИНН",'C'),3,10)})
AADD(NPYL,{"КПП",GetData('КПП','C')})
OKVED:=GetData('ОКВЭД','C')
IF Len(OKVED)>4
   OKVED :=substr(OKVED,1,2)+'.'+substr(OKVED,3,2)+'.'+substr(OKVED,5,2)
Endif
IF Len(OKVED)>2.and.Len(OKVED)<=4
   OKVED :=substr(OKVED,1,2)+'.'+substr(OKVED,3,2)
endif
If Len(OKVED)<3
   OKVED :=substr(OKVED,1,2)
endif
AADD(NPYL, {"ОКВЭД",OKVED})
AADD(NPYL, {"Тлф",GetData('ТелНП','C'),"Н"})

//Документ - основная часть
//Сведения о налогоплательщике (СвНП) - начало
xRight()
 xAdd("СвНП")
   //Юр.лицо (НПЮЛ) - начало
   xRight()
    xAdd("НПЮЛ",NPYL)
      // Сведения о руководстве организации (СвРукОрг)
      cFIORuk := GetData("ФИОРук","C")
      cUP :=GetData('Уппред','C')
      IF Empty(cFIORuk).and.Empty(cUp)
        Sayandwait("Укажите ФИО руководителя или ФИО уполномоченного представителя в отчете")
      EndIf
      IF !Empty(cFIORuk).and.Empty(cUp)
         xRight()
            aFIORuk :={}
            AADD(aFIORuk,{"Фамилия", token(cFIORuk," ",1)})
            AADD(aFIORuk,{"Имя", token(cFIORuk," ",2)} )
            AADD(aFIORuk,{"Отчество", token(cFIORuk," ",3)})
            xAdd("СвРукОрг",aFIORuk,1)
         xLeft()
      EndIf
      //Сведения о руководстве организации (СвРукОрг) -конец
      // Сведения об уполномоченном представителе (СвПред)
      IF !Empty(cUp)
         xRight()
            aUp :={}
            AADD(aUp,{"Фамилия", token(cUp," ",1)})
            AADD(aUp,{"Имя", token(cUp," ",2)} )
            AADD(aUp,{"Отчество", token(cUp," ",3)})
            xAdd("СвПред",{{"НаимДокПред",GetData("НаимДокПред","C")}})
            //ФиоПред
            xRight()
               xAdd("ФИОПред",aUp,1)
            xLeft()
         xLeft()
       EndIf
      //Сведения об уполномоченном представителе (СвПред)  -конец
   xLeft()
   //Юр.лицо (НПЮЛ) - конец
//Сведения о налогоплательщике  (СвНП) - конец

//Описание передаваемых сведений (ОписПерСвед) - начало
aOpisSved :={}
AADD(aOpisSved,{"КНД",GetData("КНД","C")})
If Getdata("ВД","С")="3"
   AADD(aOpisSved,{"ВидДок",GetData("НомерКорр","C")})
Else
   AADD(aOpisSved,{"ВидДок","0"})
EndIf
cPerOtch :=GetData("НП","C")
AADD(aOpisSved,{"ПериодОтч",IIF(cPerOtch='3','21',IIf(cPerOtch='6','22','23'))})
AADD(aOpisSved,{"ГодПериодОтч",GetData("Щ","C")})
AADD(aOpisSved,{"ДатаДок",Today()})
xAdd("ОписПерСвед",aOpisSved,1)
//Описание передаваемых сведений (ОписПерСвед) - конец

//Содержание передаваемых сведений (СодПерСвед) - конец
xAdd("СодПерСвед")
xRight()
   //Массив раздела 1 (Окато и сумма налога)
   aArr_o := GetData("01","A")
   J :=2
   IF !EMPTY(aArr_o)
      ArrLen_o := LEN(aArr_o)
      cResult_o:= "ААА"
      While (j <= ArrLen_o).AND.!EMPTY(Alltrim(cResult_o))
         aNalUpl :={}
         AADD(aNalUpl,{"КБК",DoStr(aArr_o[j,1])})
         okato_1 :=DoStr(aArr_o[j,2])
         AADD(aNalUpl,{"ОКАТО",okato_1})
         If  Empty(DoStr(aArr_o[j,3]))
             AADD(aNalUpl,{"СумУплБюдж","0"})
          else
             AADD(aNalUpl,{"СумУплБюдж",DoStr(aArr_o[j,3])})
         EndIf
         xAdd("СумНалУпл",aNalUpl)

        //Расчет суммы авансового платежа
        // Массив по транспортным средствам
        aArr := GetData("02","A")
        I := 2
        xRight()
        IF !EMPTY(aArr)
           ArrLen := LEN(aArr)
           cResult:= "ААА"
           While (i <= ArrLen).AND.!EMPTY(Alltrim(cResult))
              aRasch :={}
              If okato_1=DoStr(aArr[i,15]).and.!Empty(DoStr(aArr[i,2]))
                 AADD(aRasch,{"КодВидТС",DoStr(aArr[i,2])})
                 AADD(aRasch,{"ИдНомТС",DoStr(aArr[i,3]),"Н"})
                 AADD(aRasch,{"МаркаТС",DoStr(aArr[i,4]),"Н"})
                 AADD(aRasch,{"РегЗнакТС",DoStr(aArr[i,5])})
                 SetRound(2)
                 AADD(aRasch,{"НалБаза",DoStr(aArr[i,6])})
                 SetRound(0)
                 AADD(aRasch,{"ОКЕИНалБаза",DoStr(aArr[i,7])})
                 AADD(aRasch,{"СрокИспольз",DoStr(aArr[i,8]),"Н"})
                 SetRound(2)
                 AADD(aRasch,{"Коэф3623",DoStr(aArr[i,9])})
                 AADD(aRasch,{"НалСтавка",DoStr(aArr[i,10])})
                 SetRound(0)
                 IF Empty(DoStr(aArr[i,11]))     
                     AADD(aRasch,{"СумИсчисл","0"})  
                 else    
                    AADD(aRasch,{"СумИсчисл",DoStr(aArr[i,11])}) 
                 endif   
                 AADD(aRasch,{"КодНалЛьг",DoStr(aArr[i,12]),"Н"})
                 AADD(aRasch,{"СумНалЛьг",DoStr(aArr[i,13]),"Н"})
                 IF Empty(DoStr(aArr[i,14]))
                    AADD(aRasch,{"СумИсчислУпл","0"})
                 else    
                    AADD(aRasch,{"СумИсчислУпл",DoStr(aArr[i,14])}) 
                 endif
                 xAdd("РасчНалТС",aRasch,1)
               EndIf
              i := i+1
              IF i <= ArrLen
                cResult:= ArrToString(aArr[i])
              ENDIF
           ENDDO
        ENDIF
        xLeft()
        j := j+1
        IF j <= ArrLen_o
           cResult_o:= ArrToString(aArr_o[j])
        ENDIF
     ENDDO
   ENDIF

xleft()