
#include "s_public.ch"

#DEFINE COL_BROWS0  IF(INST_COLOR,'w/b,n/w,,,w+/b','w/n,n/w,,,w+/n')   //Комментариии невыделенные
#DEFINE COL_BROWS1  IF(INST_COLOR,'bg+/b','w+/n')                      //Вспомогательная рамка на Browser'e
#DEFINE COL_BROWS2  IF(INST_COLOR,'n/w','n/w')                         //2 цвет Browser
#DEFINE COL_MENU    IF(INST_COLOR,'n/g,n/w','w/n,n/w')
#DEFINE COL_SELECT  IF(INST_COLOR,'w+/g','w+/n')
#DEFINE COL_HEADPRICE IF(INST_COLOR,'b/w','n/w')
#DEFINE COL_SHEADR   IF(INST_COLOR,'gr+/b*,w+/n,,,w+/b*','n/w,w+/n,,,n/w')
#DEFINE COL_NCC1    IF(INST_COLOR,"b+/n*,w+/n","w+/n*,w+/n")
#DEFINE COL_NCC2    IF(INST_COLOR,"n+/w*","n+/w*")
#DEFINE COL_NCC3    IF(INST_COLOR,"n/w*","n/w*")
#DEFINE COL_NCC4    IF(INST_COLOR,"w+/b*,w+/n","n+/w*,w+/n")
#DEFINE COL_NCC5    IF(INST_COLOR,"r+/b*,w+/n","n+/w*,w+/n")

#DEFINE BOX1        "┌─┐│┘─└│"
#DEFINE BOX2        "╔═╗║╝═╚║"
#DEFINE BOX3        "▌ ▐▐▐ ▌▌"

// Представление учетной цены
#DEFINE L_CENA0  19
#DEFINE L_RCENA0  6
#DEFINE L_NAS0   19
#DEFINE L_DATE1   8
#DEFINE L_RNAS0  10

// Вид движения - оприходование с наценкой
#DEFINE IS_ROZN      (pVid+pType = "1#")
#DEFINE IS_ROZN_CALC (pVid+pType = "1#" .AND. MOVES->YESTSUM)

// Инициализация наценки и учетной цены
#DEFINE IS_CENA_FACT   (SELECT("MSCHET")>0.AND.MSCHET->(!EOF()).AND.MSCHET->UCHET!="1".AND.!MOVES->YesUchet.AND.Moves->YesSeb)
#DEFINE TN_ALL         IF(!EMPTY(m->CENA0) .AND. IS_ROZN .AND. IsUhetPartia(iMGRUP->CODE),iSPR_PART->NASENKA,iMGRUP->TN)
#DEFINE SAVE_CENA0     (FIELD->CENA0 := VAL(SUBSTR(aMat[i],P_CENA0,L_CENA0)),FIELD->CENA0N := Div(VAL(SUBSTR(aMat[i],P_SUMN,L_SUM)),VAL(SUBSTR(aMat[i],P_KOL,L_KOL))),FIELD->TN := VAL(SUBSTR(aMat[i],P_NAS0,L_NAS0)))
#DEFINE SAVE_PCENA0    (FIELD->CENA0 := m->Cena0,FIELD->Cena0N:=Div(m->NSumN,aIn[5]), FIELD->TN := m->NAS0)
#DEFINE DEF_CENA0      (m->CENA0 := IF(FIELDPOS("VID")>0.AND.FIELDPOS("TYPE")>0.AND.FIELDPOS("CENA0")>0,;
                                       FIELD->CENA0,;
                                       IF(IS_CENA_FACT.AND.TYPE("S")=="N".AND.TYPE("Q0")=="N".AND.!EMPTY(m->S),;
                                          m->S/IF(EMPTY(m->Q0),1,m->Q0),;
                                          __CENA)),;
                        m->NAS0 := TN_ALL,IF(IS_ROZN,(m->TN := m->NAS0,m->SUM_TN := ROUND(m->CENA0*IF(FieldPos("KOL") != 0,FIELD->KOL,0),CURR_MAIN)-IF(FieldPos("SUMOUTR")!=0,FIELD->SUMOUTR,0)),m->SUM_TN := 0))
#DEFINE DEF_CENA0N       m->CENA0N := IF(FIELDPOS("VID")>0.AND.FIELDPOS("TYPE")>0.AND.FIELDPOS("CENA0N")>0,;
                                       FIELD->CENA0N,;
                                       IF(IS_CENA_FACT.AND.TYPE("SNAL")=="N".AND.TYPE("Q0")=="N".AND.!EMPTY(m->SNal),;
                                          m->SNal/IF(EMPTY(m->Q0),1,m->Q0),;
                                          __CENAN))
#DEFINE DEF_IN_CENA0   (m->CENA0 := aIn[25] := IF(IS_CENA_FACT,;
                                                  IF(!EMPTY(aIn[14]),;
                                                     aIn[14],;
                                                     IF(!EMPTY(aIn[10]).AND.!EMPTY(aIn[5]),;
                                                        Div(aIn[10],aIn[5]),__CENA)),;
                                                        __CENA),;
                        m->CENA0N:=IF(TYPE('nSumN')='N'.AND.!EMPTY(aIn[5]) ,DIV(m->nSumN,aIn[5]),__CENA0N),;
                        aIn[26] := m->NAS0 := TN_ALL,IF(IS_ROZN,(m->TN := m->NAS0,m->SUM_TN := ROUND(m->CENA0*aIn[5],CURR_MAIN)-aIn[9]),m->SUM_TN := 0))
#DEFINE DEF_SH_OP_SUMMA (SH_OP->SUMMA+IF(m->L_NDS,SH_OP->SUMMA_NDS,0)+IF(m->L_CSH,SH_OP->SUMMA_CSH,0)-IF(m->L_AKC,0,SH_OP->SUMMA_ACZ))
#DEFINE DEF_OP_CENA0  (;
                        m->NAS0 := aIn[26] := TN_ALL,;
                        m->CENA0 := aIn[25] :=;
                         IF(IS_ROZN .AND. EMPTY(__CENA),;
                            ROUND(Div(DEF_SH_OP_SUMMA,aIn[5])+Div(DEF_SH_OP_SUMMA,aIn[5])*m->NAS0/100,L_RCENA0),;
                            IF(IS_CENA_FACT.AND.!EMPTY(aIn[14]),aIn[14],__CENA)),;
                        IF(;
                           IS_ROZN,;
                           (;
                             aIn[6]  := ROUND(Div(aIn[9],aIn[3]),6),;
                             m->NAS0 := m->TN := aIn[26] := Div(aIn[5]*aIn[25]-aIn[9],aIn[9])*100,;
                             aIn[14] := aIn[25],;
                             aIn[8]  := aIn[9],;
                             aIn[11] := aIn[10] := aIn[5]*aIn[25],;
                             m->CENA0 := aIn[25],;
                             m->SUM_TN := aIn[10]-aIn[9];
                           ),;
                           m->SUM_TN := 0;
                          );
                       )
#DEFINE DEF_DOC_CENA0  (m->CENA0 := MDOCM->CENA0,m->Cena0N:=MDocM->Cena0N,m->NAS0 := MDOCM->TN,IF(IS_ROZN,(m->SUM_TN := ROUND(m->CENA0*MDOCM->KOL,CURR_MAIN)-MDOCM->SUMOUTR,m->NAS0 := m->TN := Div(m->SUM_TN,MDOCM->SUMOUTR)*100),m->SUM_TN := 0))
#DEFINE DEF_MAT_CENA0  (m->CENA0 := VAL(SUBSTR(cMat,P_CENA0,L_CENA0)),;
                        m->CENA0N := DIV(VAL(SUBSTR(cMat,P_SUMN,L_SUM)),VAL(SUBSTR(cMat,P_KOL,L_KOL))),;
                        m->NAS0 := VAL(SUBSTR(cMat,P_NAS0,L_NAS0)),;
                        IF(IS_ROZN,(m->TN := m->NAS0,m->SUM_TN := ROUND(VAL(SUBSTR(cMat,P_SUMFACT,L_SUM))-VAL(SUBSTR(cMat,P_SUMOUTR,L_SUM)),4)),m->SUM_TN := 0))
#DEFINE _RSET_CENA0 (IF(((IS_CENA_FACT).OR.(pVid='1'.AND.TYPE('InUchet_')=='L'.AND.m->InUchet_.AND.EMPTY(__CENA))).AND.!EMPTY(aIn[14]),;
                        m->Cena0:= aIn[25]:= aIn[14], NIL),;
                     IF(((IS_CENA_FACT).OR.(pVid='1'.AND.TYPE('InUchet_')=='L'.AND.m->InUchet_.AND.EMPTY(__CENAN))).AND.!EMPTY(m->nSumN),;
                        m->Cena0N:=DIV(m->nSumN,aIn[5]), NIL))
#DEFINE DEF_PCENA0     CENA0,NAS0,SUM_TN,CENA0N

//Длина
#DEFINE L_NAME  35
#DEFINE L_KOL   14
#DEFINE L_CENA  17
#DEFINE L_SUM   14
#DEFINE L_GRUP   5
#DEFINE L_PARTIA 5
#DEFINE L_NNUM   13
#DEFINE L_ED     5
#DEFINE L_SCHET  10
#DEFINE L_IZNOS  3

//Позиции в строке проводки

#DEFINE R_DT        2
#DEFINE R_DTCODE    12
#DEFINE R_KT       18
#DEFINE R_KTCODE   28
#DEFINE R_SUM      34
#DEFINE R_VSUM     48
#DEFINE R_VCURS    62
#DEFINE R_CODEVAL  75
#DEFINE R_NAME     78
#DEFINE R_PRI      128
// Длина  в проводке
#DEFINE LR_NAME   50

//Длина массива aIn[] - для Calc()
#DEFINE L_AINCALC 26

//Позиции в cMat в строке и на экране

#DEFINE P_NAME      1
#DEFINE P_KOL      36
#DEFINE P_CENAFACT 50
#DEFINE P_SUMFACT  65
//Только в строке
#DEFINE P_GRUP      79
#DEFINE P_NNUM      84
#DEFINE P_PARTIA    407
#DEFINE P_KOLBR     412
#DEFINE P_KOLNED    431
#DEFINE P_KOLOUT    97
#DEFINE P_ED1       111
#DEFINE P_CENAOUT   116
#DEFINE P_ED2       133
#DEFINE P_SUMOUT    138
#DEFINE P_SUMOUTR   152
#DEFINE P_SUM       166
#DEFINE P_IZNOS     180
#DEFINE P_PERIOD    183
#DEFINE P_ED        186
#DEFINE P_SCHET     191
#DEFINE P_NDS       207
#DEFINE P_SFN       215
#DEFINE P_PA        223
#DEFINE P_TP        231
#DEFINE P_TN        239
#DEFINE P_EU        247
#DEFINE P_TZR1M     255
#DEFINE P_TZR2M     269
#DEFINE P_TZR3M     283
#DEFINE P_DOP1      297
#DEFINE P_DOP2      305
#DEFINE P_DOP3      313
#DEFINE P_PP1       321
#DEFINE P_PP2       335
#DEFINE P_R         349
#DEFINE P_KOL1      364
#DEFINE P_CODEDOC1  378
#DEFINE P_NUMDOC1   381
#DEFINE P_SCLAD1    387
#DEFINE P_KOL2      393
#DEFINE P_OPERFACT  450
#DEFINE P_SUM_NDS   467
#DEFINE P_SUM_ACZ   486
#DEFINE P_KOL_OLD   505
#DEFINE P_CENA0     519
#DEFINE P_NAS0      538
#DEFINE P_DATE1     557
#DEFINE P_SUM_CSH   565
#DEFINE P_CSH       584
#DEFINE P_NUMSTR    592   // длина 5
#DEFINE P_SUMN      597   // длина 14
#DEFINE P_TZR1MN    611   // длина 14
#DEFINE P_TZR2MN    625   // длина 14
#DEFINE P_TZR3MN    639   // длина 14
#DEFINE P_A_GRUP    653   // длина 6      // victor спецодежда 6
#DEFINE P_IZN_ALL   659   // длина 14
#DEFINE P_IZN_ALLN  673   // длина 14
#DEFINE P_PEREOC_D  687   // длина 8
#DEFINE P_SCHETZM   695   // длина 16
#DEFINE P_SCHETZMN  711   // длина 16
#DEFINE P_ZCODEM    727   // длина 24
#DEFINE P_ZCODEMN   751   // длина 24
#ifdef __HARBOUR__
#DEFINE P_NAME1     775   //длина 26    xвост от наименования ТМЦ
#endif


#DEFINE C_ED   42

#DEFINE DEF_MFACT pOperFact,pNumFact,pBakOperFact,pDataFact,pPro,pVidNumFact

#DEFINE paSetPDop {; // В случае добавления изменяить iaGenPDop в task.ch в SCLAD и REAL
                   {"POST","Дата поступления           ",.T.},;
                   {"CENU","Цена учетная в осн. валюте ",.T.};
                   }


MEMVAR yesReal,yesGood,yesMatReal
MEMVAR PATH_DBA,PATH_TMP,GlobalName
MEMVAR aIn0,aPos,aPos0,pLastGrup,aCodeCen,aGetBrNed
MEMVAR lDemoKassa,lArmKassa
MEMVAR SCL_BEG,SCL_RBEG,SCL_TBEG,SCL_DSEBE0,SCL_DSEBE,SCL_DSEBE1,SCL_DSEBER,SCL_PRO1,SCL_PRO2

MEMVAR SCL_NAK,SCL_ORDHEAD,SCL_NAKHEA,SCL_NAK0,SCL_NAKED,SCL_NAKKOL,SCL_NAKCEN,SCL_NAKSUM
MEMVAR SCL_CODE

MEMVAR Marka_,Razmer_,Profil_,Sort_,Norma_,Ana_,Koef_
MEMVAR RValuta_,RNacen_,RCena_,RPrim_,RKolCen_
MEMVAR RFo1_,VFo1_,RFo2_,VFo2_,RFo3_,VFo3_,RFo4_,VFo4_
MEMVAR YesFilter_,Filter_,Ord_

MEMVAR frmFile,frmFile1,aSclad,aMol,aFilial,aMoves,aVid,aMovesL,aWindow,nWindow
MEMVAR aTzShop

MEMVAR pVid,pType
MEMVAR pSclad,pScladName,pNameMol,pLastNum,pNextNum,pLastNum1,pNextNum1
MEMVAR pDate,pCodeDoc,pNumDoc,pAgentName,pDopCode,pAgentCode,pAgentCod1,pAgentNam1
MEMVAR pCodeDoc1,pNumDoc1, nSNoper
MEMVAR pPrim,pUpdated,pDate1,pDate2,pYesReserv,pSkidka,pNakidka,pNumber
MEMVAR pCodeVal,pCenaVal,pSumma,pSumOut,pSumFact,lPlus,pLenMat,pErr,pTypOper,pSumOutR,pSumR,pKol,pSumRN
MEMVAR pAgentCod,pAgentNam,pStatus,pRegion,pSchet,pCorrSchet,pCorrCode,pCodeCen
MEMVAR pControl,pStatus1,pSorti,pSclads,pModel,pStatusF
MEMVAR lSREdit,DEF_MFACT
MEMVAR lWinOpen
MEMVAR lChTnPart

FIELD Kol_,Kol1_,Ed_ in MGRUP
FIELD Vid,Type,TypeOper,CodeSclad,CodeDoc,NumDoc,CodeOper,Algoritm,Pro
FIELD AgentName,DopCode,AgentCode,Prim,CodeDoc1,NumDoc1,AgentCod1,AgentNam1
FIELD Filial,PartCode
FIELD Date,Date1,Date2,YesReserv,Skidka,Nakidka,Mesto1,Mesto2
FIELD CodeVal,CenaVal,CodeCen,KolPos,Sum,SumOut,SumOut0,SumOut1,SumOutR,SumFact,CenaOut,SUMR,SumRN
FIELD CodeCen1,CodeCen2,CodeCen3,CodeCen4
FIELD Skidka1,Skidka2,Skidka3,Skidka4,Skidka5,Nacen
FIELD Grup,NNum,Partia,Kol,KolBr,KolNed,KolOut,Cena,Cena1,Sum0,Kol0,KolTek,Sclad,Norma,Sclad1,Oper_Fact
FIELD Sum_Dt,Sum_Kt,Saldo,Sign,Ins,Num
FIELD Schet,Schet_A,Schet_R,CodeMol,NameMol
FIELD YesSclad,VCena,Grup1,NNum1
FIELD AgentCod,AgentNam,Status,Region
FIELD Price,KolRes,KolLim
FIELD ODate,OCena1,VCena1,OCena2,VCena2,OCena3,VCena3,OCena4,VCena4,Nacen1,Nacen2,Nacen3,Nacen4
FIELD Kol1,Kol2,Kol3,Kol4,Kol5,Sum1,Sum2,Sum3,Cena3,R1,R2,R3,Kol10,Sum10
FIELD Pre,Act,Model
FIELD Descript,Shablon
FIELD Uchet,Metod,Mbp,Iznos,Period
FIELD Form,Ident,Skid,SkidQ,Control,Status1,Input,Input1


FIELD Summa0,DataOper,Valuta,VSumma,VCurs,PayType,ScladCodes

FIELD Ed,Ed1,Ed2,Ed3,Algo1,Algo2,Algo3

FIELD Name1,Name2,Name3,YesCalc,YesTSum,YesDop,YesProd,YesTv,YesValuta,YesUchet,YesOtgr,Use03,Use09,UseSR IN MOVES
FIELD XROUND,LDATE,XCODEDOC,LCODEDOC,LNUMDOC,XDOPCODE,LDOPCODE,XAGENTNAME IN MOVES
FIELD LAGENTNAME,XPRIM,LPRIM,XCODEVAL,LCODEVAL,XCENA,LCENA,LSUM,LPRICE,LGRUP,LPROV IN MOVES
FIELD LCURS,YESSEB,YESPAY IN MOVES

// Для партионного учета !!!!!!!

#DEFINE __IS_PART_UHET  !(iMSCHET->XRAN != '1' .OR. iMSCHET->METOD = '3')
#DEFINE __CENA   IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METOD = '3',iMLABEL->Cena, IF(EMPTY(lChTnPart),iSPR_PART->CENA_F,TnPrePart(cSelPartia)))
#DEFINE __CENAN   IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METODNal = '3',iMLABEL->CenaN, IF(EMPTY(lChTnPart),iSPR_PART->CENA_FN,TnPrePartN(cSelPartia)))
#DEFINE __CENA0  IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METOD = '3'.OR._ROZNICA,iMLABEL->Cena0,IF(EMPTY(lChTnPart),iSPR_PART->CENA_F,TnPrePart(cSelPartia)))
#DEFINE __CENA0N  IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METODNal = '3'.OR._ROZNICA,iMLABEL->Cena0N,IF(EMPTY(lChTnPart),iSPR_PART->CENA_FN,TnPrePartN(cSelPartia)))
#DEFINE __MLABEL (IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METOD = '3',cSelLabel,cSelPartia))
#DEFINE __MLABELN (IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METODNal = '3',cSelLabel,cSelPartia))
#DEFINE __RLABEL (IF(iSPR_PART->(EOF()) .OR. MemVar->PricePart = 1,cSelLabel,cSelPartia))
#DEFINE __ALIAS  (IF(EMPTY(MDOCM->PARTIA) .OR. MemVar->PricePart = 1,cSelLabel,cSelPartia))
#DEFINE __LONG_CENA(cGrup)  IF(IsUhetPartia(cGrup),IF(EMPTY(lChTnPart),iSPR_PART->CENA_F,TnPrePart(cSelPartia)),iMLABEL->Cena)
#DEFINE __LONG_CENAN(cGrup)  IF(IsUhetPartia(cGrup),IF(EMPTY(lChTnPart),iSPR_PART->CENA_FN,TnPrePartN(cSelPartia)),iMLABEL->CenaN)
#DEFINE __LONG_CENA0(cGrup) IF(IsUhetPartia(cGrup),iSPR_PART->CENA_F,iMLABEL->Cena0)
#DEFINE __LONG_CENA0N(cGrup) IF(IsUhetPartia(cGrup),iSPR_PART->CENA_FN,iMLABEL->Cena0N)
#DEFINE __PUT_CENA(nCena)   IF(_ROZNICA,;
                               iMLABEL->(Bs_RecLock()).AND.(iMLABEL->Cena:= nCena, iMLABEL->(Bs_DbUnLock())).AND.iMSCHET->XRAN='1'.AND.iMSCHET->METOD != '3'.AND.iSPR_PART->(Bs_RecLock()).AND.(iSPR_PART->CENA_F := nCena,iSPR_PART->NASENKA:= RetNasenka(iSPR_PART->CENA_P,nCena),iSPR_PART->(Bs_dbUnLock())),;
                               IF(iMSCHET->XRAN = '1' .AND. iMSCHET->METOD != '3',IF(iSPR_PART->(Bs_RecLock()),(iSPR_PART->CENA_F := nCena, iSPR_PART->NASENKA:= RetNasenka(iSPR_PART->CENA_P,nCena), iSPR_PART->(Bs_dbUnLock())),NIL),IF(iMLABEL->(Bs_RecLock()),(iMLABEL->Cena := nCena,IF(iMSCHET->Uchet='1',iMLABEL->Cena0:=nCena,NIL),iMLABEL->(Bs_dbUnLock())),NIL)))
#DEFINE __PUT_CENAN(nCena)     IF(iMSCHET->XRAN = '1' .AND. iMSCHET->METODNal != '3',;
                                  IF(iSPR_PART->(Bs_RecLock()),;
                                     (iSPR_PART->CENA_FN := nCena, iSPR_PART->(Bs_dbUnLock())),NIL),;
                                  IF(iMLABEL->(Bs_RecLock()),;
                                     (iMLABEL->CenaN := nCena,;
                                      IF(iMSCHET->Uchet='1',iMLABEL->Cena0N:=nCena,NIL),;
                                      iMLABEL->(Bs_dbUnLock())),NIL))

#DEFINE __DEF_ALL_PRIVATE  lChTnPart, dCurrWDay, OnlyV, InValut
#DEFINE _CURR_WDAY IF(TYPE("dCurrWDay")!="D".OR.EMPTY(m->dCurrWDay), SetCurrWDay(), m->dCurrWDay)
#DEFINE _LPROV GetLProv()
#DEFINE __OSN_ED iMLABEL->ED
#DEFINE __DEF_PRIVATE  pSchet,pAgSchet,pAgCode,pCodeDop,pPartSchet,pPartCode,pNNum,pNameNNum,pPart,pNamePart,pGrup,pNameGrup,pScladMOL,pScladMOL1
#DEFINE __DEF_DOC      pSclad,pNumDoc,pCodeDoc,pPrim
#DEFINE IS_DOC_PRIM   (pVid != "5" .AND. pVid != "9")
#DEFINE __DEF_PAR_PRIM   {{"pSclad","Код склада","C"},{"pSchet","Счет хранения ТМЦ","C"},{"pAgSchet","Счет контрагента","C"},{"pAgCode","Код контрагента","C"},{"pCodeDop","Код доп.аналитики","C"},{"pPartSchet","Счет расчетов партии","C"},{"pPartCode","Аналитический счет партии","C"},{"pGrup","Группа ТМЦ","C"},{"pNameGrup" ,"Наименование группы ТМЦ  ","C"},{"pNNum","Номенклатурный номер ТМЦ","C"},{"pNameNNum" ,"Наименование ТМЦ  ","C"},{"pPart","Партия ТМЦ","C"},{"pNamePart" ,"Наименование партии ТМЦ  ","C"},{"NI()","Значение иерархии","C"},{"pNumDoc","Номер документа","C"},{"pCodeDoc","Код документа","C"},{"pPrim","Примечание","C"}}
#DEFINE __DEF_PAR_ACT    {{"pSclad","Код склада","C"},{"pSchet","Счет хранения ТМЦ","C"},{"pPartSchet","Счет расчетов партии","C"},{"pPartCode","Аналитический счет партии","C"},{"pGrup","Группа ТМЦ","C"},{"pNameGrup" ,"Наименование группы ТМЦ  ","C"},{"pNNum","Номенклатурный номер ТМЦ","C"},{"pNameNNum" ,"Наименование ТМЦ  ","C"},{"pPart","Партия ТМЦ","C"},{"pNamePart" ,"Наименование партии ТМЦ  ","C"},{"pNumDoc","Номер акта переоценки","C"}}
#DEFINE __DEF_SAY_DOC;
 {;
  {"pSclad"     ,{"Представляет собой код склада"}},;
  {"pSchet"     ,{"Представляет собой cчет хранения ТМЦ"}},;
  {"pAgSchet"   ,{"Представляет собой счет контрагента"}},;
  {"pAgCode"    ,{"Представляет собой код контрагента"}},;
  {"pCodeDop"   ,{"Представляет собой код доп.аналитики"}},;
  {"pPartSchet" ,{"Представляет собой счет расчетов партии"}},;
  {"pPartCode"  ,{"Представляет собой аналитический счет партии"}},;
  {"pNamePart"  ,{"Представляет собой наименование партии ТМЦ"}},;
  {"pGrup"      ,{"Представляет собой группу ТМЦ"}},;
  {"pNameGrup"  ,{"Представляет собой наименование группы ТМЦ"}},;
  {"pNNum"      ,{"Представляет собой номенклатурный номер ТМЦ"}},;
  {"pNameNNum"  ,{"Представляет собой наименование ТМЦ"}},;
  {"pPart"      ,{"Представляет собой код партии ТМЦ"}},;
  {"NI()"       ,{"Представляет собой значение иерархии"}},;
  {"pNumDoc"    ,{"Представляет собой номер документа"}},;
  {"pCodeDoc"   ,{"Представляет собой код документа"}},;
  {"pPrim"      ,{"Представляет собой примечание документа"}},;
  {"pScladMOL"  ,{"Представляет собой код МОЛ по складу"}},;
  {"pScladMOL1" ,{"Представляет собой код МОЛ по складу-приемщику"}};
  }
#DEFINE __DEF_SAVE     (;
                         MemVar->pSchet := SPACE(10),;
                         MemVar->pAgSchet := SPACE(10),;
                         MemVar->pAgCode := SPACE(6),;
                         MemVar->pCodeDop := SPACE(6),;
                         MemVar->pPartSchet := SPACE(10),;
                         MemVar->pPartCode := SPACE(6),;
                         MemVar->pNNum := SPACE(L_NNUM),;
                         MemVar->pNameNNum := SPACE(35),;
                         MemVar->pGrup := SPACE(L_GRUP),;
                         MemVar->pNameGrup := SPACE(35),;
                         MemVar->pPart := SPACE(L_PARTIA),;
                         MemVar->pNamePart := SPACE(35),;
                         MemVar->pSclad := SPACE(6),;
                         MemVar->pNumDoc := SPACE(6),;
                         MemVar->pCodeDoc := SPACE(6),;
                         MemVar->pPrim    := SPACE(35),;
                         MemVar->pScladMOL:= SPACE(6),;
                         MemVar->pScladMOL1:= SPACE(6);
                        )

#DEFINE IS_RES  !(TYPE("pDopCode") = "C" .AND. !EMPTY(pDopCode))

// Описание аналогов TSUM
#DEFINE IS_TSUM(x) (UPPER(ALLTRIM(x)) == "TSUM" .OR. UPPER(ALLTRIM(x)) == "TSUM1" .OR. UPPER(ALLTRIM(x)) == "TSUM2" .OR. UPPER(ALLTRIM(x)) == "TSUM3")
#DEFINE DEF_TSUM TSUM,TSUM1,TSUM2,TSUM3
#DEFINE DOC_TSUM (m->TSUM := MDOC->TSUM,m->TSUM1 := MDOC->TSUM1,m->TSUM2 := MDOC->TSUM2,m->TSUM3 := MDOC->TSUM3)
#DEFINE SAV_TSUM (MDOC->TSUM := m->TSUM,MDOC->TSUM1 := m->TSUM1,MDOC->TSUM2 := m->TSUM2,MDOC->TSUM3 := m->TSUM3)
#DEFINE NIL_TSUM (m->TSUM := 0,m->TSUM1 := 0,m->TSUM2 := 0,m->TSUM3 := 0)
#DEFINE SUM_TSUM MDOC->TSUM+MDOC->TSUM1+MDOC->TSUM2+MDOC->TSUM3
#DEFINE M_SUM_TSUM m->TSUM+m->TSUM1+m->TSUM2+m->TSUM3
#DEFINE TXT_TSUM 'TSUM','TSUM1','TSUM2','TSUM3'

// Добавление в массив навески клавиш в InitList - aHotKey
#TRANSLATE HOT_CTRL(<x>,<nKey>,<bKey>,<nSort>)  =>  AADD(aHotKey\[1\],{<x>,<nKey>,<bKey>,<nSort>})
#TRANSLATE HOT_SHIFT(<x>,<nKey>,<bKey>,<nSort>) =>  AADD(aHotKey\[2\],{<x>,<nKey>,<bKey>,<nSort>})
#TRANSLATE HOT_ALT(<x>,<nKey>,<bKey>,<nSort>)   =>  AADD(aHotKey\[3\],{<x>,<nKey>,<bKey>,<nSort>})

// см. R_FIELD.CH
// Возможность применения моделей калькуляции на продажу (расход)
#DEFINE IS_MODEL   (GlobalTask $ "030905TVSRZR" .AND. pVid+pType $ MemVar->cVidModel)
// Возможность использования счетов фактур в документах прихода
#DEFINE IS_PSHFACT (GlobalTask $ "0309" .AND. pVid+pType $ MemVar->cVidPShFact)
// Возможность использования счетов фактур в документах расхода
#DEFINE IS_SHFACT   (GlobalTask $ "030905TV" .AND. pVid+pType $ MemVar->cVidShFact)
#DEFINE IS_SRSHFACT (GlobalTask $ "0309SRZR"     .AND. pVid+pType $ MemVar->cVidShFact)
#DEFINE IS_PRNSHFACT (GlobalTask $ "0309SRZR" .AND. pVid=="2")
// Алиас доступа к строкам счетов-фактур
#DEFINE S_SH_FACT   (IF(pVid+pType $ MemVar->cVidShFact,"SSH_FACT","SH_FACT"))
#DEFINE S_SH_OP     (IF(pVid+pType $ MemVar->cVidShFact,"SSH_OP","SH_OP"))

// Признак неотфактурованной поставки
#DEFINE IS_N_FACT   (pStatusF == "1")
// Исключить из счетов фактур на закупку возврат с консигнации
#DEFINE IS_NOT_PSHFACT (pVid = "1" .AND. pType = "7")

#DEFINE MEM_MODEL SUM_NDS,SUM_AKC,L_NDS,L_AKC,Q_BR,Q_NED,SN, SUM_CSH, L_CSH
#DEFINE NIL_MODEL (m->SUM_NDS := 0,m->SUM_AKC := 0,m->SUM_CSH := 0,m->Q_BR := 0,m->Q_NED := 0)
#DEFINE MAT_MODEL (m->SUM_NDS := VAL(SUBSTR(cMat,P_SUM_NDS,19)),m->SUM_AKC := VAL(SUBSTR(cMat,P_SUM_ACZ,19)),m->SUM_CSH := VAL(SUBSTR(cMat,P_SUM_CSH,19)),m->Q_BR:=VAL(SUBSTR(cMat,P_KOLBR,19)),m->Q_NED:=VAL(SUBSTR(cMat,P_KOLNED,19)),m->SN := VAL(SUBSTR(cMat,P_SUMOUTR,19))+(IF(!RetFlagNalog(1,MemVar->pModel),m->SUM_NDS,0)+IF(!RetFlagNalog(2,MemVar->pModel),m->SUM_AKC,0)+IF(!RetFlagNalog(3,MemVar->pModel),m->SUM_CSH,0)))
#DEFINE DOC_MODEL (m->SUM_NDS := MDOCM->SUM_NDS,m->SUM_AKC := MDOCM->SUM_ACZ,m->SUM_CSH := MDOCM->SUM_CSH,m->Q_BR := MDOCM->KOLBR,m->Q_NED := MDOCM->KOLNED,m->SN := MDOCM->SUMOUTR+(IF(!m->L_NDS,m->SUM_NDS,0)+IF(!m->L_AKC,m->SUM_AKC,0)+IF(!m->L_CSH,m->SUM_CSH,0)))
#DEFINE SAV_MODEL (FIELD->SUM_NDS := m->SUM_NDS,FIELD->SUM_ACZ := m->SUM_AKC,FIELD->SUM_CSH := m->SUM_CSH)

#DEFINE NIL_FLAG (m->L_NDS := .F.,m->L_AKC := .F.,m->L_CSH := .F.)
#DEFINE SET_FLAG (m->L_NDS := ilNdsFact,m->L_AKC := ilAczFact,m->L_CSH := ilCshFact)
#DEFINE MAT_FLAG (m->L_NDS := IF(pVid = "1".AND.!(GlobalTask = "05".OR.(GlobalTask='SR'.AND.TYPE('lUdalReal')='L'.AND.m->lUdalReal)),ilNdsFact,RetFlagNalog(1,MemVar->pModel)),m->L_AKC := IF(pVid = "1".AND.!(GlobalTask = "05".OR.(GlobalTask='SR'.AND.TYPE('lUdalReal')='L'.AND.m->lUdalReal)),ilAczFact,RetFlagNalog(2,MemVar->pModel)),m->L_CSH := IF(pVid = "1".AND.!(GlobalTask = "05".OR.(GlobalTask='SR'.AND.TYPE('lUdalReal')='L'.AND.m->lUdalReal)),ilCshFact,RetFlagNalog(3,MemVar->pModel)))
#DEFINE DOC_FLAG (m->L_NDS := MDOC->L_NDS,m->L_AKC := MDOC->L_ACZ,m->L_CSH := MDOC->L_CSH,GetStavka(,MDOC->L_NDS,MDOC->L_ACZ,.T.,MDOC->L_CSH))
#DEFINE SAV_FLAG (MDOC->L_NDS := IF(pVid = "1".AND.GlobalTask != "05",ilNdsFact,RetFlagNalog(1,MemVar->pModel)),MDOC->L_ACZ := IF(pVid = "1".AND.GlobalTask != "05",ilAczFact,RetFlagNalog(2,MemVar->pModel)),MDOC->L_CSH := IF(pVid = "1".AND.GlobalTask != "05",ilCshFact,RetFlagNalog(3,MemVar->pModel)))
#DEFINE SAV_REAL (m->SUM_AKC := RBOOKM->SUM_ACZ,m->SUM_CSH := RBOOKM->SUM_CSH,m->SUM_NDS := RBOOKM->SUM_NDS)
#DEFINE SET_STAVKA (GetStavka(,MDOC->L_NDS,MDOC->L_ACZ,nAdd = S_LIB_ADD,MDOC->L_CSH))

#DEFINE FACT_PR CHR(13)+CHR(10)+"{<ссылка на счет-фактуру по продаже> "
#DEFINE FACT_ZK CHR(13)+CHR(10)+"{<ссылка на счет-фактуру по продаже> "

// Точность представления цены акциза и цена НДС см. TOVAR.CH
#DEFINE T_CENA  6

// Индексы массива по НДС в книге продаж
#DEFINE _D_SET(x)  IF(ValType(x) = "A",x,{{}})
#DEFINE _D_NDS     1

#DEFINE O_LIST                 8
#DEFINE O_LIST_SAY             1
#DEFINE O_LIST_BASE            2
#DEFINE O_LIST_BASE_STRU       3
#DEFINE O_LIST_SAVE_SET        4
#DEFINE O_LIST_SAVE_KEY        5
#DEFINE O_LIST_SAVE_SET_INPUT  6
#DEFINE O_LIST_SAVE_PREFIX     7
#DEFINE O_LIST_SAVE_SEEK       8

#DEFINE SET_VAR  ;
   (;
   ;//MemVar->NDS:=GetTax(pDate),;   //iMGRUP->NDS,; // victor история НДС
   MemVar->CSH:=iMGRUP->CSH,;
   MemVar->SFN:=iMGRUP->SFN,;
   MemVar->PA:=iMGRUP->PA,;
   MemVar->TP:=iMGRUP->TP,;
   MemVar->TN:=iMGRUP->TN,;
   MemVar->EU:=iMGRUP->EU,;
   MemVar->DOP1:=iMGRUP->DOP1,;
   MemVar->DOP2:=iMGRUP->DOP2,;
   MemVar->DOP3:=iMGRUP->DOP3,;
   MemVar->PP1:=0,;
   MemVar->PP2:=0,;
   MemVar->ST:=iMLABEL->Koef,;
   MemVar->ST1:=iMLABEL->Koef1;
   )

// Параметры Get объекта передаваемого в GetBlock
#DEFINE HEAD_POZ       oGet:name[3]   // позиция в aIn
#DEFINE HEAD_BAK       oGet:name[5]   // предыдущее значение aIn
#DEFINE HEAD_LOOP      oGet:name[2,7] // флаг повторного запуска ReadModal()
                                      // без выполнения bPostRead,bPostGet
#DEFINE HEAD_SET_GET   oGet:name[2,8] // позиция начального позиционирования
                                      // при прорисовке GetList


#DEFINE NAME_K1   "партнерам"  // "контрагентам"
#DEFINE NAME_K2   "Партнер"    // "Контрагент"
#DEFINE NAME_K3   "Партнер"    // "контрагент"

#DEFINE NAME_NDS    {"НДС,НП не вкл.,акциз вкл. в цену пост.","НДС,акциз вкл.,НП не вкл.в цену пост. ","Все налоги исключены из цены поставки ","НП,НДС и акциз включены в цену пост.  "}
#DEFINE NAME_KREDIT {"Используется счет-кредитора","Не используется счет-кредитора"}

#DEFINE IS_MOVES_UHET  pVid+pType = "1#"

#DEFINE IS_RESERV (TYPE("AllowRed_") = "U" .OR. !m->AllowRed_ .OR. MKART->KolRes > 0)

// Для калькуляции
#DEFINE LEN_CALC      2
#DEFINE CALC_RETURN   1
#DEFINE CALC_POZ_GET  2

// Для коррекции резерва
#DEFINE KOL_RES      (FIELD->KOL-MIN(FIELD->KOL1+FIELD->KOL10,FIELD->KOL))
#DEFINE KOL_RES_SUM  (FIELD->SumOut-IF(FIELD->KOL1+FIELD->KOL10 < FIELD->KOL,FIELD->Sum1+FIELD->Sum10,FIELD->SumOut))
#DEFINE KOL_RES_SUM0 (FIELD->SumOut-IF(FIELD->KOL1+FIELD->KOL10 < FIELD->KOL,FIELD->Sum1,FIELD->SumOut))

#DEFINE KOL_T_RES      "FIELD->KOL-MIN(FIELD->KOL1+FIELD->KOL10,FIELD->KOL)"
#DEFINE KOL_T_RES_SUM  "FIELD->SumOut-IF(FIELD->KOL1+FIELD->KOL10 < FIELD->KOL,FIELD->Sum1-FIELD->Sum10,FIELD->SumOut)"


#DEFINE __PALIAS (IF(EMPTY(GetMat(MemVar->n,IF(GlobalTask = "05",Q_PARTIA,P_PARTIA-2),L_PARTIA)) .OR. MemVar->PricePart = 1,'MLABEL','SPR_PART'))
#DEFINE __PSEEK_CENA IF(EMPTY(GetMat(MemVar->n,IF(GlobalTask = "05",Q_PARTIA,P_PARTIA-2),L_PARTIA)) .OR. MemVar->PricePart = 1,MLabel->(DBSEEK(UPPER(GetMat(MemVar->n,IF(GlobalTask = "05",84,79),18)))),SPR_PART->(DBSEEK(UPPER(GetMat(MemVar->n,IF(GlobalTask = "05",84,79),18)+GetMat(MemVar->n,IF(GlobalTask = "05",Q_PARTIA,P_PARTIA-2),L_PARTIA)))))

#DEFINE INS_POZ(nPozCol) STR(++nPozCol,2,0)


#DEFINE DEF_VID_OPL  {;
                      {"1","расч/счет "},;
                      {"2","нал/оплата"},;
                      {"3","бартер    "},;
                      {"4","прочие    "};
                      }

// Накопительные переменные в документе (см. InitSumFact() и др.)
#DEFINE _SUM_OUT_DOC aSumModel := {},pSumFact := 0,pSumOutR := 0,pSumma := 0,pSumOut := 0,pKol := 0,pSumR := 0,pSumRN := 0

#DEFINE IS_ROUND_CENA .F.

// Определяет возможность автоматической генерации карточки партии
#DEFINE IS_AUTO_PART  ((GlobalTask $ "0309SRZR" .AND. pVid = "1") .OR. GlobalTask $ "TV05") .AND. inGenPAdd = 2 .AND. AddPart()

#TRANSLATE REAL_TIME(<nSet>) => SetRealTimeDoc(<nSet>,GlobalTask $ "0309",IF(GlobalTask $ "0309ZR".OR.(GlobalTask='SR'.AND.(TYPE('lUdalReal')#'L'.OR.!m->lUdalReal)),IF(TYPE("pPro")!="U",MemVar->pPro,NIL),IF(TYPE("pNNoper")!="U",MemVar->pNNoper,NIL)),IF(TYPE("aWindow")=="A".AND.LEN(aWindow)>1.AND.LEN(aWindow\[2\])>6,aWindow\[2\]\[7\]:cargo\[1\],{}))
#TRANSLATE REAL_W_TIME(<nSet>) => SetRealTimeDoc(<nSet>,GlobalTask $ "0309",IF(GlobalTask $ "0309ZR".OR.(GlobalTask='SR'.AND.(TYPE('lUdalReal')#'L'.OR.!m->lUdalReal)),IF(TYPE("pPro")!="U",MemVar->pPro,NIL),IF(TYPE("pNNoper")!="U",MemVar->pNNoper,NIL)),aWork)

#DEFINE __ROUND_KOL       4
#DEFINE __ROUND_CENA      5

#DEFINE _ZAPL_ON_R        IF(iMLABEL->ED==SH_OP->ED,0,SH_OP->R)  //Заплатка на кривые счета-фактуры

//z0ne MBP begin
#DEFINE _IS_MBP (_IS_BUDGET.AND.(GlobalTask=="09"))
//z0ne MBP end
