Advertisement
Zmiter

Untitled

Aug 23rd, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include FRData.vih
  2. #include FeeSigners.vih
  3. #include FRRecordDefinition.vih
  4. #Component "L_BASEDOC"
  5. Interface FRPrintInvt 'Печать СФ в FastReport' EscClose, Cyan;
  6. Show at (,,64,6);
  7. Const
  8.  FormatSum : String = '666666666.88';
  9.  FormatKol : String = '666666666.899';
  10. End;
  11.  
  12. Table struct tbSPInvPack   (
  13.                              NameGroupMC : String
  14.                             ,NameGroupMCEN : String
  15.                             ,BARKOD      : String
  16.                             ,Kolvo       : Double
  17.                             ,PriceNoNDS  : Double
  18.                             ,NDS         : String
  19.                             ,SumWithNDS  : Double
  20.                             ,SumNoNDS    : Double
  21.                             ,SumNDS      : Double
  22.                             ,COrigin     : String
  23.                             )
  24.                  With index (
  25.                              tbSPInvPack_00 = BARKOD
  26.                             );
  27.  
  28. Table struct tbGrSPInv      (
  29.                              NumGroupMC      : Word
  30.                             ,NameGroupMC     : String
  31.                             ,NameGroupMCEN   : String
  32.                             ,NameGroupMCPack : String
  33.                             ,NameGroupMCPackEN : String
  34.                             ,TNVED           : String
  35.                             ,ShortTNVED_MC   : String
  36.                             ,TNVED_MC        : String
  37.                             ,enTNVED_MC      : String
  38.                             ,EdOtp           : String
  39.                             ,EdOtpEN         : String
  40.                             ,EdUch           : String
  41.                             ,EdUchEN         : String
  42.                             ,EDIzm           : String
  43.                             ,EDIzmEN         : String
  44.                             ,Kolvo           : Double
  45.                             ,Kolvo1          : Double
  46.                             ,Packages        : Double
  47.                             ,NetW            : Double
  48.                             ,GrossW          : Double
  49.                             ,OpisMC          : String
  50.                             ,pRow            : Double
  51.                             ,TNVEDShortName  : String
  52.                             ,ob_p            : Double
  53.                             )
  54.                  With index (
  55.                             tbGrSPInv_00 = NumGroupMC
  56.                             // tbGrSPInv_00 = ShortTNVED_MC
  57.                             );
  58. Table struct tbSPInv (
  59.                              Name        : String
  60.                             ,NameEN      : String
  61.                             ,TNVED       : String
  62.                             ,SokrTNVED   : String
  63.                             ,Kolvo       : String
  64.                             ,cGroupMC    : Comp
  65.                             ,EdOtp       : String
  66.                             ,KoefOtp     : Double
  67.                             ,EdUch       : String
  68.                             ,EDIzm       : String
  69.                             ,EDIzmEN     : String
  70.                             ,PriceNoNDS  : String
  71.                             ,SumNoNDS    : String
  72.                             ,SumNDS      : String
  73.                             ,NDS         : String
  74.                             ,SumWithNDS  : String
  75.                             ,COrigin     : String
  76.                             ,NumGroupMC  : Word
  77.                             ,NameGroupMC : String
  78.                             ,OBOZN       : String
  79.                             ,volume      : Double
  80.                             ,kBoxMc      : Double
  81.                             ,kAktMc      : Double
  82.                             ,ob_p        : Double
  83.                             )
  84.                  With index (
  85.                              tbSPInv_00 = Name
  86.                             ,tbSPInv_01 = NumGroupMC
  87.                             );
  88.  
  89. Table struct tPickDoc (
  90.                              cRec    : Comp
  91.  
  92.                             )
  93.                  With index (
  94.                              tPickDoc_00 = cRec
  95.                             );
  96.  
  97. Create view vFRPrintInv
  98. Var
  99. FReport, grRowCount    : LongInt;
  100. ReportName : String;
  101. FRSuccess, FormDone, PrSopr, PrZalog, PrUkraine, PrUzbek  : Boolean;
  102. GrossWPackPL, GrossWPackSI, WPackSI, WPack, GrossWPackSeat, WPackPL, KolPackPL, KolPackSI,
  103. TotalSumNoNDS, TotalSumNoNDSEngl,
  104. TotalSumNDS, TotalSumNDSEngl,
  105. TotalSumWithNDS, TotalSumWithNDSEngl, SumZalog, mSid, wBrikPallets, colBrikPod : Double;
  106. i : Integer;
  107. dPackages_1,  dPackages_2,  dPackages_3,  dPackages_4,
  108. dPackages_5,  dPackages_6,  dPackages_7,  dPackages_8,
  109. dPackages_9,  dPackages_10, dPackages_11, dPackages_12,
  110. dPackages_13, dPackages_14, dPackages_15, dPackages_16,
  111. vPackages, PalletSan, PalletPlit, pPallet,kolPalletKir,GrossWPallet,GrossWPalletS, vesPod, packet: Double;
  112. TabNum     : LongInt;
  113. ccBaseDoc, ccPerson, GroupFeeSign, CVAL  : Comp;
  114. MyOrg,  IndexMyOrg, UNNMyOrg, AddrMyOrg, AddrMyOrgTotal,
  115. OrgGruzPol,OrgGruzPolEngl, IndexGruzPol, AddrGruzPol, AddrGruzPolTotal, AddrGruzPolTotalEngl,
  116. OrgGruzOtpr, IndexGruzOtpr, AddrGruzOtpr, AddrGruzOtprTotal, SpMCName,
  117. BuyOrg, IndexBuyOrg, UNNBuyOrg, AddrBuyOrg, AddrBuyOrgTotal, AddrBuyOrgTotalEngl, NumSoprRailway,
  118. vCurrency, vSimvolV ,Container, NumVagon, StationOtpr,StationOtprEngl, NumDatePlat, DateDoc, NumSopr,
  119. ZagPrice,ZagPriceEN, NamePerson, NameDocSF, NameDocSFEN, DelConditions, DelConditionsEngl,
  120. TNVEDShort, TNVEDShortName,Transport, cityTo,cityFrom , telGruzPol: String;
  121. iFeeSigners : FeeSigners;
  122. DialogParam : frxChoiceDialogParam;
  123. //Реквизиты Банка
  124. OptInv, ReportId, nresult, nresult2 : Word;
  125. PrMyBankSwift, PrBankCorr, InclSeat, setSeat : Boolean;
  126. pr_obl ,pr_gl ,pr_ng ,pr,pr_sanizd, isPrintReqiz, showPasport, showSertConf, showSertOrigin, showDeclConf: Integer;
  127. MyBankName, MyBankAddr, MyBankSwift, MyBankAcc, CorrBankAcc, CorrBankName, CorrBankSwift, sANamBankMy, sExClNam, sExClNamEngl,
  128. custName, custCountry, custAddress : String;
  129.  
  130. As select *
  131. From
  132. BaseDoc               (ReadOnly),
  133. KatOrg    MyOrg       (ReadOnly),
  134. KatOrg    KatOrgBuy   (ReadOnly),
  135.  
  136. KatOrg    KatOrgOtpr  (ReadOnly),
  137. KatOrg    KatOrgPol   (ReadOnly),
  138. KatState  KatStatePol (ReadOnly),         //Каталог стран
  139. KatCity   KatCityPol  (ReadOnly),         //Каталог городов
  140. StepDoc               (ReadOnly),
  141. KatSopr               (ReadOnly),         //Шапка накладных и пр.
  142. SpSopr                (ReadOnly),
  143. Dogovor               (ReadOnly),
  144. KlVal                 (ReadOnly),
  145. SpStep                (ReadOnly),
  146. Dores                 (ReadOnly),
  147. KatPodr               (ReadOnly),
  148. KatMC                 (ReadOnly),
  149. KatMC     KatMCPack   (ReadOnly),
  150. KlPrice               (ReadOnly),
  151. KatOtpEd              (ReadOnly),
  152. KatOtpEd  KatOtpEdPack (ReadOnly),
  153. KatOtpEd KatOtpEdBox     (ReadOnly),     //для определения объемов
  154. KatOtpEd KatOtpEdAkt     (ReadOnly),     //для определения объемов
  155. KatED                 (ReadOnly),
  156. KatBank   KatBankMy   (ReadOnly),
  157. KatBank   KatBankCorr (ReadOnly),
  158. KatB      KatBMy      (ReadOnly),
  159. AttrNam   ANamCont    (ReadOnly),
  160. AttrNam   ANamSreds   (ReadOnly),
  161. AttrNam   ANamCO      (ReadOnly),
  162. AttrNam   ANamKatBMy  (ReadOnly),
  163. AttrNam   ANamCorr    (ReadOnly),
  164. AttrNam   ANamTransp  (ReadOnly),
  165. AttrNam   ANamDest    (ReadOnly),
  166. AttrNam   ANamTrailer (ReadOnly),
  167. AttrNam   ANamAvto    (ReadOnly),
  168. AttrNam   ANamCargo   (ReadOnly),
  169.  
  170. AttrNam   ANamKatOrgName (ReadOnly),
  171. AttrVal   AValKatOrgName (ReadOnly),
  172.  
  173. AttrNam   ANamKatOrgAddr (ReadOnly),
  174. AttrVal   AValKatOrgAddr (ReadOnly),
  175.  
  176.  
  177. AttrNam   ANamKatOrgAddrEngl (ReadOnly),
  178. AttrVal   AValKatOrgAddrEngl (ReadOnly),
  179.  
  180.  
  181. AttrVal   AValTrailer (ReadOnly),
  182. AttrVal   AValAvto    (ReadOnly),
  183. AttrVal   AValBackCargo (ReadOnly),
  184. //AttrNam   ANnumCMR    (ReadOnly),
  185.  
  186. AttrVal   AValCont    (ReadOnly),
  187. AttrVal   AValSreds   (ReadOnly),
  188. AttrVal   AValCO      (ReadOnly),
  189. AttrVal   AValKatBMy  (ReadOnly),
  190. AttrVal   AValCorr    (ReadOnly),
  191. AttrVal   AValTransp  (ReadOnly),
  192. AttrVal   AValDest    (ReadOnly),
  193. //AttrVal   AVnumCMR    (ReadOnly),
  194.  
  195. AttrNam   ANamTipOgr (ReadOnly),
  196. AttrVal   AValTipOgr (ReadOnly),
  197.  
  198. BaseFin               (ReadOnly),
  199. PlPor                 (ReadOnly),         //Платежные документы
  200. TTNDoc                (ReadOnly),
  201. shipment              (ReadOnly),
  202. TipOtg                (ReadOnly),         //Каталог базисов поставки
  203. Marpunkt              (ReadOnly),         //Справочник пунктов маршрутов
  204. Persons               (ReadOnly),
  205. Appointments          (ReadOnly),         //Назначения и перемещения
  206. Catalogs              (ReadOnly),         //Каталоги
  207. ExClassName ExClNamBD (ReadOnly),         //Внешние классификаторы 2
  208. ExClassSeg  ExClSegBD (ReadOnly),         //Сегменты внешнего классификатора
  209. ExClassVal  ExClValBD (ReadOnly),         //Классификационные коды
  210.  
  211. ExClassName ExClNamBDEngl (ReadOnly),         //Внешние классификаторы 2
  212. ExClassSeg  ExClSegBDEngl (ReadOnly),         //Сегменты внешнего классификатора
  213. ExClassVal  ExClValBDEngl (ReadOnly),       //Классификационные коды
  214.  
  215.  
  216. CATALPSD    ENGL      (ReadOnly),
  217. tbGrSPInv   (tbGrSPInv_00),
  218. tbSPInv     (tbSPInv_00),
  219. tbSPInvPack (tbSPInvPack_00),
  220. tPickDoc (tPickDoc_00)
  221. Where
  222. ((
  223.   tbGrSPInv.NumGroupMC == tbSPInv.NumGroupMC and
  224.  
  225.   coGetTune('MYORG') == MyOrg.NRec       and
  226.   //ccBaseDoc          == BaseDoc.NRec     and
  227.    //tPickDoc.cRec       == BaseDoc.NRec  and
  228.    BaseDoc.NRec       == tPickDoc.cRec  and
  229.  
  230.   BaseDoc.cOrg       == KatOrgBuy.NRec   and
  231.  
  232.   BaseDoc.CGROTPR    == KatOrgOtpr.nRec  and
  233.  
  234.   BaseDoc.CGRPOL     == KatOrgPol.nRec   and
  235.   KatOrgPol.cState   == KatStatePol.NRec and
  236.   KatOrgPol.cCity    == KatCityPol.NRec  and
  237.  
  238.   BaseDoc.NRec       == StepDoc.cBaseDoc and
  239.   StepDoc.NRec       == KatSopr.cStepDoc and
  240.   BaseDoc.cDogovor   == Dogovor.NRec     and
  241.   BaseDoc.cVal       == KlVal.NRec       and
  242.  
  243.   BaseDoc.cMyBank    == KatBankMy.NRec    and
  244.   KatBankMy.cBank    == KatBMy.NRec       and
  245.  
  246.  //название организации грузополучателя на английском, если надо основное на русском  19-03-2019
  247.   Word(1418)      == ANamKatOrgName.wTable and
  248.   'Падеж творительный' == ANamKatOrgName.Name and
  249.   Word(1418)       == AValKatOrgName.wTable and
  250.   KatOrgPol.nRec     == AValKatOrgName.cRec   and
  251.   ANamKatOrgName.nrec == AValKatOrgName.cAttrNam and
  252.  
  253.  
  254.   //Юридический адрес грузополучателя на английском, если надо основное на русском   19-03-2019
  255.    Word(1418)      == ANamKatOrgAddr.wTable and
  256.   'Юридический адрес' == ANamKatOrgAddr.Name and
  257.   Word(1418)       == AValKatOrgAddr.wTable and
  258.   KatOrgPol.nRec     == AValKatOrgAddr.cRec   and
  259.   ANamKatOrgAddr.nrec == AValKatOrgAddr.cAttrNam and
  260.  
  261.  
  262.  
  263.   //адрес организации на английском
  264.   Word(1418)      == ANamKatOrgAddrEngl.wTable and
  265.   'Адрес English' == ANamKatOrgAddrEngl.Name and
  266.   Word(1418)      == AValKatOrgAddrEngl.wTable and
  267.   KatOrgBuy.NRec    == AValKatOrgAddrEngl.cRec   and
  268.   ANamKatOrgAddrEngl.nrec == AValKatOrgAddrEngl.cAttrNam and
  269.  
  270.  
  271.    //Базис поставки ENGL
  272.   Word(1727)      == ANamTipOgr.wTable and
  273.   'Название2'     == ANamTipOgr.Name and
  274.   Word(1727)      == AValTipOgr.wTable and
  275.   TipOtg.nRec     == AValTipOgr.cRec   and
  276.   ANamTipOgr.nrec == AValTipOgr.cAttrNam and
  277.  
  278.  
  279.   Word(1422)         == ANamKatBMy.wTable and
  280.   sANamBankMy        == ANamKatBMy.Name   and
  281.   Word(1422)         == AValKatBMy.wTable and
  282.   KatBMy.NRec        == AValKatBMy.cRec   and
  283.   ANamKatBMy.NRec    == AValKatBMy.cAttrNam and
  284.   //Банк-корреспондент
  285.   Word(1102)         == ANamCorr.wTable and
  286.   'Банк корреспондент' == ANamCorr.Name   and
  287.   Word(1102)         == AValCorr.wTable   and
  288.   BaseDoc.NRec       == AValCorr.cRec     and
  289.   ANamCorr.nrec      == AValCorr.cAttrNam and
  290.   AValCorr.vComp     == KatBankCorr.NRec  and
  291.  
  292.   StepDoc.NRec       == SpStep.cStepDoc  and
  293.   //SpStep.cPriceList /== KlPrice.NRec     and
  294.   SpStep.cPriceList == KlPrice.NRec     and
  295.  
  296.   Word(1102)         == ANamCont.wTable  and
  297.   'Контейнер'        == ANamCont.Name    and
  298.   Word(1102)         == AValCont.wTable  and
  299.   BaseDoc.NRec       == AValCont.cRec    and
  300.   ANamCont.NRec      == AValCont.cAttrNam and
  301.  
  302.   Word(1102)         == TTNDoc.WTABLE    and
  303.   BaseDoc.NRec       == TTNDoc.CDOC      and
  304.   TTNDoc.cTipOtg     == TipOtg.NRec      and
  305.   TTNDoc.cPunktr     == Marpunkt.NRec    and
  306.  
  307.   Word(1109)         == ANamSreds.wTable and
  308.   'Средства пакетирования' ==  ANamSreds.Name and
  309.   Word(1109)         == AValSreds.wTable and
  310.   KatSopr.NRec       == AValSreds.cRec   and
  311.   ANamSreds.nrec     == AValSreds.cAttrNam and
  312.  
  313.    //СПОСОБ ТРАНСПОРТИРОВКИ
  314.   Word(1150)        == ANamTransp.wTable and
  315.   'СПОСОБ ТРАНСПОРТИРОВКИ' ==  ANamTransp.Name and
  316.   Word(1150)        == AValTransp.wTable and
  317.   TTNDoc.NRec       == AValTransp.cRec   and
  318.   ANamTransp.nrec   == AValTransp.cAttrNam and
  319.  
  320.      //Станция (место) назначения:
  321.   Word(1150)        == ANamDest.wTable and
  322.   'АДРЕС ПУНКТА РАЗГРУЗКИ' ==  ANamDest.Name and
  323.   Word(1150)        == AValDest.wTable and
  324.   TTNDoc.NRec       == AValDest.cRec   and
  325.   ANamDest.nrec   == AValDest.cAttrNam and
  326.  
  327.    //ВОДИТЕЛЬ
  328.    Word(1150)      == ANamTrailer.wTable and
  329.   'ВОДИТЕЛЬ'       == ANamTrailer.Name and
  330.   Word(1150)       == AValTrailer.wTable and
  331.   TTNDoc.NRec      == AValTrailer.cRec   and
  332.   ANamTrailer.nrec == AValTrailer.cAttrNam and
  333.  
  334.  
  335.   //АВТОМОБИЛЬ
  336.    Word(1150)     == ANamAvto.wTable and
  337.   'АВТОМОБИЛЬ'    ==  ANamAvto.Name and
  338.   Word(1150)      == AValAvto.wTable and
  339.   TTNDoc.NRec     == AValAvto.cRec   and
  340.   ANamAvto.nrec   == AValAvto.cAttrNam and
  341.  
  342.     //ПРИЦЕП1
  343.    Word(1150)    == ANamCargo.wTable and
  344.   'ПРИЦЕП1'      == ANamCargo.Name and
  345.   Word(1150)     == AValBackCargo.wTable and
  346.   TTNDoc.NRec    == AValBackCargo.cRec   and
  347.   ANamCargo.nrec == AValBackCargo.cAttrNam and
  348.  
  349.   BaseDoc.NRec       == BaseFin.cBaseDoc and
  350.   BaseFin.cPlPor     == PlPor.NRec       and
  351.  
  352.   //Классификатор Способ закупки
  353.   Word(1102)          == ExClNamBD.wTable    and
  354.   sExClNam            == ExClNamBD.Name      and
  355.   ExClNamBD.Classcode == ExClValBD.Classcode and
  356.   Word(1102)          == ExClValBD.wTable    and
  357.   BaseDoc.NRec        == ExClValBD.cRec      and
  358.   ExClValBD.cClassSeg == ExClSegBD.NRec      and
  359.  
  360.  
  361.   //Классификатор Способ закупки  English
  362.   Word(1102)          == ExClNamBDEngl.wTable    and
  363.   sExClNamEngl        == ExClNamBDEngl.Name      and
  364.   ExClNamBDEngl.Classcode == ExClValBDEngl.Classcode and
  365.   Word(1102)          == ExClValBDEngl.wTable    and
  366.   BaseDoc.NRec        == ExClValBDEngl.cRec      and
  367.   ExClValBDEngl.cClassSeg == ExClSegBDEngl.NRec      and
  368.  
  369.  
  370.  
  371.   //Спецификация
  372.   Word(1)             == SpStep.PrMC         and
  373.   SpStep.cMCUsl       == KatMC.NRec          and
  374.   KatMC.cGroupMC      == GroupMC.NRec        and
  375.  
  376.   SpStep.cOtpEd       == KatOtpEd.NRec       and
  377.   KatMC.cED           == KatED.NRec          and
  378.  
  379.   KatSopr.NRec        == SpSopr.cSopr        and
  380.   SpSopr.cMCUsl       == KatMCPack.NRec      and
  381.  
  382.   SpStep.NRec         == Dores.cspstep       and
  383.   Dores.cpodr         == KatPodr.NRec        and
  384.   //поддоны
  385.   SpStep.cMCUsl       == KatOtpEdPack.cMCUsl and
  386.   Word(1)             == KatOtpEdPack.PrMC   and
  387.   'Поддон'            == KatOtpEdPack.Name   and
  388.  
  389.   //Ящик                                          // коэффициент ящиков (для расчета объема)
  390.   SpStep.cMCUsl       == KatOtpEdBox.cMCUsl and
  391.   Word(1)             == KatOtpEdBox.PrMC   and
  392.   'Ящик'              == KatOtpEdBox.Name   and
  393.  
  394.   //Активная ед измерения                         // коэффициент активной ед. измерения  (для расчета объема)
  395.   SpStep.cMCUsl       == KatOtpEdAkt.cMCUsl and
  396.   Word(1)             == KatOtpEdAkt.PrMC   and
  397.   Word(1)              == KatOtpEdAkt.AKT   and
  398.  
  399.   Word(1411)          == ANamCO.wTable       and
  400.   'Страна происхождения' ==  ANamCO.Name     and
  401.   Word(1411)          == AValCO.wTable       and
  402.   KatMC.NRec          == AValCO.cRec         and
  403.   ANamCO.NRec         == AValCO.cAttrNam     and
  404.   //подписанты
  405.   'С'                == Persons.iSEMPLOYEE       and
  406.   TabNum             == Persons.TabNMB           and
  407.   ccPerson           == Appointments.PERSON      and
  408.   Cur_Date          >>= Appointments.APPOINTDATE and
  409.   Appointments.Post  == Catalogs.NRec and
  410.   TTNDOC.CSHIPMENT == SHIPMENT.NREC  and
  411.   KATMC.NREC == ENGL.CREC
  412.  
  413. ))
  414.  And Appointments.lprizn = 0
  415.  and Appointments.TYPEMOVE = 0
  416.  
  417. ;
  418.  
  419. Var
  420.  arSign_Name  : Array [1..3] of String;
  421.  arSign_Posit : Array [1..3] of String;
  422.  arPackages   : Array [1..16] of Double;
  423.  
  424. Procedure ArrayToVar;
  425. {
  426.  dPackages_1  := arPackages[1];
  427.  dPackages_2  := arPackages[2];
  428.  dPackages_3  := arPackages[3];
  429.  dPackages_4  := arPackages[4];
  430.  dPackages_5  := arPackages[5];
  431.  dPackages_6  := arPackages[6];
  432.  dPackages_7  := arPackages[7];
  433.  dPackages_8  := arPackages[8];
  434.  dPackages_9  := arPackages[9];
  435.  dPackages_10 := arPackages[10];
  436.  dPackages_11 := arPackages[11];
  437.  dPackages_12 := arPackages[12];
  438.  dPackages_13 := arPackages[13];
  439.  dPackages_14 := arPackages[14];
  440.  dPackages_15 := arPackages[15];
  441.  dPackages_16 := arPackages[16];
  442. }
  443.  
  444. Procedure VarToArray;
  445. {
  446.  arPackages[1]  := dPackages_1;
  447.  arPackages[2]  := dPackages_2;
  448.  arPackages[3]  := dPackages_3;
  449.  arPackages[4]  := dPackages_4;
  450.  arPackages[5]  := dPackages_5;
  451.  arPackages[6]  := dPackages_6;
  452.  arPackages[7]  := dPackages_7;
  453.  arPackages[8]  := dPackages_8;
  454.  arPackages[9]  := dPackages_9;
  455.  arPackages[10] := dPackages_10;
  456.  arPackages[11] := dPackages_11;
  457.  arPackages[12] := dPackages_12;
  458.  arPackages[13] := dPackages_13;
  459.  arPackages[14] := dPackages_14;
  460.  arPackages[15] := dPackages_15;
  461.  arPackages[16] := dPackages_16;
  462. }
  463.  
  464. Procedure GetArrayPackages;
  465. {
  466.   Case KatMC.TNVED of
  467.    '6907211000': arPackages[4] += vPackages;
  468.    '6907219001': arPackages[7] += vPackages;
  469.    '6907219003': arPackages[6] += vPackages;
  470.    '6907219009': arPackages[5] += vPackages;
  471.    '6907221000': arPackages[9] += vPackages;
  472.    '6907229009': arPackages[8] += vPackages;
  473.    '6907239005': arPackages[2] += vPackages;
  474.    '6907239009': arPackages[1] += vPackages;
  475.    '6907309001': arPackages[3] += vPackages;
  476.    '7016100000': arPackages[14] += vPackages;
  477.    //Не входят в группу
  478.    '6910100000': arPackages[10] := KolPackSI;
  479.    '3922200000': {If not setSeat {
  480.                   setSeat := true  //признак выбрана ли опция
  481.                   If Message('Код ТНВЭД: 3922200000 (сиденья). Выделить грузоместо под сиденье?',YesNo) = cmYes
  482.                     {
  483.                       InclSeat := true //признак ответа yes
  484.                       KolPackSI      := KolPackSI-1; //санизделия
  485.                       arPackages[11] := 1;           //сиденья
  486.                       pr := 1;
  487.                     } //end  Message
  488.                     else if  InclSeat{
  489.                       KolPackSI      := KolPackSI-1; //санизделия
  490.                       arPackages[11] := 1;           //сиденья
  491.                       pr := 1;
  492.                     }
  493.         }  //end  If not setSeat
  494.                  }
  495.    '8481599000': { If Message('Код ТНВЭД: 8481599000 (арматура). Выделить грузоместо под арматуру?',YesNo) = cmYes
  496.                     {
  497.                      KolPackSI      :=KolPackSI-1; //арматура
  498.                      arPackages[12] := 1;
  499.                      GrossWPackSI   := GrossWPackSI - WPackSI;
  500.                     }
  501.                   }
  502.    '6904100000':  {
  503.                    arPackages[13] := 0;
  504.                   }
  505.  
  506.    '3207408000': arPackages[15] += vPackages;
  507.   End;
  508.   //message(arPackages[1]);
  509.  
  510. }
  511.  
  512. //Запрос перечня включенных документов
  513. Procedure PrintSopr;
  514. {
  515.      if (optInv = Word(2)) //Диалоговые окна CMR
  516.      {
  517.       If Message('Внести паспорт в перечень сопроводительных документов?',YesNo)=cmYes
  518.         showPasport := 1;
  519.       Else
  520.         showPasport := 0;
  521.  
  522.       If Message('Внести сертификат соответствия в перечень сопроводительных документов?',YesNo)=cmYes
  523.         showSertConf := 1;
  524.       Else
  525.         showSertConf := 0;
  526.  
  527.       If Message('Внести сертификат страны происхождения в перечень сопроводительных документов?',YesNo)=cmYes
  528.         showSertOrigin := 1;
  529.       Else
  530.         showSertOrigin := 0;
  531.  
  532.      If Message('Внести декларацию соответствия в перечень сопроводительных документов?',YesNo)=cmYes
  533.         showDeclConf := 1;
  534.       Else
  535.         showDeclConf := 0;
  536.      }
  537. }   //PrintSopr
  538.  
  539. procedure alerNrec(kodNrec: MasVidSopr);
  540. {
  541.  
  542.   for (i := 1; i<= count (kodNrec); i := i+1){
  543.      ClearBuffer(#tPickDoc);
  544.      if (kodNrec[i] <> comp(0) and  kodNrec[i] <> 0) {
  545.        tPickDoc.cRec := kodNrec[i];
  546.         message('внутри цикла заполнения tPickDoc '+ kodNrec[i])
  547.      }
  548.      Insert current tPickDoc;
  549.      message('alerNrec inserted to tPickDoc '+ kodNrec[i])
  550.   }
  551.  
  552. };
  553.  
  554. //берет готовый или в случае отсутствия генерирует номер CMR
  555. function addCmrNum : String;
  556. { if (optInv = Word(2))    //CMR
  557.      {
  558.        var stmt    : LongInt;
  559.        result := 'XXXX'    //так было в старом ресурсе
  560.        stmt := sqlAllocStmt;
  561.        sqlBindCol(stmt, 1, nresult);
  562.        sqlBindParam(stmt, 1, basedoc.nrec);
  563.        sqlExecStmt (stmt, 'select top 1 F_SEQ_DO_TD_PLITKA (?) from basedoc');
  564.        if sqlFetch(stmt) = tsOk {
  565.           nresult2 := string(nresult);
  566.           sqlFreeStmt(stmt);
  567.           result := nresult2}
  568.      }
  569.  
  570. }  //addCmrNum
  571.  
  572. //определяем условия оплаты
  573.  Function getPaymCond(shipmentName : String) : String;
  574.  {
  575.     var pos_cond : integer;
  576.     if (instr('условиях', shipmentName)<>0){
  577.         pos_cond:= instr('условиях',shipmentName);
  578.         Result := trim(substr(shipmentName,pos_cond+8,length(shipmentName)-pos_cond+1));
  579.         } /*else {message('Не указаны условия поставки по международной классификации.');
  580.                  Result := ''} */ //включить если попросят
  581.  } //getPaymCond
  582.  
  583. //определяем краткие имена кодов для вывода в CMR
  584. Function nameMcCMR(kodTNVED : String) : String;
  585. {
  586.   Var   TNVEDShortName : String;
  587.  
  588. Case kodTNVED of
  589.       '6907239009': TNVEDShortName := 'Плитки глаз.';
  590.       '6907239005': TNVEDShortName := 'Плитки глаз.';
  591.       '6907309001': TNVEDShortName := 'Ковры мозаич.';
  592.       '6907211000': TNVEDShortName := 'Плитки неглаз.';
  593.       '6907219009': TNVEDShortName := 'Плитки глаз.';
  594.       '6907219003': TNVEDShortName := 'Плитки глаз.';
  595.       '6907219001': TNVEDShortName := 'Плитки глаз.';
  596.       '6907229009': TNVEDShortName := 'Плитки глаз.';
  597.       '6907221000': TNVEDShortName := 'Плитки неглаз.';
  598.       '6910100000': TNVEDShortName := 'Санизделия';
  599.       '3922200000': TNVEDShortName := 'Сидения';
  600.       '8481599000': TNVEDShortName := 'Арматура';
  601.       '6904100000': TNVEDShortName := 'Кирпич керамический';
  602.       '7016100000': TNVEDShortName := 'Изд. из стекла';
  603.       '3207408000': TNVEDShortName := 'Фритта';
  604.       '7324900000','7318190009','3926909709': tbGrSPInv.TNVEDShortName := 'Крепление';
  605.        else
  606.       TNVEDShortName := 'новый код ТНВЭД';
  607.      End;
  608. Result     := TNVEDShortName;
  609. }  //nameMcCMR
  610.  
  611. //функция склонения слова "мест"
  612. Function declensionPackages(kolPackages : Word) : String;
  613. {
  614.   Var  PackagesDec : string;
  615.   var  strkolPackages: string;
  616.  
  617.    if (Length(kolPackages)>=2)
  618.     strkolPackages:=substr(kolPackages,Length(kolPackages)-1,Length(kolPackages));
  619.     else
  620.      {
  621.     strkolPackages:=(kolPackages);
  622.    }
  623.  
  624.      if     (strkolPackages =  11 or
  625.      strkolPackages =  12 or
  626.      strkolPackages =  13  or
  627.      strkolPackages =  14 )   {
  628.       PackagesDec := 'мест'
  629.      }  else     {
  630.       strkolPackages := substr(strkolPackages,Length(strkolPackages),1);
  631.  
  632.         Case (strkolPackages) of
  633.   1       : { PackagesDec := 'место'; }
  634.   2       : { PackagesDec := 'места'; }
  635.   3       : { PackagesDec := 'места'; }
  636.   4       : { PackagesDec := 'места'; }
  637.    else     PackagesDec := 'мест';
  638. End;
  639.      }
  640.    Result     := PackagesDec;
  641. };//declensionPackages
  642.  
  643. Procedure UpdateTbGrSPInv;
  644. {
  645.  If GetFirst tbGrSPInv = tsOk
  646.   {
  647.    _Loop tbGrSPInv
  648.     {
  649.      Case tbGrSPInv.TNVED_MC of
  650.       '6907239009': tbGrSPInv.Packages := arPackages[1];
  651.       '6907239005': tbGrSPInv.Packages := arPackages[2];
  652.       '6907309001': tbGrSPInv.Packages := arPackages[3];
  653.       '6907211000': tbGrSPInv.Packages := arPackages[4];
  654.       '6907219009': tbGrSPInv.Packages := arPackages[5];
  655.       '6907219003': tbGrSPInv.Packages := arPackages[6];
  656.       '6907219001': tbGrSPInv.Packages := arPackages[7];
  657.       '6907229009': tbGrSPInv.Packages := arPackages[8];
  658.       '6907221000': tbGrSPInv.Packages := arPackages[9];
  659.       '6910100000': { tbGrSPInv.Packages := arPackages[10];
  660.                       tbGrSPInv.TNVED_MC := 'Санизд.: '+tbGrSPInv.TNVED_MC;
  661.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  662.                     }
  663.       '3922200000': { tbGrSPInv.Packages := arPackages[11];
  664.                       tbGrSPInv.TNVED_MC := 'Сидения: '+tbGrSPInv.TNVED_MC;
  665.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  666.                       KolPackSI      := KolPackSI - arPackages[11];
  667.                       GrossWPackSI   := GrossWPackSI - (WPackSI * arPackages[11]);
  668.                       GrossWPackSeat := WPackSI;
  669.                     }
  670.       '8481599000': { tbGrSPInv.Packages := arPackages[12];
  671.                       tbGrSPInv.TNVED_MC := 'Арматура: '+tbGrSPInv.TNVED_MC;
  672.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  673.                     }
  674.       '6904100000': { tbGrSPInv.Packages := arPackages[13];
  675.                       tbGrSPInv.TNVED_MC := 'Кирпич: '+tbGrSPInv.TNVED_MC;
  676.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  677.                     }
  678.       '7016100000': tbGrSPInv.Packages := arPackages[14];
  679.       '3207408000': { tbGrSPInv.Packages := arPackages[15];
  680.                       tbGrSPInv.TNVED_MC := 'Фритта: '+tbGrSPInv.TNVED_MC;
  681.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  682.                     }
  683.       '7324900000','7318190009','3926909709':
  684.                     {
  685.                       tbGrSPInv.Packages := 0;
  686.                       tbGrSPInv.TNVED_MC := 'Крепление: '+tbGrSPInv.TNVED_MC;
  687.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  688.                     }
  689.  
  690.         '8481801900':
  691.                     {
  692.                       tbGrSPInv.Packages := 0;
  693.                       tbGrSPInv.TNVED_MC := 'Комплект: '+tbGrSPInv.TNVED_MC;
  694.                       tbGrSPInv.enTNVED_MC := ' English.: '+tbGrSPInv.enTNVED_MC;
  695.                     }
  696.  
  697.      End;
  698.      //message(tbGrSPInv.Packages + 'qq');
  699.      //Веса
  700.      If ( tbGrSPInv.TNVED_MC = 'Санизд.: 6910100000'){            //сантехник
  701.        tbGrSPInv.GrossW := tbGrSPInv.GrossW + GrossWPackSI ;  //+арматура
  702.  
  703.      }
  704.      Else
  705.        {
  706.         If ( tbGrSPInv.TNVED_MC = 'Сидения: 3922200000' And GrossWPackSeat > 0 )  //сидения
  707.           tbGrSPInv.GrossW := tbGrSPInv.GrossW + GrossWPackSeat*tbGrSPInv.Packages;
  708.  
  709.         Else
  710.          {
  711.           If (tbGrSPInv.TNVED_MC = '4819100000')
  712.            {
  713.             tbGrSPInv.TNVED_MC := 'Ящики картон.: '+tbGrSPInv.TNVED_MC;
  714.             tbGrSPInv.enTNVED_MC := 'English.: '+tbGrSPInv.enTNVED_MC;
  715.             If ( GrossWPackSI<>0 )
  716.               tbGrSPInv.GrossW := tbGrSPInv.GrossW + GrossWPackSI;
  717.             If ( GrossWPackPL<>0 )
  718.               tbGrSPInv.GrossW := tbGrSPInv.GrossW + GrossWPackPL;
  719.            }
  720.           Else
  721.            {
  722.             If (PrUkraine)
  723.               tbGrSPInv.GrossW := Round(tbGrSPInv.GrossW + tbGrSPInv.Packages*WPackPL,0);
  724.             Else
  725.              {
  726.               WPack := WPack+If(KolPackPL<>0,Round(tbGrSPInv.Packages*GrossWPackPL/KolPackPL,0),0)
  727.               tbGrSPInv.GrossW := tbGrSPInv.GrossW+If(KolPackPL<>0,Round(tbGrSPInv.Packages*GrossWPackPL/KolPackPL,0),0)
  728.              } // вес  поддонов по плитке распределяем пропорцион-но кол-ву по ТНВЭД ,  т.к. в счете могут быть поддоны с разным весом
  729.            }
  730.  
  731.           If ( tbGrSPInv.TNVED_MC = '7016100000' Or Substr(tbGrSPInv.TNVED_MC,1,4) = '6907' )
  732.             tbGrSPInv.TNVED_MC := 'Итого '+tbGrSPInv.TNVED_MC;
  733.             tbGrSPInv.enTNVED_MC := 'Total'+tbGrSPInv.enTNVED_MC;
  734.  
  735.           If ( WPack > GrossWPackPL And Not PrUkraine )
  736.             tbGrSPInv.GrossW := tbGrSPInv.GrossW - (WPack  - GrossWPackPL);
  737.         }
  738.       }
  739.  
  740.      If( tbGrSPInv.TNVED_MC = '4819100000' )
  741.        tbGrSPInv.GrossW := tbGrSPInv.NetW;
  742.  
  743.      Update current tbGrSPInv;
  744.     }
  745.   }
  746. }
  747.  
  748. Procedure saveInLogTable (vFORMNAME : String; vEVENT : String; vPARAMS : String; vCOMMENT : String);
  749. {
  750.   var stmt    : LongInt;
  751.   var StrResult : Integer;
  752.   var sGetDescr, sGetUserId : String;
  753.  
  754. // получаем дескриптор сотрудника запустившего интерфейс
  755.  sGetDescr := trim(sGetTune('user.descr'));
  756.  sGetUserId := String(UserId);
  757.  
  758.  
  759.  stmt := sqlAllocStmt;
  760.          sqlBindCol(stmt,   1, StrResult);
  761.          sqlBindParam(stmt, 1, sGetUserId);
  762.          sqlBindParam(stmt, 2, ' ');
  763.          sqlBindParam(stmt, 3, vFORMNAME);
  764.          sqlBindParam(stmt, 4, vEVENT);
  765.          //по умолчанию данные входные параметры могут не указываться
  766.          sqlBindParam(stmt, 5, vCOMMENT);
  767.          sqlBindParam(stmt, 6, vPARAMS);
  768.          sqlBindParam(stmt, 7, '24_0005');
  769.          sqlBindParam(stmt, 8, sGetDescr);
  770.          //вызов хранимой функции
  771.          sqlExecStmt(stmt, 'select top 1 F_LOG_FORMS(:P1,:P2,:P3,:P4,:P5,:P6,:P7,:P8) FROM DUAL');
  772.  
  773.   if sqlFetch(stmt) != tsOk then {Message('Ошибка вызова процедуры saveInLogTable. Код sqlFetch: ' + string(sqlErrorCode(stmt)));}
  774.   sqlFreeStmt(stmt);
  775. }
  776.  
  777.  
  778. Window WnPlace_num'Ввод количества мест-поддонов' Cyan, Doaccept;
  779. show at (,,62,10);
  780.   Screen scParams 'Ввод количества мест-поддонов';
  781.   Show at (,,60,9);
  782.   Fields
  783.       colBrikPod:[3,'%[0:999]{000}'], noprotect;
  784.   Buttons
  785.        cmOK, Default,,,;
  786.        cmCancel,,,,;
  787.        <<'Введите количество мест-поддонов'
  788.   Количество мест(поддонов) .@@@
  789.  
  790.        <.   OK   .>   <. Отмена .>
  791. >>
  792. end;
  793. Handleevent
  794. cmOK:
  795. {
  796.  CloseInterface (cmOk);}
  797. cmCancel:
  798. {
  799. CloseInterface (cmCancel);}
  800. end;
  801. End; // Window place_num
  802.  
  803.  
  804. Window WnCustomerTran 'Ввод заказчика транспорта' Cyan, Doaccept;
  805. Show at (,,64,7);
  806. Screen scParams 'Ввод заказчика транспорта';
  807. Show At (1,1,63,4);
  808. Fields
  809.       custName:[40], noprotect;
  810.       custCountry:[40], noprotect;
  811.       custAddress:[40], noprotect;
  812.        <<'Введите информацию о заказчике транспорта'
  813.   Введите информацию о заказчике транспорта
  814.   название .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  815.   страна   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  816.   адрес    .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  817. >>
  818. end;
  819. Screen scrButtons
  820. Show at (1,5,63,6);
  821. Buttons
  822.    cmOk,,,'Сформировать',,;
  823.    cmCancel,,,'Отмена',,;
  824. <<
  825.         <.  ~С~формировать  .>    <.     ~О~тмена     .>
  826. >>
  827. end;
  828.  
  829. Handleevent
  830. cmInit :
  831. {custName:=' ';
  832.  custCountry:=' ';
  833.  custAddress:=' ';}
  834.  cmOK:{CloseInterface (cmOk);}
  835. cmCancel:
  836. {CloseInterface (cmCancel);}
  837. end;
  838. End; // Window WnCustomerTran
  839.  
  840. Window WnPackPyTNVED 'Поддоны по ТН ВЭД' (,,) EscClose;
  841. Show at (,,55,20);
  842. Screen scParams 'Поддоны по ТН ВЭД';
  843. Show At (1,1,54,17);
  844. Fields
  845. dPackages_1 ('Облицовка'):[8, '66666666'], NoProtect;
  846. dPackages_2 ('Облицовка до 90 см2'):[8, '66666666'], NoProtect;
  847. dPackages_3 ('Ковры мозаичные'):[8, '66666666'], NoProtect;
  848. dPackages_4 ('Неглазурованная плитка'):[8, '66666666'], NoProtect;
  849. dPackages_5 ('Глазурованная плитка'):[8, '66666666'], NoProtect;
  850. dPackages_6 ('Глазуров. плитка до 90 см2'):[8, '66666666'], NoProtect;
  851. dPackages_7 ('Глазуров. плитка до 62 см2'):[8, '66666666'], NoProtect;
  852. dPackages_8 ('Клинкер.глаз'):[8, '66666666'], NoProtect;
  853. dPackages_9 ('Клинкер.неглаз'):[8, '66666666'], NoProtect;
  854. dPackages_10 ('Санизделия'):[8, '66666666'], NoProtect;
  855. dPackages_11 ('Сидения'):[8, '66666666'], NoProtect;
  856. dPackages_12 ('Арматура'):[8, '66666666'], NoProtect;
  857. dPackages_13 ('Кирпич'):[8, '66666666'], NoProtect;
  858. dPackages_14 ('Изделия из стекла'):[8, '66666666'], NoProtect;
  859. dPackages_15 ('Фритта'):[8, '66666666'], NoProtect; //Фритта
  860. dPackages_16 ('Итого'):[8, '66666666'], NoProtect; //Итого
  861. <<
  862.  `6907239009 Облицовка`                    .@@@@@@@@
  863.  `6907239005 Облицовка до 90 см2`          .@@@@@@@@
  864.  `6907309001 Ковры мозаичные`              .@@@@@@@@
  865.  `6907211000 Неглазурованная плитка`       .@@@@@@@@
  866.  `6907219009 Глазурованная плитка`         .@@@@@@@@
  867.  `6907219003 Глазуров. плитка до 90 см2`   .@@@@@@@@
  868.  `6907219001 Глазуров. плитка до 62 см2`   .@@@@@@@@
  869.  `6907229009 Клинкер.глаз`                 .@@@@@@@@
  870.  `6907221900 Клинкер.неглаз`               .@@@@@@@@
  871.  `6910100000 Санизделия`                   .@@@@@@@@
  872.  `3922200000 Сидения`                      .@@@@@@@@
  873.  `8481599000 Арматура`                     .@@@@@@@@
  874.  `6904100000 Кирпич`                       .@@@@@@@@
  875.  `7016100000 Изделия из стекла`            .@@@@@@@@
  876.  `3207408000 Фритта`                       .@@@@@@@@
  877.  
  878.  `Итого:`                                  .@@@@@@@@
  879. >>
  880. end;
  881.  
  882. Screen scrButtons
  883. Show at (1,18,54,19);
  884. Buttons
  885.    cmOk,,,'Далее',,;
  886. <<
  887.             <.  ~П~родолжить  .>
  888. >>
  889. end;
  890. HandleEvent  // handleevent интерфейса
  891. cmOk:
  892. {
  893.  VarToArray;
  894.  UpdateTbGrSPInv;
  895.  CloseInterface(cmDefault);
  896. }
  897. End;
  898. End; //Window
  899.  
  900. HandleEvent
  901. cmCheckField:
  902.  { }
  903. end; //HandleEvent
  904.  
  905.  
  906. /*   //окно-рудимент
  907. Window WnFRPrintInv 'Печать СФ в FastReport' (,,) EscClose;
  908. Show at (,,64,6);
  909. Screen scParams 'Печать СФ в FastReport';
  910. Show At (1,1,63,3);
  911. Fields
  912. OptInv ('Счет на оплату/Счет-фактура',,sci13Esc): NoProtect;
  913. <<
  914.  `Вид документа:`
  915.    (.) Счет на оплату`
  916.    (.) Счет-фактура`
  917.  
  918. >>
  919. end;
  920.  
  921. Screen scrButtons
  922. Show at (1,4,63,5);
  923. Buttons
  924.    cmOk,,,'Сформировать',,;
  925.    cmCancel,,,'Отмена',,;
  926. <<
  927.         <.  ~С~формировать  .>    <.     ~О~тмена     .>
  928. >>
  929. end;
  930.  
  931. Handleevent  // handleevent интерфейса
  932. cmInit:
  933.   CloseInterface(cmDefault);
  934.  
  935. cmDone: //Сохранить DSK
  936.   //  FRDestroy(FReport);
  937.  
  938. End; //handleevent интерфейса
  939. End; //Window
  940. */
  941. Procedure FillFeeSigners;
  942. Var
  943. TablNSel, KodSel, RKod, RKod2, FIO, Posit, NamePerson : String;
  944. stmt : LongInt;
  945. {
  946.  iFeeSigners.InitFeeSigners(cgReport_7401);
  947.  
  948.   if ReportId = Word(0005) Or ReportId = Word(0007) //если форма СФ ENGl, то ссылаемся на подгруппу "подписантов" в группе "Invoce"
  949.     GroupFeeSign := Comp(00010000000005EFh); //группу "подписантов"
  950.   Else if  ReportId = Word(0006) then               //иначе если форма заявление на получение сертификата, то ссылаемся на подгруппу "подписантов" в группе "Заявление на сертификат"
  951.     GroupFeeSign := Comp(000100000000063Ah); //группу "подписантов"
  952.   Else if  ReportId = Word(0003) Or ReportId = Word(0004)  then
  953.     GroupFeeSign := Comp(0001000000000358h);
  954.   else
  955.     GroupFeeSign := Comp(0001000000000353h);
  956.  
  957.  if (iFeeSigners.FindFeeSignersByNRec(GroupFeeSign))//группа подписантов по умолчанию для формы 13_0003
  958.   {
  959.    i:= 1;
  960.    If (iFeeSigners.GetSignerFirst)
  961.     {
  962.      Do
  963.       {
  964.        TablNSel := iFeeSigners.GetSignerTabN;
  965.        stmt := sqlAllocStmt;
  966.        sqlBindCol(stmt, 1, KodSel);
  967.        sqlBindParam( stmt, 1, TablNSel);
  968.        sqlExecStmt(stmt, 'select top 1 F_NALICHIE(?) from KLVAL');
  969.        while sqlFetch(stmt) = tsOk do
  970.        RKod:=String(KodSel);
  971.        sqlFreeStmt(stmt);
  972.  
  973.        If ( RKod = '1' Or RKod = '2' )
  974.         {
  975.  
  976.          If Message('Сотрудник '+iFeeSigners.GetSignerFIO(7)+' '+If(RKod = '1','находится в отпуске','отсутствует на рабочем месте')+ ' хотите выбрать другого подписанта?',YesNo)=cmNo
  977.           {
  978.            arSign_Name[i] := iFeeSigners.GetSignerFIO(7);
  979.  
  980.            If ( Pos(Locase(iFeeSigners.GetSignerInfo(3)),LoCase(arSign_Name[i])) <= 0 )
  981.             {
  982.             if ReportId <> Word(0005) Or ReportId <> Word(0007)
  983.               {
  984.                 arSign_Posit[i] := iFeeSigners.GetSignerInfo(3);
  985.               }
  986.  
  987.               //28-06-2018 подписанты для английской формы
  988.               if ReportId = Word(0005) Or ReportId = Word(0007)
  989.               {
  990.                 arSign_Posit[i] := iFeeSigners.GetSignerPosition(2); //из вкладки "Должности(варианты написания)" - родительный падеж
  991.               }
  992.  
  993.             }
  994.           }
  995.          Else
  996.           {
  997.             Do
  998.             {
  999.              If RunInterface('PersonFiop',TabNum, NamePerson, ccPerson) = cmCancel
  1000.                {
  1001.                 arSign_Name[i] := iFeeSigners.GetSignerFIO(7);
  1002.                 If ( Pos(Locase(iFeeSigners.GetSignerInfo(3)),LoCase(arSign_Name[i])) <= 0 )
  1003.                  {
  1004.  
  1005.                   if ReportId <> Word(0005) Or ReportId <> Word(0007)
  1006.                   {
  1007.                     arSign_Posit[i] := iFeeSigners.GetSignerInfo(3);
  1008.                   }
  1009.  
  1010.                   //28-06-2018 подписанты для английской формы
  1011.                   if ReportId = Word(0005) Or ReportId = Word(0007)
  1012.                   {
  1013.                     arSign_Posit[i] := iFeeSigners.GetSignerPosition(2); //из вкладки "Должности(варианты написания)" - родительный падеж
  1014.                   }
  1015.  
  1016.                }
  1017.               Continue;
  1018.                }
  1019.              TablNSel := TabNum;
  1020.              stmt := sqlAllocStmt;
  1021.              sqlBindCol(stmt, 1, KodSel);
  1022.              sqlBindParam( stmt, 1, TablNSel);
  1023.              sqlExecStmt(stmt, 'select top 1 F_NALICHIE(?) from KLVAL');
  1024.              While sqlFetch(stmt) = tsOk Do
  1025.              RKod2 := string(KodSel);
  1026.              sqlFreeStmt(stmt);
  1027.              If ( RKod2 = '1' Or RKod2 = '2' )
  1028.               Message('Сотрудник '+NamePerson+' отсутствует на рабочем месте');
  1029.              Else
  1030.               {
  1031.                If ( ccPerson <> Comp(0) )
  1032.                  {
  1033.                   If GetFirst Persons = tsOk
  1034.                     If GetLast Appointments = tsOk
  1035.                       If Getlast Catalogs = tsOk
  1036.                         Posit := SubStr(Catalogs.Name,1,1)+ locase(SubStr(catalogs.name,2,length(catalogs.name)));
  1037.                  //выделение инициалов из ФИО
  1038.                  FIO := '';
  1039.                  If ( Pos(' ',NamePerson) > 0 )
  1040.                    FIO := substr(NamePerson,1,Pos(' ',NamePerson)-1) +' '+substr(NamePerson,Pos(' ',NamePerson)+1,1)+'.';
  1041.  
  1042.                  If (Pos(' ',substr(NamePerson,Pos(' ',NamePerson)+1,length(NamePerson) - Pos(' ',NamePerson))) > 0 and Trim(FIO) <> '' )
  1043.                   {
  1044.                     FIO := FIO + substr(NamePerson,(Pos(' ',substr(NamePerson,Pos(' ',NamePerson)+1,length(NamePerson) - Pos(' ',NamePerson)))+1+Pos(' ',NamePerson)),1)+'.';
  1045.                     NamePerson := FIO;
  1046.                   }
  1047.                  }//If ( KodPers <> Comp(0) )
  1048.                arSign_Name[i] := NamePerson;
  1049.                arSign_Posit[i]:= Posit;
  1050.              }
  1051.            }
  1052.            While  (RKod2 = '1' Or RKod2 = '2')
  1053.           }//Else
  1054.         }//If ( RKod = '1' Or RKod = '2' )
  1055.       Else if ( RKod <> '1' And RKod <> '2' )
  1056.         {
  1057.          arSign_Name[i]  := iFeeSigners.GetSignerFIO(7);
  1058.         // arSign_Posit[i] := iFeeSigners.GetSignerInfo(3);
  1059.  
  1060.           if ReportId <> Word(0005) Or ReportId <> Word(0007)
  1061.             {
  1062.               arSign_Posit[i] := iFeeSigners.GetSignerInfo(3);
  1063.             }
  1064.  
  1065.              //28-06-2018 подписанты для английской формы
  1066.             if ReportId = Word(0005) Or ReportId = Word(0007)
  1067.             {
  1068.               arSign_Posit[i] := iFeeSigners.GetSignerPosition(2); //из вкладки "Должности(варианты написания)" - родительный падеж
  1069.             }
  1070.         }
  1071.        i += 1;
  1072.       }
  1073.      While ( (iFeeSigners.GetSignerNext) And i <= 3 )
  1074.     }
  1075.   }
  1076. }//Procedure FillFeeSigners;
  1077.  
  1078. Procedure FillHeader;
  1079. {
  1080.  If GetFirst BaseDoc = tsOk
  1081.   {
  1082.    Case OptInv of
  1083.     Word(0): NameDocSF := 'СЧЕТ НА ОПЛАТУ';
  1084.     Word(1): NameDocSF := 'СЧЕТ-ФАКТУРА';
  1085.     Word(2): NameDocSF := 'CMR-накладная';
  1086.    End;
  1087.  
  1088.    If (ReportID = Word(4))      // счет на оплату мкз
  1089.      {
  1090.       If Message('С залоговой стоимостью ?',YesNo)=cmYes
  1091.         PrZalog := True;
  1092.       Else
  1093.         PrZalog := False;
  1094.      }
  1095.  
  1096.    If GetFirst MyOrg = tsOk
  1097.     {
  1098.      MyOrg          := Trim(MyOrg.Name);
  1099.      IndexMyOrg     := MyOrg.Indexk;
  1100.      UNNMyOrg       := MyOrg.UNN;
  1101.      AddrMyOrg      := MyOrg.ADDR;
  1102.      AddrMyOrgTotal := IndexMyOrg + ' ' + AddrMyOrg;
  1103.     }
  1104.  
  1105.    If GetFirst KatOrgBuy = tsOk
  1106.     {
  1107.      BuyOrg          := KatOrgBuy.Name;
  1108.      IndexBuyOrg     := KatOrgBuy.Indexk;
  1109.      UNNBuyOrg       := KatOrgBuy.UNN;
  1110.      AddrBuyOrg      := KatOrgBuy.ADDR;
  1111.      AddrBuyOrgTotal := IndexBuyOrg + ' ' + AddrBuyOrg;
  1112.  
  1113.       AddrBuyOrgTotalEngl := AValKatOrgAddrEngl.VSTRING;
  1114.  
  1115.     }
  1116.  
  1117.  
  1118.  
  1119.  
  1120.    If GetFirst KatOrgOtpr = tsOk
  1121.     {
  1122.      OrgGruzOtpr       := KatOrgOtpr.Name;
  1123.      IndexGruzOtpr     := KatOrgOtpr.Indexk;
  1124.      AddrGruzOtpr      := KatOrgOtpr.ADDR;
  1125.      AddrGruzOtprTotal := IndexGruzOtpr + ' ' + AddrGruzOtpr;
  1126.      cityFrom          := KatCityPol.Name
  1127.     }
  1128.  
  1129.    If GetFirst KatOrgPol = tsOk
  1130.     {
  1131.      OrgGruzPol       := KatOrgPol.Name;
  1132.      IndexGruzPol     := KatOrgPol.Indexk;
  1133.      AddrGruzPol      := KatOrgPol.ADDR;
  1134.      AddrGruzPolTotal := IndexGruzPol + ' ' + AddrGruzPol;
  1135.      cityTo        :=  KatCityPol.Name;
  1136.  
  1137.      OrgGruzPolEngl := AValKatOrgName.VSTRING;
  1138.  
  1139.      AddrGruzPolTotalEngl := AValKatOrgAddr.VSTRING;
  1140.  
  1141.  
  1142.  
  1143.      If GetFirst KatStatePol = tsOk
  1144.        {
  1145.         If ( Trim(KatStatePol.Kod) = '860' And Pos('УЗБЕКИСТАН',UpCase(KatStatePol.Name)) > 0 )
  1146.           PrUzbek := True;
  1147.  
  1148.         If ( Trim(KatOrgPol.Name) = 'ООО "Грань Керамика"' )
  1149.           {
  1150.            AddrGruzPolTotal := IndexGruzPol +', '+ KatStatePol.Name;
  1151.  
  1152.            If GetFirst KatCityPol = tsOk
  1153.              AddrGruzPolTotal := AddrGruzPolTotal  +', '+ KatCityPol.Name;
  1154.           }
  1155.        }//If GetFirst KatStatePol
  1156.  
  1157.      If GetFirst TTNDOC = tsOk
  1158.        {
  1159.         If ( Trim(KatOrgPol.Name) = 'ООО "Грань Керамика"' )
  1160.           If GetFirst Marpunkt = tsOk
  1161.             AddrGruzPolTotal := AddrGruzPolTotal +', '+ Marpunkt.Name;
  1162.        }//If GetFirst TTNDOC
  1163.     }//If GetFirst KatOrgPol
  1164.    //*********************************************************************************************************
  1165.    If GetFirst KlVal = tsOk
  1166.      { If((KlVal.NREC = 4) and  //RUB
  1167.          optInv = Word(2))    //CMR
  1168.      {
  1169.       vSimvolV := 'рос.рублей' //просьба Ломако
  1170.      }  else
  1171.        {vSimvolV := KlVal.Simvolv;}
  1172.      }
  1173.  
  1174.    If ( KatOrgBuy.NRec = Comp(0001000000010501h)) //ООО "Эпицентр К"
  1175.      {
  1176.       PrUkraine   := True;
  1177.       MyOrg       := 'Открытое акционерное общество "Керамин"';
  1178.       OrgGruzOtpr := 'Открытое акционерное общество "Керамин"';
  1179.  
  1180.       If GetFirst KlVal = tsOk //для печати в шапке валюты по ООО "Эпицентр К"
  1181.         vCurrency := If(BaseDoc.cVal = Comp(0000000000000002h),'доллар США',KlVal.Simvolv) ;
  1182.      }
  1183.    //*********************************************************************************************************
  1184.    //Реквизиты Банка
  1185.    If GetFirst KatBankMy = tsOk
  1186.     {
  1187.       If GetFirst KatBMy = tsOk
  1188.         {
  1189.           sANamBankMy := 'Наименование (лат.)';
  1190.           If GetFirst ANamKatBMy = tsOk
  1191.             If GetFirst AValKatBMy = tsOk
  1192.                MyBankName := AValKatBMy.VSTRING;
  1193.  
  1194.           sANamBankMy := 'Адрес (лат.)';
  1195.           If GetFirst ANamKatBMy = tsOk
  1196.             If GetFirst AValKatBMy = tsOk
  1197.                MyBankAddr := AValKatBMy.VSTRING;
  1198.  
  1199.           sANamBankMy := 'SWIFT';
  1200.           If GetFirst ANamKatBMy = tsOk
  1201.             If GetFirst AValKatBMy = tsOk
  1202.               { MyBankSwift := AValKatBMy.VSTRING; PrMyBankSwift := True; }
  1203.         }
  1204.       If ( Trim(MyBankName) = '' )  MyBankName  := KatBankMy.Name;
  1205.       If ( Trim(MyBankAddr) = '' )  MyBankAddr  := KatBankMy.ADDR;
  1206.       If ( Trim(MyBankSwift) = '' ) MyBankSwift := KatBankMy.MFO1;
  1207.  
  1208.       MyBankAcc := KatBankMy.SCHET1;
  1209.     }//If GetFirst KatBankMy
  1210.  
  1211.    If GetFirst ANamCorr = tsOk
  1212.       If GetFirst AValCorr = tsOk
  1213.           If GetFirst KatBankCorr = tsOk
  1214.             {
  1215.              PrBankCorr    := True;
  1216.              CorrBankAcc   := KatBankCorr.SCHET1;
  1217.              CorrBankName  := KatBankCorr.Name;
  1218.              CorrBankSwift := KatBankCorr.MFO1;
  1219.             }
  1220.  
  1221.    If GetFirst ANamCont = tsOK
  1222.      If GetFirst AValCont = tsOK
  1223.        Container := 'контейнер ' + AValCont.vString;
  1224.  
  1225.    NumVagon := If(BASEDOC.NVAGON = '','','для ж.д. вагон № '+SubStr(BASEDOC.NVAGON,1,8)+' '+ Container);
  1226.  
  1227.    If ( BaseDoc.TypeDoc = Word(1) )
  1228.      NumSoprRailway := If(BASEDOC.NVAGON='','',If(Length(BASEDOC.NVAGON)<9,'',SubStr(BASEDOC.NVAGON,10,Length(BASEDOC.NVAGON))));
  1229.  
  1230.    If ( BaseDoc.TypeDoc = Word(0) )
  1231.      StationOtpr := '220024, г.Минск, ул. Серова, 22, Республика Беларусь'
  1232.  
  1233.    Else
  1234.      StationOtpr := If(NumVagon = '','','МИНСК - ЮЖНЫЙ БЕЛОРУССКОЙ ЖЕЛЕЗНОЙ ДОРОГИ');
  1235.  
  1236.  
  1237.   If ( BaseDoc.TypeDoc = Word(0) )
  1238.      StationOtprEngl := '220024 Belarus, Minsk, Serova str.,22'
  1239.    Else
  1240.      StationOtprEngl := If(NumVagon = '','','MINSK - SOUTH BELARUS RAILROAD');
  1241.  
  1242.  
  1243.    If ( OptInv = Word(1) )
  1244.     DateDoc := DateToStr(Cur_Date(),'DD/MM/YYYY');
  1245.    Else
  1246.     DateDoc := DateToStr(BASEDOC.DDOC,'DD/MM/YYYY');
  1247.  
  1248.    If GetFirst StepDoc = tsOk
  1249.      {
  1250.       _Loop StepDoc
  1251.        {
  1252.         _Loop KatSopr
  1253.          {
  1254.           PrSopr := True;
  1255.  
  1256.           If ( Pos(KatSopr.NSopr,NumSopr) = 0 )
  1257.             NumSopr += (KatSopr.NSopr + ', ');
  1258.  
  1259.           If ( OptInv = Word(1) ) //0 - СЧЕТ НА ОПЛАТУ 1 - СЧЕТ-ФАКТУРА
  1260.             DateDoc := DateToStr(KatSopr.DSopr,'DD/MM/YYYY');
  1261.  
  1262.           If GetFirst ANamSreds = tsOK
  1263.            If GetFirst AValSreds = tsOK
  1264.             {
  1265.              If ( KatSopr.cPodrFrom = Comp(4000A36470B40052h) Or  //Склад №7 - санитарно-керамических изделий
  1266.                  (KatSopr.cMolFrom =  Comp(4001EDED6B37EC4Dh)   //KatSopr.cPodrFrom = Comp(4612229097365957709)
  1267.                   /*and (Substr(KatMCPack.kgroupmc,1,4) = '4020'
  1268.                       or Substr(KatMCPack.kgroupmc,1,4) = '7020'
  1269.                       or Substr(KatMCPack.kgroupmc,1,4) = '4070')*/  )
  1270.                   ) //Склад комплектующих з-д Стройфарфор
  1271.  
  1272.                 PalletSan := AValSreds.vDouble;                    //поддоны покупателя для сантехн
  1273.              Else
  1274.                PalletPlit := AValSreds.vDouble;                   //поддоны покупателя для плитки
  1275.             }
  1276.  
  1277.  
  1278.           If GetFirst SpSopr = tsOk
  1279.            {
  1280.             _Loop SpSopr
  1281.              {
  1282.               //вопрос остается открытым - вес рассчитывается с тарой или без?
  1283.               If (KatMCPack.kgroupmc<>'41') Continue;
  1284.               //If ((KatSopr.cPodrFrom = Comp(4000A36470B40052h)) Or (KatSopr.cMolFrom = Comp(281474976710891) And PrSanIzd))
  1285.  
  1286.               If ((KatSopr.cPodrFrom = Comp(4000A36470B40052h))
  1287.                Or (KatSopr.cMolFrom = Comp(281474976710891) /*and pr_sanizd = 1*/
  1288.                   /*and (Substr(KatMCPack.kgroupmc,1,4) = '4020'
  1289.                       or Substr(KatMCPack.kgroupmc,1,4) = '7020'
  1290.                       or Substr(KatMCPack.kgroupmc,1,4) = '4070') */
  1291.                ))
  1292.                 {      //считаем вес поддонов
  1293.                  KolPackSI := KolPackSI+ SpSopr.KolFact;
  1294.                  GrossWPackSI := GrossWPackSI + Round((KatMCPack.Massa + KatMCPack.MTara)*SpSopr.KolFact,2);
  1295.                  WPackSI := KatMCPack.MASSA + KatMCPack.MTARA;
  1296.                  }
  1297.                Else
  1298.                 {
  1299.                  KolPackPL    += SpSopr.KolFact;
  1300.                  GrossWPackPL += Round((KatMCPack.massa + KatMCPack.mtara)*spsopr.kolfact,2);
  1301.                 //  message ('GrossWPackPL - '+GrossWPackPL);
  1302.  
  1303.                 }
  1304.  
  1305.                //pPallet:=GrossWPackSI  ;   //   вес всех поддонов сантехники (не пересчитываем по накладной. не ясно зачем это вообще сделали)
  1306.                GrossWPallet:=GrossWPackPL ;  //   вес всех поддонов плитки
  1307.                 //message (pPallet);
  1308.              }
  1309.            }//If GetFirst SpSopr
  1310.  
  1311.          }//_Loop KatSopr
  1312.  
  1313.         If GetFirst SpStep = tsOk
  1314.           If GetFirst KlPrice = tsOk
  1315.             ZagPrice := KlPrice.Zag;
  1316.             ZagPriceEN := replace (replace (replace (replace (KlPrice.Zag, 'спецификация','Specification'),'№','No'), ' от ', ' dated '),'г.','');
  1317.        }//_Loop StepDoc
  1318.      }//If GetFirst StepDoc
  1319.  
  1320.  
  1321.    If (NumSopr<>'')  NumSopr  := SubStr(NumSopr,0,Length(NumSopr)-2);
  1322.    If (ZagPrice<>'') ZagPrice := Trim(SubStr(ZagPrice,0,Pos('(',ZagPrice)-1))+SubStr(ZagPrice,Pos(')',ZagPrice)+1,Length(ZagPrice));
  1323.    If (ZagPriceEN<>'') ZagPriceEN := Trim(SubStr(ZagPriceEN,0,Pos('(',ZagPriceEN)-1))+SubStr(ZagPriceEN,Pos(')',ZagPriceEN)+1,Length(ZagPriceEN));
  1324.  
  1325.  
  1326.    If GetFirst BaseFin = tsOk
  1327.     {
  1328.      _Loop BaseFin
  1329.        {
  1330.         If GetFirst PlPor = tsOk
  1331.          _Loop PlPor
  1332.            If ( Pos((PlPor.NoDok +' от '+DateToStr(PlPor.DatOb,'DD/MM/YY')),NumDatePlat) = 0 )
  1333.              NumDatePlat += (PlPor.NoDok +' от '+DateToStr(PlPor.DatOb,'DD/MM/YY') + ', ');
  1334.        }
  1335.      }//If GetFirst BaseFin
  1336.  
  1337.     NumDatePlat := SubStr(NumDatePlat,0,Length(NumDatePlat)-2);
  1338.  
  1339.   //способ доставки для отчета "Заявление на получение сертификата происхождения"
  1340.  If GetFirst ANamTransp = tsOk
  1341.    If GetFirst AValTransp = tsOk
  1342.  
  1343.    Case AValTransp.VSTRING of
  1344.                        'ж.д.': { Transport := 'железнодорожный'; }
  1345.   'АВТОТРАНСПОРТ  ПОКУПАТЕЛЯ': { Transport := 'автотранспорт' }
  1346.    'АВТОТРАНСПОРТ ПОСТАВЩИКА': { Transport := 'автотранспорт' }
  1347.    Else
  1348.    Transport := AValTransp.VSTRING;
  1349.    End;
  1350.  
  1351.  
  1352.    sExClNam := 'Условия поставки';
  1353.     If GetFirst ExClNamBD = tsOk
  1354.       If GetFirst ExClValBD = tsOk
  1355.         If GetFirst ExClSegBD = tsOk
  1356.           DelConditions := ExClSegBD.Name;
  1357.  
  1358.  
  1359.   sExClNamEngl := 'Условия поставки English';
  1360.     If GetFirst ExClNamBDEngl = tsOk
  1361.       If GetFirst ExClValBDEngl = tsOk
  1362.         If GetFirst ExClSegBDEngl = tsOk
  1363.           DelConditionsEngl := ExClSegBDEngl.Name;
  1364.  
  1365.  
  1366.  
  1367.    //для CMR подписанты не заполняются
  1368.    if (ReportID <> Word(0010) and //CMR-накладная. Венесуэла, Ливия 24_0005
  1369.        ReportID <> Word(0011) and //CMR-накладная. Печать бланка 24_0005
  1370.        ReportID <> Word(0012) and //CMR-накладная 24_0005'
  1371.        ReportID <> Word(0013)    //CMR-накладная. Кирпич принтер OKI 3310 24_0005
  1372.          ) {FillFeeSigners;}
  1373.  
  1374.   }//If GetFirst BaseDoc
  1375. }//Procedure FillHeader;
  1376.  
  1377. Procedure ReplaceSPName;
  1378. Var
  1379. KolPosPlitka : Integer;
  1380. arPos    : Array [1..2] of Integer;
  1381. NamePos  : String;
  1382. PrNewStr : Boolean;
  1383. {
  1384.  SpMCName := KatMC.Name;
  1385.  PrNewStr := False;
  1386.  
  1387.  If (Instr('плитка',SpMCName)>0)
  1388.    {
  1389.     If (Instr('(',SpMCName)>0)
  1390.       KolPosPlitka:=Instr('(',SpMCName)-Instr('плитка',SpMCName)-1;
  1391.     Else
  1392.       KolPosPlitka:=Length(SpMCName); }
  1393.  
  1394.  If ( Pos('плитка',SpMCName) > 0 )
  1395.   SpMCName := If(Instr('плитка',SpMCName)>0,'П'+substr(SpMCName,InStr('плитка',SpMCName)+1,KolPosPlitka)+' '+substr(SpMCName,1,Instr('плитка',SpMCName)-1),SpMCName);
  1396.  Else
  1397.   {
  1398.   //для новых названий
  1399.    If ( (Pos('плитки',LoCase(SpMCName))       > 1 Or
  1400.         Pos('керамогранит',LoCase(SpMCName)) > 1 Or
  1401.         Pos('ковры',LoCase(SpMCName))        > 1 Or
  1402.         Pos('изделия',LoCase(SpMCName))      > 1)
  1403.         and substr(KATMC.KGROUPMC, 1, 4) <> '0602' ) //исключаем ящики
  1404.      {
  1405.       arPos[1]     := Pos('\', LoCase(SpMCName));
  1406.      NamePos      := Trim(Substr(SpMCName,1,arPos[1]-1));
  1407.      arPos[1]     := Pos('плитки',locase(KatMC.Name));
  1408.      If ( arPos[1] > 1 )
  1409.       SpMCName := 'Плитки керам.'+Substr(NamePos,arPos[1]+6,length(NamePos))+' '+ Substr(NamePos,1,arPos[1]-1);
  1410.      Else
  1411.       {
  1412.        If ( Pos('ковры',LoCase(SpMCName)) > 1 )
  1413.         arPos[1] := Pos('ковры',LoCase(SpMCName));
  1414.        Else
  1415.         {
  1416.          If ( Pos('изделия',LoCase(SpMCName)) > 1 )
  1417.            arPos[1] := Pos('изделия',LoCase(SpMCName));
  1418.          Else
  1419.           {
  1420.            If ( Pos('керамогранит',LoCase(SpMCName)) > 1 And Pos('\',LoCase(SpMCName)) > 0)
  1421.              arPos[1] := Pos('керамогранит',LoCase(SpMCName));
  1422.  
  1423.           }
  1424.         }
  1425.        SpMCName := Upcase(Substr(NamePos,arPos[1],1))+Substr(NamePos,arPos[1]+1,length(NamePos))+' ' + Substr(NamePos,1,arPos[1]-1);
  1426.       }
  1427.     }
  1428.  }//Else If Pos('плитка',SpMCName)
  1429.  
  1430.  If ( ((Pos('унитаз',LoCase(SpMCName)) > 1 Or Pos('умывальник',LoCase(SpMCName)) > 1 Or Pos('писсуар',LoCase(SpMCName)) > 1
  1431.         Or Pos('бачок',LoCase(SpMCName)) > 1 Or Pos('биде',LoCase(SpMCName)) > 1  Or Pos('пьедестал',LoCase(SpMCName)) > 1)
  1432.         And Pos('керам',LoCase(SpMCName)) > 0 ) Or Pos('унитаз-компакт',LoCase(SpMCName)) > 1 )
  1433.    {
  1434.     PrNewStr     := True;
  1435.  
  1436.     If Pos('унитаз',LoCase(SpMCName)) > 1 And Pos('биде',LoCase(SpMCName)) = 0
  1437.     {  arPos[1] := Pos('унитаз',LoCase(SpMCName));
  1438.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1))+Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+Substr(SpMCName,1,arPos[1]-1)
  1439.     }
  1440.     If Pos('умывальник',LoCase(SpMCName)) > 1 And Pos('с креплением',LoCase(SpMCName)) > 1
  1441.     {  arPos[1] := Pos('умывальник',LoCase(SpMCName));
  1442.        arPos[2] := Pos('с креплением',LoCase(SpMCName));
  1443.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1))+Substr(SpMCName,arPos[1]+1,arPos[2]-arPos[1]-2)+' '+Substr(SpMCName,1,arPos[1]-1)+Substr(SpMCName,arPos[2],length(SpMCName))
  1444.  
  1445.     }
  1446.     If Pos('биде',LoCase(SpMCName)) > 1 And Pos('с креплением',LoCase(SpMCName)) > 1
  1447.     {  arPos[1] := Pos('биде',LoCase(SpMCName));
  1448.        arPos[2] := Pos('с креплением',LoCase(SpMCName));
  1449.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,arPos[2]-arPos[1]-2)+' '+ Substr(SpMCName,1,arPos[1]-1) + Substr(SpMCName,arPos[2],length(SpMCName))
  1450.     }
  1451.     If Pos('умывальник',LoCase(SpMCName)) > 1 and Pos('с креплением',LoCase(SpMCName)) = 0 and Pos('пьедестал',LoCase(SpMCName)) = 0 and Pos('биде',LoCase(SpMCName)) = 0
  1452.     {  arPos[1] := Pos('умывальник',LoCase(SpMCName));
  1453.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1)
  1454.  
  1455.     }
  1456.     If Pos('бачок',LoCase(SpMCName)) > 1
  1457.     {  arPos[1] := Pos('бачок',LoCase(SpMCName));
  1458.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1);
  1459.     }
  1460.     If Pos('писсуар',LoCase(SpMCName)) > 1
  1461.     {  arPos[1] := Pos('писсуар',LoCase(SpMCName));
  1462.        SpMCName :=  Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1);
  1463.     }
  1464.     If Pos('биде',LoCase(SpMCName)) > 1 And Pos('с креплением',LoCase(SpMCName)) = 0
  1465.     {  arPos[1] := Pos('биде',LoCase(SpMCName))
  1466.        SpMCName := Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1);
  1467.     }
  1468.     If Pos('пьедестал',LoCase(SpMCName)) > 1 And Pos('с крепл',LoCase(SpMCName))  = 0
  1469.     {  arPos[1] := Pos('пьедестал',LoCase(SpMCName))
  1470.        SpMCName :=  Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1);
  1471.     }
  1472.    }
  1473.  
  1474.  If Pos('сиденье',LoCase(SpMCName)) > 1 And (Not PrNewStr) And Pos('сиденьем',LoCase(SpMCName)) = 0
  1475.  {
  1476.   If Pos('сиденье',LoCase(SpMCName)) > 1
  1477.    {  arPos[1] := Pos('сиденье',LoCase(SpMCName));
  1478.       SpMCName :=  Upcase(Substr(SpMCName,arPos[1],1)) + Substr(SpMCName,arPos[1]+1,length(SpMCName))+' '+ Substr(SpMCName,1,arPos[1]-1);
  1479.    }
  1480.  }
  1481. }//Procedure SPName
  1482.  
  1483. Function EdEngl(nameEd : String) : String;
  1484. {
  1485.  Var   nameEdEn : String;
  1486.   Case nameEd of
  1487.  'м2'       : { nameEdEn := 'Sq.m'; }
  1488.  'шт'       : { nameEdEn := 'pc'; }
  1489.  'штук'     : { nameEdEn := 'pc'; }
  1490.   else     nameEdEn := 'англ. наименование отсутствует';
  1491. End;
  1492.   Result     := nameEdEn;
  1493. };
  1494.  
  1495. Procedure FillSpecification;
  1496. Var
  1497. NumGrMC  : Word;
  1498. arGrMC   : Array [1..3] of String;
  1499. PrPackMC : Boolean;
  1500.  
  1501.  
  1502. NAME_EN, EdGR : String;
  1503. {
  1504. If GetFirst BaseDoc = tsOk
  1505.  {
  1506.   If GetFirst StepDoc = tsOk
  1507.    {
  1508.     _Loop StepDoc
  1509.      {
  1510.       If GetFirst SpStep = tsOk
  1511.        {
  1512.  
  1513.          _Loop SpStep
  1514.           {
  1515.            If GetFirst KatMC <> tsOk Continue;
  1516.  
  1517.            If ( Trim(KATMC.BARKOD)='Т000001' Or
  1518.                 Trim(KATMC.BARKOD)='Т000002' Or
  1519.                 Trim(KATMC.BARKOD)='Т000003' Or
  1520.                 Trim(KATMC.BARKOD)='99010086-9' )
  1521.               PrPackMC := True;
  1522.            Else PrPackMC := False;
  1523.  
  1524.            ClearBuffer(#tbSPInv);
  1525.  
  1526.             //07-06-2018
  1527.             //проверка на наличие название МЦ на англ. языке
  1528.             If GetFirst ENGL = tsOk {
  1529.               NAME_EN := ENGL.PRIM;
  1530.              } ELSE {
  1531.                NAME_EN := 'английское название отсутствует в каталоге МЦ'
  1532.              }
  1533.  
  1534.            tbSPInv.TNVED    := KatMC.TNVED;
  1535.            tbSPInv.cGroupMC := KatMC.cGroupMC;
  1536.  
  1537.            RePlaceSPName;
  1538.  
  1539.  
  1540.            tbSPInv.Name := Trim(SpMCName);
  1541.            tbSPInv.OBOZN := KatMC.OBOZN;
  1542.  
  1543.  
  1544.            tbSPInv.NameEN := Trim(NAME_EN);//07-06-2018
  1545.  
  1546.            If GetFirst KatOtpEd = tsOk
  1547.              {
  1548.               tbSPInv.EdOtp   := KatOtpEd.Name;
  1549.               tbSPInv.KoefOtp := KatOtpEd.Koef;
  1550.              }
  1551.  
  1552.  
  1553.            If GetFirst KatED = tsOk
  1554.             tbSPInv.EdUch := KatED.Name;   //м2
  1555.  
  1556.            If ( KatOtpEd.Koef <> 1 )
  1557.              {
  1558.               tbSPInv.Kolvo := DoubleToStr(Round(SpStep.KolSkl*KatOtpEd.Koef,3),FormatKol)+'/'+DoubleToStr(SpStep.KolSkl,'666666666');
  1559.               tbSPInv.EDIzm := LoCase(SubStr(tbSPInv.EdUch,1,2)+'/'+SubStr(tbSPInv.EdOtp,1,2));
  1560.               tbSPInv.EDIzmEN := EdEngl(LoCase(SubStr(tbSPInv.EdUch,1,2))) + ' / ' + EdEngl (LoCase(SubStr(tbSPInv.EdOtp,1,2)));
  1561.               EdGR := tbSPInv.EDIzm;
  1562.              }
  1563.            Else
  1564.              {
  1565.               tbSPInv.Kolvo := DoubleToStr(Round(SpStep.KolSkl,3),FormatKol);
  1566.               tbSPInv.EDIzm := LoCase(tbSPInv.EdOtp);
  1567.               tbSPInv.EDIzmEN := EdEngl(LoCase(tbSPInv.EdOtp));
  1568.               EdGR:=tbSPInv.EDIzm;
  1569.              }
  1570.              //объем м3 = объем всех ящиков
  1571.              if  (KatOtpEdAkt.KOEF = 1) {
  1572.               tbSPInv.ob_p := (SpStep.KolSkl / KatOtpEdBox.KOEF) * KatMC.volume;     //объем всех ящиков для отп.ед. м2
  1573.              } else {
  1574.               tbSPInv.ob_p := (SpStep.KolSkl/(KatOtpEdBox.KOEF/KatOtpEdAkt.KOEF)) * KatMC.volume;   //объем всех ящиков для отп.ед. шт
  1575.              }
  1576.     //определяем вид продукции для распределения поддонов
  1577.     If  katmc.kgroupmc <> '401010'  and substr(katmc.kgroupmc,1,6)  = '401010'
  1578.     {
  1579.      pr_obl := 1
  1580.       }
  1581.  
  1582.        If katmc.kgroupmc = '40102021' or katmc.kgroupmc = '4010502' or katmc.kgroupmc = '40102011'
  1583.        {
  1584.          If katmc.TNVED = '6907211000' {
  1585.            pr_ng := 1
  1586.            } else {
  1587.              pr_gl := 1
  1588.            }
  1589.        }
  1590.  
  1591.            If (Not PrPackMC)
  1592.            {
  1593.             If (SpStep.Price<>0)
  1594.               tbSPInv.PriceNoNDS := DoubleToStr(Round(SpStep.Price,2),FormatSum);
  1595.             Else
  1596.               Message('Ошибка! Нулевая цена по: ' + KatMC.Name);
  1597.            }
  1598.  
  1599.            tbSPInv.SumNoNDS  := DoubleToStr(Round(SpStep.Summa,2),FormatSum);
  1600.            tbSPInv.SumNDS    := DoubleToStr(Round(SpStep.NDS,2),  FormatSum);
  1601.  
  1602.  
  1603.           If ( SpStep.NDS <> 0 )   {
  1604.              tbSPInv.NDS := DoubleToStr((doGetTune('NALOG.STAV1')),'66')+'%';
  1605.           }else{
  1606.              tbSPInv.NDS := '0%';  //07-06-2018
  1607.           }
  1608.  
  1609.            If (BaseDoc.Vhodnal = Word(1)) //Налоги включены в цену
  1610.              tbSPInv.SumWithNDS := DoubleToStr(Round(SpStep.Price * SpStep.KolSkl,2),FormatSum);
  1611.  
  1612.            If (BaseDoc.Vhodnal = Word(2)) //Налоги не включены
  1613.              tbSPInv.SumWithNDS := DoubleToStr(Round(SpStep.Price * SpStep.KolSkl + SpStep.NDS,2),FormatSum);
  1614.  
  1615.            TotalSumNoNDS += SpStep.Summa;    //всего к оплате
  1616.            TotalSumNDS   += SpStep.NDS;      //всего к оплате
  1617.  
  1618.            If (BaseDoc.Vhodnal = Word(1)) {
  1619.              TotalSumWithNDS += Round(SpStep.Price * SpStep.KolSkl,2);}     //06-08-2018 Добавлено округление неправильно считалась общая сумма
  1620.  
  1621.  
  1622.  
  1623.            If (BaseDoc.Vhodnal = Word(2)){
  1624.              TotalSumWithNDS += Round(SpStep.Price * SpStep.KolSkl + SpStep.NDS,2); } //06-08-2018 Добавлено округление неправильно считалась общая сумма
  1625.  
  1626.          CVAL := KlVal.nrec;
  1627.  
  1628.            If (PrZalog)
  1629.             {
  1630.              If (BaseDoc.Vhodnal = Word(1))
  1631.                SumZalog += (SpStep.Price * SpStep.KolSkl)*24/100;
  1632.              If (BaseDoc.Vhodnal = Word(2))
  1633.                SumZalog += (SpStep.Price * SpStep.KolSkl+SpStep.NDS)*24/100;
  1634.             }
  1635.  
  1636.            If ( SubStr(KatMC.KGroupMC,1,2) = '40' Or SubStr(KatMC.KGroupMC,1,2) = '70' )
  1637.  
  1638.             if  (ReportID = Word(0005)  and OptInv = Word(1)) OR
  1639.             (ReportID = Word(0007) and OptInv = Word(0)) {
  1640.                tbSPInv.COrigin := 'Belarus / РБ';
  1641.             } else {
  1642.                tbSPInv.COrigin := 'РБ';
  1643.             }
  1644.  
  1645.            Else
  1646.             {
  1647.              If GetFirst ANamCO = tsOk
  1648.                If GetFirst AValCO = tsOk
  1649.                  tbSPInv.COrigin := AValCO.VSTRING;
  1650.             }
  1651.  
  1652.            arGrMC[1] := ( SubStr(KatMC.TNVED,1,4)+' '+SubStr(KatMC.TNVED,5,2)+' '+
  1653.                           SubStr(KatMC.TNVED,7,3)+' '+SubStr(KatMC.TNVED,10,1)+If(PrUkraine,' / HS '+SubStr(KatMC.Gost,1,4),'') ) ;
  1654.  
  1655.            If GetFirst KatOtpEdPack = tsOk
  1656.              vPackages := Round(If(KatOtpEd.Koef<>1,SpStep.KolSkl*KatOtpEd.Koef,SpStep.KolSkl)/
  1657.              If(KatOtpEdPack.Koef<>0,KatOtpEdPack.Koef,1),0);
  1658.  
  1659.  
  1660.             If (SubStr(KatMC.TNVED,1,4) = '6907' Or KatMC.TNVED = '7016100000'  or
  1661.              KatMC.TNVED = '6910100000' Or KatMC.TNVED = '3922200000'
  1662.                Or KatMC.TNVED = '7324900000' Or KatMC.TNVED = '7318190009' Or KatMC.TNVED = '3926909709')
  1663.               {
  1664.                Case KatMC.TNVED of
  1665.                 '6907211000': { NumGrMC   := Word(1);
  1666.                                 arGrMC[2] := 'Плитки керамические неглазурованные с коэффициентом поглощения воды не более 0,5 мас.%'
  1667.                                 arGrMC[3] := 'Unglazed ceramic with a water absorption coefficient of not more than 0,5%'
  1668.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1669.  
  1670.                               }
  1671.                 '6907219001': { NumGrMC   := Word(2);
  1672.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды не более 0,5 мас.%, с наибольшей стороной менее 7 см';
  1673.                                 arGrMC[3] := 'Glazed ceramic with a water absorption coefficient of not more than 0,5%, by weight with the largest side less than 7 cm';
  1674.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1675.  
  1676.                               }
  1677.                 '6907219003': { NumGrMC   := Word(3);
  1678.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды не более 0,5 мас.%, с лицевой стороной не более 90 см2';
  1679.                                 arGrMC[3] := 'Glazed ceramic with a water absorption coefficient of not more than 0,5%, with a face not exceeding 90 cm2';
  1680.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1681.  
  1682.                               }
  1683.                 '6907219009': { NumGrMC   := Word(4);
  1684.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды не более 0,5 мас.%, с лицевой стороной  более 90 см2';
  1685.                                 arGrMC[3] := 'Ceramic glazed tiles with a coefficient of water absorption not more than 0,5wt.%, with frontage of over 90 sq.cm';
  1686.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1687.  
  1688.                               }
  1689.                 '6907221000': { NumGrMC   := Word(5);
  1690.                                 arGrMC[2] := 'Плитки керамические неглазурованные с коэффициентом поглощения воды более 0,5 мас.% но не более 10 мас.%';
  1691.                                 arGrMC[3] := 'Unglazed ceramic with a water absorption coefficient of more than 0,5%, but not more than 10%';
  1692.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1693.  
  1694.                               }
  1695.                 '6907229009': { NumGrMC   := Word(6);
  1696.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды  более 0,5 мас.% но не более 10 мас.%, с лицевой стороной более 90см2';
  1697.                                 arGrMC[3] := 'Glazed ceramic with a water absorption coefficient of more than 0,5%, , but not more than 10%, with a face greater than 90cm2';
  1698.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1699.  
  1700.                               }
  1701.                 '6907239005': { NumGrMC   := Word(7);
  1702.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды  более 10 мас.% , с лицевой стороной не более 90см2';
  1703.                                 arGrMC[3] := 'Glazed ceramic with a water absorption coefficient of more than 10%, with a face not exceeding 90cm2';
  1704.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1705.  
  1706.                               }
  1707.                 '6907239009': { NumGrMC   := Word(8);
  1708.                                 arGrMC[2] := 'Плитки керамические глазурованные с коэффициентом поглощения воды более 10 мас.% , с лицевой стороной более 90см2';
  1709.                                 arGrMC[3] := 'Ceramic glazed tiles with a coefficient of water absorption more than 10wt.%, with frontage of over 90 sq.cm ';
  1710.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1711.  
  1712.                               }
  1713.                 '6907309001': { NumGrMC   := Word(9);
  1714.                                 arGrMC[2] := 'Ковры мозаичные из плиток керамических глазурованные,на основе,из элементов с наибольшей стороной менее 7 см';
  1715.                                 arGrMC[3] := 'Ковры мозаичные из плиток керамических глазурованные,на основе,из элементов с наибольшей стороной менее 7 см';
  1716.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1717.  
  1718.                               }
  1719.                 '7016100000': { NumGrMC   := Word(10);
  1720.                                 arGrMC[2] := 'Изделия декоративные из стекла: фризы';
  1721.                                 arGrMC[3] := 'Decorative articles made of glass: friezes';
  1722.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1723.                               }
  1724.  
  1725.                '6910100000': { NumGrMC   := Word(13);
  1726.                                 arGrMC[2] := '';
  1727.                                 arGrMC[3] := '';
  1728.                                 TNVEDShort   := SubStr(KatMC.TNVED,1,6) ;
  1729.                               }
  1730.  
  1731.                 '3922200000': { NumGrMC   := Word(12);
  1732.                                 arGrMC[2] := ''
  1733.                                 arGrMC[3] := ''
  1734.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);
  1735.  
  1736.                               }
  1737.                 '7324900000','7318190009','3926909709':
  1738.                    {            NumGrMC   := Word(14);
  1739.                                 arGrMC[2] := 'Крепление';
  1740.                                 arGrMC[3] := 'Binding';
  1741.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6);}
  1742.  
  1743.                Else
  1744.                 NumGrMC := Word(99);
  1745.                End;
  1746.               }   Else NumGrMC := Word(98);
  1747.  
  1748.  
  1749.                //07-06-2018 добавлено условие для поддонов
  1750.                //т.к. если шла плитка потом поддон, то переменная NumGrMC не обновлялась и результат суммировался к плитке
  1751.              if (KatMC.TNVED = '4415202000'){
  1752.                Case KatMC.TNVED of
  1753.                 '4415202000': { NumGrMC   := Word(0);
  1754.                                 arGrMC[2] := '';
  1755.                                 arGrMC[3] := '';
  1756.                                 TNVEDShort   := SubStr(KatMC.TNVED,1,6) ;
  1757.                               }
  1758.                End;
  1759.               }
  1760.  
  1761.                //условие для кирпича
  1762.               if (KatMC.TNVED = '6904100000') {
  1763.                Case KatMC.TNVED of
  1764.                '6904100000': { NumGrMC   := Word(11);
  1765.                                 arGrMC[2] := Trim(SpMCName);
  1766.                                 arGrMC[3] := Trim(SpMCName);
  1767.                                 TNVEDShort := SubStr(KatMC.TNVED,1,6) ;
  1768.                               }
  1769.                  End;
  1770.             }
  1771.  
  1772.            GetArrayPackages;
  1773.            tbSPInv.NumGroupMC := NumGrMC;
  1774.            tbSPInv.SokrTNVED := TNVEDShort;
  1775.  
  1776.            If (Not PrPackMC)
  1777.  
  1778.              If (Insert current tbSPInv = tsOk)
  1779.                FormDone := True;
  1780.  
  1781.              If Modifier GetFirst tbGrSPInv  Where (( trim(NumGrMC) == tbGrSPInv.NumGroupMC   )) = tsOk
  1782.               {
  1783.                tbGrSPInv.NumGroupMC := NumGrMC;
  1784.                tbGrSPInv.TNVED_MC   := KatMC.TNVED;
  1785.                tbGrSPInv.enTNVED_MC := '';
  1786.  
  1787.                If ( KatOtpEd.Koef<>1 )
  1788.                 {
  1789.                  tbGrSPInv.Kolvo  += round(SpStep.KolSkl*KatOtpEd.Koef,3);
  1790.                  tbGrSPInv.Kolvo1 += SpStep.KolSkl;
  1791.                  tbGrSPInv.NetW   += round(KatMC.Massa*SpStep.KolSkl*KatOtpEd.Koef,0);                  //27-07-2018 добавлено округление как в старом ресурсе
  1792.                  tbGrSPInv.GrossW += round((KatMC.Massa+KatMC.MTara)*SpStep.KolSkl*KatOtpEd.Koef,0);    //27-07-2018 добавлено округление как в старом ресурсе
  1793.                 }
  1794.                Else
  1795.                 {
  1796.                  tbGrSPInv.Kolvo  += round(SpStep.KolSkl,3);
  1797.                  tbGrSPInv.NetW   += round(KatMC.Massa*SpStep.KolSkl,0);               //27-07-2018 добавлено округление как в старом ресурсе
  1798.                  tbGrSPInv.GrossW += round((KatMC.Massa+KatMC.MTara)*SpStep.KolSkl,0); //27-07-2018 добавлено округление как в старом ресурсе
  1799.                 }
  1800.  
  1801.                 //объем м3 = объем всех ящиков
  1802.              if  (KatOtpEdAkt.KOEF = 1) {
  1803.               tbGrSPInv.ob_p += (SpStep.KolSkl / KatOtpEdBox.KOEF) * KatMC.volume;      //наращиваем объем всех ящиков для отп.ед. м2
  1804.              } else {
  1805.               tbGrSPInv.ob_p += (SpStep.KolSkl/(KatOtpEdBox.KOEF/KatOtpEdAkt.KOEF)) * KatMC.volume;   //наращиваем объем всех ящиков для отп.ед. шт
  1806.              }
  1807.  
  1808.              //   message (string(KatMC.Massa));
  1809.              //   message (string(KatMC.MTara));
  1810.              //   message ('1 '+KatMC.NAME+' = '+  SpStep.KolSkl +' * ('+KatMC.Massa +'+'+KatMC.MTara+')')   ;
  1811.                 //message (tbGrSPInv.GrossW);
  1812.  
  1813.  
  1814.                Update current tbGrSPInv;
  1815.                }
  1816.              Else
  1817.               {
  1818.                ClearBuffer(#tbGrSPInv);
  1819.                tbGrSPInv.NumGroupMC  := NumGrMC;
  1820.                tbGrSPInv.TNVED       := arGrMC[1];
  1821.                tbGrSPInv.TNVED_MC    := KatMC.TNVED;
  1822.                tbGrSPInv.enTNVED_MC := '';
  1823.  
  1824.                tbGrSPInv.NameGroupMC := arGrMC[2];
  1825.                tbGrSPInv.NameGroupMCEN := arGrMC[3];   //07-06-2018
  1826.  
  1827.                tbGrSPInv.EDIzm  := EdGR;
  1828.  
  1829.  
  1830.  
  1831.                If GetFirst KatOtpEd = tsOk  {
  1832.                 tbGrSPInv.EdOtp   := LoCase(SubStr(KatOtpEd.Name,1,2));
  1833.                 tbGrSPInv.EdOtpEN  := EdEngl(LoCase(SubStr(KatOtpEd.Name,1,2)));    //07-06-2018
  1834.                  }
  1835.  
  1836.  
  1837.                If GetFirst KatED = tsOk    {
  1838.                if KatMC.TNVED = '6904100000' then { //для кирпича обрезать ед.измерения не нужно
  1839.                tbGrSPInv.EdUch := LoCase(KatED.Name);
  1840.                tbGrSPInv.EdUchEN  := EdEngl(LoCase(KatED.Name));  //07-06-2018
  1841.                } else {
  1842.                tbGrSPInv.EdUch := LoCase(SubStr(KatED.Name,1,2));
  1843.                tbGrSPInv.EdUchEN  := EdEngl(LoCase(SubStr(KatED.Name,1,2)));  //07-06-2018
  1844.                }
  1845.                }
  1846.  
  1847.                If ( KatOtpEd.Koef <> 1 )
  1848.                 {
  1849.                  tbGrSPInv.Kolvo  := SpStep.KolSkl*KatOtpEd.Koef;
  1850.                  tbGrSPInv.Kolvo1 := SpStep.KolSkl;
  1851.                  tbGrSPInv.NetW   := round(KatMC.Massa*SpStep.KolSkl*KatOtpEd.Koef,0);               //27-07-2018 добавлено округление как в старом ресурсе
  1852.                  tbGrSPInv.GrossW := round((KatMC.Massa+KatMC.MTara)*SpStep.KolSkl*KatOtpEd.Koef,0); //27-07-2018 добавлено округление как в старом ресурсе
  1853.                  tbGrSPInv.EDIzm  := LoCase(SubStr(KatED.Name,1,2)+'/'+SubStr(KatOtpEd.Name,1,2));
  1854.                    //07-06-2018
  1855.                  tbGrSPInv.EDIzmEN  := EdEngl(LoCase(SubStr(KatED.Name,1,2)))+ ' / ' + EdEngl(LoCase(SubStr(KatOtpEd.Name,1,2)));
  1856.                 }
  1857.                Else
  1858.                 {
  1859.                  tbGrSPInv.Kolvo  := SpStep.KolSkl;
  1860.                  tbGrSPInv.NetW   := round(KatMC.Massa*SpStep.KolSkl,0);               //27-07-2018 добавлено округление как в старом ресурсе
  1861.                  tbGrSPInv.GrossW := round((KatMC.Massa+KatMC.MTara)*SpStep.KolSkl,0); //27-07-2018 добавлено округление как в старом ресурсе
  1862.                  tbGrSPInv.EDIzm := LoCase(KatOtpEd.Name);
  1863.                   //07-06-2018
  1864.                  tbGrSPInv.EDIzmEN  := EdEngl(LoCase(KatOtpEd.Name));
  1865.                 }
  1866.                // message ('2 '+KatMC.NAME+' = '+  SpStep.KolSkl +' * ('+KatMC.Massa +'+'+KatMC.MTara+')')   ;
  1867.                // message (tbGrSPInv.GrossW);
  1868.                 if KatMC.TNVED = '4415202000'  then {
  1869.                    vesPod := KatMC.Massa+KatMC.MTara;
  1870.                 }
  1871.                  //если выделяется грузоместо для сидений
  1872.                  //в FR отнимаем от общего веса в строке санизделий вес грузоместа сидений
  1873.                  if (KatMC.TNVED = '3922200000') and pr = 1 then {
  1874.                    tbGrSPInv.GrossW := vesPod + tbGrSPInv.GrossW ;
  1875.                    mSid  := vesPod;   //вес поддона грузоместа
  1876.                   }
  1877.                    //07-06-2018
  1878.                If ( KatMC.TNVED = '7016100000' Or SubStr(KatMC.TNVED,1,6) = '690721' Or
  1879.                     Substr(KatMC.TNVED,1,6) = '690723' Or SubStr(KatMC.TNVED,1,6) = '690722' Or
  1880.                     Substr(KatMC.TNVED,1,6) = '690730' )
  1881.                  {
  1882.                   If ( KatMC.TNVED = '7016100000' )  {
  1883.                     tbGrSPInv.NameGroupMCPack := 'Изделия из стекла';
  1884.                     tbGrSPInv.NameGroupMCPackEN := 'Glass elements';
  1885.                     tbGrSPInv.ShortTNVED_MC    := Substr(KatMC.TNVED,1,6);
  1886.                      }
  1887.  
  1888.                   If ( SubStr(KatMC.TNVED,1,6) = '690721' ) {
  1889.                     tbGrSPInv.NameGroupMCPack := 'Плитка керам.: ' + SubStr(KatMC.TNVED,1,6);
  1890.                     tbGrSPInv.NameGroupMCPackEN := 'Ceramic tiles';
  1891.                     tbGrSPInv.ShortTNVED_MC    := Substr(KatMC.TNVED,1,6);
  1892.                     }
  1893.  
  1894.                   If ( SubStr(KatMC.TNVED,1,6) = '690723' ) {
  1895.                     tbGrSPInv.NameGroupMCPack := 'Плитка керам.: ' + SubStr(KatMC.TNVED,1,6);
  1896.                     tbGrSPInv.NameGroupMCPackEN := 'Ceramic tiles';
  1897.                     tbGrSPInv.ShortTNVED_MC    := Substr(KatMC.TNVED,1,6);
  1898.                     }
  1899.  
  1900.                   If ( SubStr(KatMC.TNVED,1,6) = '690722' ) {
  1901.                     tbGrSPInv.NameGroupMCPack := 'Плитка керам.: ' + SubStr(KatMC.TNVED,1,6);
  1902.                     tbGrSPInv.NameGroupMCPackEN := 'Ceramic tiles';
  1903.                     tbGrSPInv.ShortTNVED_MC    := Substr(KatMC.TNVED,1,6);
  1904.                     }
  1905.  
  1906.                   If ( SubStr(KatMC.TNVED,1,6) = '690730' )  {
  1907.                     tbGrSPInv.NameGroupMCPack := 'Ковры мозаич.: ' + SubStr(KatMC.TNVED,1,6);
  1908.                     tbGrSPInv.NameGroupMCPackEN := 'Ковры мозаич.';
  1909.                     tbGrSPInv.ShortTNVED_MC    := Substr(KatMC.TNVED,1,6);
  1910.                     }
  1911.  
  1912.                  }
  1913.               //07-06-2018
  1914.               //вес и кол-во поддонов
  1915.               if (KatMC.TNVED = '4415202000' or
  1916.                Trim(KATMC.BARKOD)='Т000001' Or
  1917.                 Trim(KATMC.BARKOD)='Т000002' Or
  1918.                 Trim(KATMC.BARKOD)='Т000003' Or
  1919.                 Trim(KATMC.BARKOD)='99010086-9') {
  1920.                  kolPalletKir := tbGrSPInv.Kolvo;
  1921.                 GrossWPalletS := GrossWPalletS + tbGrSPInv.GrossW;
  1922.                  }
  1923.                  //07-06-2018
  1924.                  //для санизделий прибавляем вес поддонов
  1925.             if KatMC.TNVED = '6910100000'  {
  1926.                tbGrSPInv.GrossW := tbGrSPInv.GrossW+pPallet /*GrossWPalletS*/;
  1927.              tbGrSPInv.ShortTNVED_MC := Substr(KatMC.TNVED,1,6);
  1928.               }
  1929.                 //07-06-2018
  1930.                 //для кирпича  прибавляем вес поддонов и считаем их кол-во
  1931.                  if  KatMC.TNVED = '6904100000' {
  1932.                    tbGrSPInv.Packages := kolPalletKir;
  1933.                  //arPackages[13] := kolPalletKir;
  1934.                      tbGrSPInv.GrossW := tbGrSPInv.GrossW + GrossWPalletS/*GrossWPallet*/;
  1935.                      colBrikPod := round(SpStep.KolSkl /KatOtpEdPack.koef, 0)//вол-во грузомест
  1936.                      //message (GrossWPalletS);
  1937.                  }
  1938.  
  1939.                  if  KatMC./*TNVED*/KGROUPMC = /*'4415202000'*/'41' {
  1940.                    wBrikPallets := GrossWPalletS;
  1941.                    //message(wBrikPallets + ' вес своих поддонов');
  1942.                  }
  1943.                  //если в накладной нету поддонов, значит покупатель берет собственные
  1944.                  //в галактике вес собственных не вносится и ориентировочно равен 30 кг
  1945.                  if GrossWPalletS  = 0 {
  1946.                    wBrikPallets := colBrikPod * 30;
  1947.                      //GrossWPalletS := katotped.cmcusl;
  1948.                      //message(colBrikPod + ' поддоны(грузоместа)');
  1949.                      //message(SpStep.KolSkl /KatOtpEdPack.koef + ' кол_груз_мест');
  1950.                      //message(ROUND(SpStep.KolSkl, 3) + ' кирпичей отложено');
  1951.                      //message(ROUND(KatOtpEdPack.koef, 3) + ' коэф');
  1952.                      //message(wBrikPallets + ' вес поддонов заказчика');
  1953.                    }
  1954.                If (Not PrPackMC) {
  1955.                 Insert current tbGrSPInv;
  1956.               }
  1957.            }
  1958.            // средство пакетирования
  1959.             If (PrPackMC) {       //поддоны  покупателя
  1960.              If ((Not PrSopr) Or (PalletSan+PalletPlit)>0)
  1961.                 {
  1962.                  If PalletSan > 0
  1963.                   {       // поддоны для сантехники
  1964.                    KolPackSI := PalletSan;
  1965.                    GrossWPackSI := Round((katmc.massa + katmc.mtara)*PalletSan,2);
  1966.                    WPackSI := KatMC.Massa + KatMC.Mtara;
  1967.                    PalletSan := 0;
  1968.                   }
  1969.  
  1970.                  If PalletPlit > 0
  1971.                   {
  1972.                    KolPackPL := PalletPlit;          //  плитка поддоны покупателя
  1973.                    GrossWPackPL := Round((KatMC.massa+KatMC.mtara)*PalletPlit,2);
  1974.                    PalletPlit := 0;
  1975.                   }
  1976.  
  1977.                  If GetFirst Dores = tsOk
  1978.                   {
  1979.                    _Loop Dores
  1980.                     {
  1981.                      //If dores.cpodr = Comp(4000A36470B40052h) Or (dores.cmol = Comp(281474976710891) And PrSanIzd)
  1982.                      If Dores.cpodr = Comp(4000A36470B40052h) Or (Dores.cmol = Comp(281474976710891))
  1983.                      {
  1984.                      KolPackSI += Dores.kol;                      //  сантехника
  1985.                       GrossWPackSI += Round((KatMC.massa + KatMC.mtara)*Dores.kol,2);
  1986.                       WPackSI := KatMC.massa + KatMC.mtara;
  1987.                      }
  1988.                      Else
  1989.                      {
  1990.  
  1991.                       KolPackPL += dores.kol;
  1992.                       GrossWPackPL += Round((KatMC.massa + KatMC.mtara)*Dores.kol,2);
  1993.                      }
  1994.                     }//_Loop Dores
  1995.                   }//If GetFirst Dores
  1996.                 }//If ((Not PrSopr) Or (PalletSan+PalletPlit)>0)
  1997.  
  1998.               If Modifier GetFirst tbSPInvPack Where (( Trim(KATMC.BARKOD) == tbSPInvPack.BARKOD )) = tsOk
  1999.                {
  2000.                If (BaseDoc.Vhodnal = Word(1)) //Налоги включены в цену
  2001.                   tbSPInvPack.SumWithNDS += SpStep.Price * SpStep.KolSkl;
  2002.  
  2003.                 If (BaseDoc.Vhodnal = Word(2)) //Налоги не включены
  2004.                   tbSPInvPack.SumWithNDS += SpStep.Price * SpStep.KolSkl + SpStep.NDS;
  2005.  
  2006.                 tbSPInvPack.SumNoNDS   += SpStep.Summa;
  2007.                 tbSPInvPack.SumNDS     += SpStep.NDS;
  2008.  
  2009.                 If ( KatOtpEd.Koef <> 1 ) {
  2010.                   tbSPInvPack.Kolvo += SpStep.KolSkl*KatOtpEd.Koef;
  2011.                 } Else {
  2012.                   tbSPInvPack.Kolvo += SpStep.KolSkl;
  2013.                 }
  2014.  
  2015.                Update current tbSPInvPack;
  2016.                packet := tbSPInvPack.Kolvo;
  2017.               }
  2018.              Else
  2019.               {
  2020.               ClearBuffer(#tbSPInvPack);
  2021.  
  2022.                tbSPInvPack.NameGroupMC := 'Средство пакетирования';
  2023.                tbSPInvPack.NameGroupMCEN := 'Packages';
  2024.                tbSPInvPack.BARKOD      := Trim(KATMC.BARKOD);
  2025.                tbSPInvPack.PriceNoNDS  := SpStep.Price;
  2026.  
  2027.                /*If (TRIM(KATMC.BARKOD)='Т000001' Or TRIM(KATMC.BARKOD) = 'Т000002')*/
  2028.                //Средства пакетирования проставляются только для кирпича.
  2029.                //Следовательно обработаем только поддоны для кирпича определив их по баркоду
  2030.                If (TRIM(KATMC.BARKOD)='Т000003')
  2031.  
  2032.                  If GetFirst ANamCO = tsOk
  2033.                    If GetFirst AValCO = tsOk
  2034.                      tbSPInvPack.COrigin := AValCO.VSTRING;
  2035.  
  2036.                      IF   AValCO.VSTRING = 'РБ' and ((ReportID = Word(0005) and OptInv = Word(1))
  2037.                      OR (ReportID = Word(0007) and OptInv = Word(0)) OR (ReportID = Word(0003))OR (ReportID = Word(0003)) ) {
  2038.                           tbSPInvPack.COrigin := 'РБ';
  2039.                      }
  2040.  
  2041.                If ( SpStep.NDS <> 0 )  {
  2042.                  tbSPInvPack.NDS := DoubleToStr((doGetTune('NALOG.STAV1')),'66')+'%';
  2043.                  } else {     //07-06-2018  что бы в отчете выводилось не пустое поле, 0%
  2044.                     tbSPInvPack.NDS := '0%';
  2045.                  }
  2046.  
  2047.                If (BaseDoc.Vhodnal = Word(1)) //Налоги включены в цену
  2048.                  tbSPInvPack.SumWithNDS := SpStep.Price * SpStep.KolSkl;
  2049.  
  2050.                If (BaseDoc.Vhodnal = Word(2)) //Налоги не включены
  2051.                  tbSPInvPack.SumWithNDS := SpStep.Price * SpStep.KolSkl + SpStep.NDS;
  2052.  
  2053.                tbSPInvPack.SumNoNDS   := SpStep.Summa;
  2054.                tbSPInvPack.SumNDS     := SpStep.NDS;
  2055.  
  2056.               If ( KatOtpEd.Koef <> 1 ) {
  2057.                   tbSPInvPack.Kolvo := SpStep.KolSkl*KatOtpEd.Koef;
  2058.               } Else {
  2059.                 tbSPInvPack.Kolvo := SpStep.KolSkl;
  2060.               }
  2061.  
  2062.              packet:= packet+tbSPInvPack.Kolvo;
  2063.  
  2064.              tbSPInvPack.Kolvo :=  packet;
  2065.  
  2066.  
  2067.                Insert current tbSPInvPack;
  2068.  
  2069.               } //tbSPInvPack.Kolvo :=  packet;
  2070.             }//If (PrPackMC)
  2071.           }//_Loop SpStep
  2072.          // tbGrSPInv.GrossW := tbGrSPInv.GrossW +1008;
  2073.        }//If GetFirst SpStep
  2074.      }//_Loop StepDoc
  2075.    }//If GetFirst StepDoc
  2076.  
  2077.   GrossWPackPL := Round(GrossWPackPL,0)
  2078.   GrossWPackSI := Round(GrossWPackSI,0) ;
  2079.   WPackSI      := Round(WPackSI,0)  //Round(GrossWPackSI / KolPackSI,2)
  2080.   WPackPL      := Round(GrossWPackPL / KolPackPL,2)  // т.к. в счете могут быть поддоны с разным весом
  2081.  
  2082.   For ( i := 1; i <= 15; i += 1) {
  2083.    arPackages[16] += arPackages[i];
  2084.    //message('arPackages[16] = '+arPackages[16]+'; KolPackPL = '+KolPackPL + '; arPackages['+i+'] = '+arPackages[i]);
  2085.   }
  2086.   //message('arPackages[16] = '+arPackages[16]+'; KolPackPL = '+KolPackPL + '; arPackages[1] = '+arPackages[1] + + '; arPackages[5] = '+arPackages[5]) ;
  2087.    //07-06-2018
  2088.    //если по cф поддонов больше, чем рассчитано по кодам ТНВЕД
  2089.  if KolPackPL > 0
  2090.    {
  2091.      if arPackages[16]< KolPackPL
  2092.      {
  2093.        //message(arPackages[1]);
  2094.        if arPackages[1] > 0
  2095.        { //если есть значение в облицовочной плитке, прибавляем остаток
  2096.          arPackages[1] := arPackages[1] + (KolPackPL - arPackages[16]);
  2097.          //message(arPackages[1] + 'inside');
  2098.        }
  2099.        else
  2100.        {
  2101.          if  arPackages[1] = 0 and arPackages[4] > 0
  2102.          {// иначе смотрим есть ли значение в неглаз. плитке для пола и добавляем к ней остаток
  2103.            arPackages[4] := arPackages[4] + (KolPackPL - arPackages[16]);
  2104.          }
  2105.          else
  2106.          {
  2107.            if  arPackages[5] > 0
  2108.            {// иначе смотрим есть ли значение в глаз. плитке для пола и добавляем к ней остаток
  2109.              arPackages[5] := arPackages[5] + (KolPackPL - arPackages[16]);
  2110.            }
  2111.  
  2112.          }
  2113.        }
  2114.  
  2115.        arPackages[16] := 0; //обнуляем итог
  2116.        For (i := 1; i <= 15; i += 1) //суммируем заново сумму поддонов по коду ТНВЕД
  2117.          arPackages[16] += arPackages[i];
  2118.      }
  2119.    }
  2120.      //если поддоны не распределились по группе плиток
  2121.    if  arPackages[16] = 0 {
  2122.         if (arPackages[1] = 0 and  arPackages[5] = 0 and arPackages[4] = 0)  {
  2123.            if pr_obl = 1 {
  2124.              arPackages[1] := KolPackPL;
  2125.            }
  2126.  
  2127.            if pr_ng = 1 {
  2128.              arPackages[4]:= KolPackPL;
  2129.            }
  2130.  
  2131.           if pr_gl = 1 {
  2132.             arPackages[5]:= KolPackPL;
  2133.           }
  2134.       }
  2135.  
  2136.       arPackages[16] := 0; //обнуляем итог
  2137.        For (i := 1; i <= 15; i += 1) //суммируем заново сумму поддонов по коду ТНВЕД
  2138.          arPackages[16] += arPackages[i];
  2139.    }
  2140.    //endif
  2141.   ArrayToVar;
  2142.  
  2143.   if (ReportID = Word(0001) Or // Счет-фактура в валюте (жд, авто 24_0005)
  2144.       ReportID = Word(0002) Or // Счет на оплату в валюте (жд, авто 24_0005)
  2145.       ReportID = Word(0005) Or // 'Счет-фактура в валюте ENGL (жд, авто 24_0005)'
  2146.       ReportID = Word(0007) Or //'Счет на оплату в валюте ENGL (жд, авто 24_0005)'
  2147.       ReportID = Word(0008)    // Счет-фактура в валюте со штрих-кодом
  2148.       )
  2149.     {
  2150.      If Message('Указать банковские реквизиты?',YesNo)=cmYes
  2151.        isPrintReqiz := 1;
  2152.      Else
  2153.        isPrintReqiz := 0;
  2154.     };
  2155.   If (ReportID = Word(3) Or
  2156.       ReportID = Word(4)
  2157.       )
  2158.    UpdateTbGrSPInv;
  2159.   Else
  2160.    If (
  2161.        ReportID <> Word(0013)
  2162.       )  {  //для CMR кирпича не вызываем
  2163.    RunWindowModal(WnPackPyTNVED);
  2164.    }
  2165.  
  2166.  }//If GetFirst BaseDoc
  2167. }//Procedure FillSpecification;
  2168.  
  2169. Procedure FillReport;
  2170. {
  2171. StartNewVisual(vtNumericVisual, vfTimer+vfBreak+vfConfirm,
  2172.   ''#3'Обработка данных: ДО', 1);
  2173.  
  2174. Delete All tbGrSPInv;
  2175. Delete All tbSPInv;
  2176.  
  2177. FormDone      := False;
  2178. PrMyBankSwift := False;
  2179. PrBankCorr    := False;
  2180.  
  2181. FillHeader;
  2182. FillSpecification;
  2183. PrintSopr;
  2184.     //для CMR по кирпичу заполняем уточняющие данные
  2185.    If (
  2186.        ReportID = Word(0013)
  2187.       )  {
  2188.    RunWindowModal(WnCustomerTran)
  2189.    };
  2190.  
  2191. StopVisual('',0);
  2192. }
  2193.  
  2194. DataStream InvDataStream
  2195. (
  2196.  
  2197.  [NameDocSF]       NameDocSF;
  2198.  [NameDocSFEN]     If(OptInv = Word(1), 'Invoice', 'Invoice for payment');
  2199.  [NumDocSF]        BaseDoc.NoDoc;
  2200.  
  2201.  [MyOrg]           MyOrg;
  2202.  [IndexMyOrg]      IndexMyOrg;
  2203.  [UNNMyOrg]        UNNMyOrg;
  2204.  [AddrMyOrg]       AddrMyOrg;
  2205.  [AddrMyOrgTotal]  AddrMyOrgTotal;
  2206.  
  2207.  [BuyOrg]          BuyOrg;
  2208.  [IndexBuyOrg]     IndexBuyOrg;
  2209.  [UNNBuyOrg]       UNNBuyOrg;
  2210.  [AddrBuyOrg]      AddrBuyOrg;
  2211.  [AddrBuyOrgTotal] AddrBuyOrgTotal;
  2212.  [AddrBuyOrgTotalEngl] IF (AddrBuyOrgTotalEngl='','',AddrBuyOrgTotalEngl+'/');
  2213.  
  2214.  [OrgGruzOtpr]       OrgGruzOtpr;
  2215.  [IndexGruzOtpr]     IndexGruzOtpr;
  2216.  [AddrGruzOtpr]      AddrGruzOtpr;
  2217.  [AddrGruzOtprTotal] AddrGruzOtprTotal;
  2218.  
  2219.  [OrgGruzPol]       OrgGruzPol;
  2220.  [OrgGruzPolEngl]   if(OrgGruzPolEngl='','',OrgGruzPolEngl+if(AddrGruzPolTotalEngl='',' / ',', ')) ;
  2221.  [IndexGruzPol]     IndexGruzPol;
  2222.  [AddrGruzPol]      AddrGruzPol;
  2223.  [AddrGruzPolTotal] AddrGruzPolTotal;
  2224.  [AddrGruzPolTotalEngl] if(AddrGruzPolTotalEngl='','',AddrGruzPolTotalEngl+' / ');
  2225.  [CityFrom]         CityFrom;
  2226.  [CityTo]           CityTo;
  2227.  
  2228.  
  2229.  //Реквизиты Банка
  2230.  [PrTypeMoney]      BaseDoc.TIPMONEY;
  2231.  [FieldMyBankMFO]   If(PrMyBankSwift, 'SWIFT', 'МФО');
  2232.  [PrBankCorr]       PrBankCorr;
  2233.  
  2234.  [MyBankName]       MyBankName;
  2235.  [MyBankAddr]       MyBankAddr;
  2236.  [MyBankSwift]      MyBankSwift;
  2237.  [MyBankAcc]        MyBankAcc;
  2238.  [CorrBankName]     CorrBankName;
  2239.  [CorrBankSwift]    CorrBankSwift;
  2240.  [CorrBankAcc]      CorrBankAcc;
  2241.  
  2242.  [BazisPost]       TipOtg.Name;
  2243.  [BazisPostEngl]   AValTipOgr.VSTRING + If(Trim(AValTipOgr.VSTRING) = '','',' / ');      //28-03-2019
  2244.  
  2245.  [DestPost]        AValDest.VSTRING;
  2246.  
  2247.  [Container]       Container;
  2248.  [NumVagon]        NumVagon;
  2249.  [NumSoprRailway]  NumSoprRailway;
  2250.  
  2251.  [DelConditions]   If(Trim(DelConditions)='','FCA Г.МИНСК',DelConditions);
  2252.  [DelConditionsEN] If(Trim(DelConditions)='','FCA, Minsk / Г.МИНСК', if (trim(DelConditionsEngl)='',replace (DelConditions,'Г.МИНСК','Minsk'),trim(DelConditionsEngl)+'/'+replace (DelConditions,'Г.МИНСК','Minsk')));
  2253.  
  2254.  [StationOtpr]     StationOtpr;
  2255.  [StationOtprEngl] StationOtprEngl;
  2256.  
  2257.  [NumSopr]         NumSopr;
  2258.  [NumDateDog]      DOGOVOR.NODOC + ' от '+ DateToStr(DOGOVOR.DDOC,'DD/MM/YYYY');
  2259.  [NumDateDogEn]    DOGOVOR.NODOC + ' dd '+ DateToStr(DOGOVOR.DDOC,'DD/MM/YYYY');
  2260.  [NumPlatDoc]      If(PrUzbek,DOGOVOR.NODOC + ' от '+ DateToStr(DOGOVOR.DDOC,'DD/MM/YYYY'),NumDatePlat);
  2261.  [NumPlatDocV2]    NumDatePlat;
  2262.  [DateDoc]         DateDoc;
  2263.  
  2264.  [PalletSan]       PalletSan;
  2265.  [PalletPlit]      PalletPlit;
  2266.  [ZagPrice]        ZagPrice;
  2267.  [ZagPriceEN]      ZagPriceEN;
  2268.  
  2269.  [vCurrency]       If(PrUkraine,vCurrency,'');
  2270.  [vSimvolV]        vSimvolV;
  2271.  
  2272.  [TotalSumNoNDS]     DoubleToStr(Round(TotalSumNoNDS,2),FormatSum);
  2273.  [TotalSumNDS]       DoubleToStr(Round(TotalSumNDS,2),FormatSum);
  2274.  
  2275.  
  2276.  [TotalSumWithNDS]   DoubleToStr(Round(TotalSumWithNDS + SumZalog,2),FormatSum);
  2277.  
  2278.  
  2279.  
  2280.  [TotalSumWithNDS_D] Round(TotalSumWithNDS + SumZalog,2);
  2281.  
  2282.  [TotalSumWithNDSEngl_D] replace(DoubleToStringInVal (CVAL,Round(TotalSumWithNDS + SumZalog,2)),'thousands','thousand');
  2283.  [SumZalog]          DoubleToStr(Round(SumZalog,2),FormatSum);
  2284.  [SumZalog_D]        SumZalog;
  2285.  
  2286.  [Transport]         Transport;
  2287.  
  2288.  [arSign_Posit_1]    arSign_Posit[1];
  2289.  [arSign_Posit_2]    arSign_Posit[2];
  2290.  [arSign_Posit_3]    arSign_Posit[3];
  2291.  
  2292.  [arSign_Name_1]     arSign_Name[1];
  2293.  [arSign_Name_2]     arSign_Name[2];
  2294.  [arSign_Name_3]     arSign_Name[3];
  2295.  [massSid]           round(mSid, 0);   //13/11/18
  2296.  [wBrikPallets]      wBrikPallets; //добавил вес тары кирпича отдельной переменной чтоб не сломать чужой код
  2297.  [colBrikPod]        colBrikPod;
  2298.  [isPrintReqiz]      isPrintReqiz;
  2299.  [kolPalletKir]      kolPalletKir;
  2300.  
  2301.  //Данные для CMR
  2302.  [TTNNum]          KATSOPR.NSOPR;
  2303.  [TTNDate]         /*KATSOPR.DSOPR*/basedoc.nrec;
  2304.  [CMRNum]          addCmrNum;
  2305.  [tStartLoad]      TTNDOC.TPUNPBEG;
  2306.  [tFinishLoad]     TTNDOC.TPUNPEND;
  2307.  [dStartLoad]      TTNDOC.DPUNRBEG;
  2308.  [dFinishLoad]     TTNDOC.DPUNREND;
  2309.  [showPasport]     showPasport;
  2310.  [showSertConf]    showSertConf;
  2311.  [showSertOrigin]  showSertOrigin;
  2312.  [showDeclConf]    showDeclConf;
  2313.  [telGruzPol]      telGruzPol;
  2314.  [nameStatePol]    KatStatePol.Name;
  2315.  [grRowCount]      grRowCount;
  2316.  [custName]        custName;
  2317.  [custCountry]     custCountry;
  2318.  [custAddress]     custAddress;
  2319.  [trailer]         AValTrailer.VSTRING;
  2320.  [avto]            AValAvto.VSTRING;
  2321.  [BackCargo]       AValBackCargo.VSTRING;
  2322.  [PaymCond ]       getPaymCond(shipment.name);
  2323.  
  2324.  
  2325.  Table tbGrSPInv (
  2326.   [tbGrSPInv_NumGroupMC]      tbGrSPInv.NumGroupMC;
  2327.   [tbGrSPInv_TNVED]           tbGrSPInv.TNVED;
  2328.   [tbGrSPInv_TNVEDKatMC]      Replace(tbGrSPInv.TNVED,' ','');
  2329.   [tbGrSPInv_ShortTNVED_MC]   tbGrSPInv.ShortTNVED_MC;
  2330.   [tbGrSPInv_TNVED_MC]        tbGrSPInv.TNVED_MC;
  2331.   [tbGrSPInv_enTNVED_MC]      tbGrSPInv.enTNVED_MC;
  2332.   [tbGrSPInv_NameGroupMC]     tbGrSPInv.NameGroupMC;
  2333.   [tbGrSPInv_NameGroupMCEN]   tbGrSPInv.NameGroupMCEN;
  2334.   [tbGrSPInv_NameGroupMCPack] tbGrSPInv.NameGroupMCPack;
  2335.   [tbGrSPInv_NameGroupMCPackEN] tbGrSPInv.NameGroupMCPackEN;
  2336.   [tbGrSPInv_EdOtp]           If(tbGrSPInv.Kolvo1<>0, 'шт'/*tbGrSPInv.EdOtp*/,'');
  2337.   [tbGrSPInv_EdOtpEN]         If(tbGrSPInv.Kolvo1<>0, 'pc'/*tbGrSPInv.EdOtpEN*/,'');
  2338.   [tbGrSPInv_EdUch]           tbGrSPInv.EdUch;
  2339.   [tbGrSPInv_EdUchEN]         tbGrSPInv.EdUchEN;
  2340.   [tbGrSPInv_EDIzm]           If(tbGrSPInv.Kolvo1<>0,tbGrSPInv.EdUch+'/ шт',tbGrSPInv.EDIzm);//tbGrSPInv.EDIzm    // т.к. по некоторым группа неверно выводятся ед в итоговых строчках
  2341.   [tbGrSPInv_EDIzmEN]         If(tbGrSPInv.Kolvo1<>0,tbGrSPInv.EdUchEN+'/pc',tbGrSPInv.EDIzmEN);//tbGrSPInv.EDIzmEN;
  2342.   [tbGrSPInv_KolvoGrMC]       If(tbGrSPInv.Kolvo1<>0,DoubleToStr(Round(tbGrSPInv.Kolvo,3),FormatKol)+'/'+DoubleToStr(tbGrSPInv.Kolvo1,'666666666'),DoubleToStr(Round(tbGrSPInv.Kolvo,3),FormatKol));
  2343.   [tbGrSPInv_Kolvo]           DoubleToStr(Round(tbGrSPInv.Kolvo,3),FormatKol);
  2344.   [tbGrSPInv_Kolvo1]          DoubleToStr(tbGrSPInv.Kolvo1,'666666666');
  2345.   [tbGrSPInv_Packages]        If(tbGrSPInv.Packages=0,'Часть паллеты',DoubleToStr(tbGrSPInv.Packages,'6666'));
  2346.   [tbGrSPInv_NetW]            Round(tbGrSPInv.NetW,0);
  2347.   [tbGrSPInv_GrossW]          If(PrUkraine,Round(tbGrSPInv.GrossW,2),Round(tbGrSPInv.GrossW,0));
  2348.   [tbGrSPInv_pRow]            tbGrSPInv.pRow;
  2349.   [TNVEDShortName]            nameMcCMR(Replace(tbGrSPInv.TNVED,' ',''));
  2350.   [NamePackages]              declensionPackages(tbGrSPInv.Packages);
  2351.   [volume]                    tbGrSPInv.ob_p + (tbGrSPInv.Packages * 0.144);    //объем плитки и сантехники. 0.144 - константа
  2352.   [volumeBrick]               colBrikPod * 0.1125 + ((tbGrSPInv.Kolvo/1.35*1000)/378); //0.1125 - константа 1,35 - перевод условных шт в обычные. 378 - кт- перевода в объем
  2353.  
  2354.  );
  2355.  
  2356.  Table tbSPInv (
  2357.   [tbSPInv_Name]    tbSPInv.Name;
  2358.   [tbSPInv_NameEN]  tbSPInv.NameEN;
  2359.   [tbSPInv_EdOtp]   tbSPInv.EdOtp;
  2360.   [tbSPInv_KoefOtp] tbSPInv.KoefOtp;
  2361.   [tbSPInv_EdUch]   tbSPInv.EdUch;
  2362.   [tbSPInv_EDIzm]   tbSPInv.EDIzm;
  2363.   [tbSPInv_EDIzmEN] tbSPInv.EDIzmEN;
  2364.  
  2365.   [tbSPInv_TNVED]   tbSPInv.TNVED;
  2366.   [tbSPInv_SokrTNVED] tbSPInv.SokrTNVED;
  2367.   [tbSPInv_Kolvo]      tbSPInv.Kolvo;
  2368.   [tbSPInv_PriceNoNDS] tbSPInv.PriceNoNDS;
  2369.   [tbSPInv_SumNoNDS]   tbSPInv.SumNoNDS;
  2370.   [tbSPInv_SumNDS]     tbSPInv.SumNDS;
  2371.   [tbSPInv_NDS]        tbSPInv.NDS;
  2372.   [tbSPInv_SumWithNDS] tbSPInv.SumWithNDS;
  2373.   [tbSPInv_COrigin]    tbSPInv.COrigin;
  2374.  
  2375.   [tbSPInv_NumGroupMC]  tbSPInv.NumGroupMC;
  2376.   [tbSPInv_NameGroupMC] tbSPInv.NameGroupMC;
  2377.  
  2378.   [tbSPInv_OBOZN]        tbSPInv.OBOZN;
  2379.  
  2380.   [tbSPInv_volume]        tbSPInv.volume; //объем продукции
  2381.   [tbSPInv_kBoxMc]        tbSPInv.kBoxMc; //коэффициент ед.изм. ящиков
  2382.   [tbSPInv_kAktMc]        tbSPInv.kAktMc; //коэффициент активной ед.изм.
  2383.   [tbSPInv_ob_p]          tbSPInv.ob_p;   //объем продукции по спецификации
  2384.  
  2385.  );
  2386.  
  2387.  Table tbSPInvPack (
  2388.    [tbSPInvPack_NameGroupMC] tbSPInvPack.NameGroupMC;
  2389.    [tbSPInvPack_NameGroupMCEN] tbSPInvPack.NameGroupMCEN;
  2390.    [tbSPInvPack_BARKOD]      tbSPInvPack.BARKOD;
  2391.    [tbSPInvPack_Kolvo]       Round(packet,0);  //изменено 23-07-2018 сумма пакетирования (поддонов) не сходилась с суммой поддонов в СФ
  2392.    [tbSPInvPack_PriceNoNDS]  DoubleToStr(Round(tbSPInvPack.PriceNoNDS,2),FormatSum);
  2393.    [tbSPInvPack_NDS]         tbSPInvPack.NDS;
  2394.    [tbSPInvPack_SumWithNDS]  DoubleToStr(Round(tbSPInvPack.SumWithNDS,2),FormatSum);
  2395.    [tbSPInvPack_SumNoNDS]    DoubleToStr(Round(tbSPInvPack.SumNoNDS,2),FormatSum);
  2396.    [tbSPInvPack_SumNDS]      DoubleToStr(Round(tbSPInvPack.SumNDS,2),  FormatSum);
  2397.    [tbSPInvPack_COrigin]     tbSPInvPack.COrigin;
  2398.  
  2399.  );
  2400. )
  2401. Handleevent table tbSPInv //Handleevent уровня Table
  2402.  cmOnProcess:
  2403.    if (not NextVisual)
  2404.      BreakProcess;
  2405. end;
  2406.  
  2407. Handleevent //Handleevent уровня DataStream
  2408.  cmPreProcess:
  2409.    StartNewVisual(vtRotateVisual, vfTimer + vfBreak + vfConfirm, 'Формируется отчет в FastReport', 0);
  2410.  
  2411.  cmPostProcess:
  2412.    StopVisual('', 0);
  2413. end;
  2414. end;//DataStream
  2415.  
  2416. Function PrintFR(cBaseDoc : Comp; ReportName : String; kodNrec : MasVidSopr) : Boolean;
  2417. {
  2418. saveInLogTable(ReportName, 'OPEN', 'nrec = '+ cBaseDoc, '');
  2419. Result     := False;
  2420. //ccBaseDoc  := cBaseDoc;
  2421.      //заполняем #tPickDoc
  2422.      Delete All tPickDoc;
  2423. for (i := 1; i<= count (kodNrec); i := i+1){
  2424.   if (kodNrec[i] <> comp(0)){
  2425.   tPickDoc.cRec := kodNrec[i];
  2426.   Insert current tPickDoc;
  2427.   message('вставлен crec в to tPickDoc: '+ kodNrec[i])
  2428.  }
  2429. };
  2430.  
  2431. _Loop tPickDoc
  2432. {
  2433.  message(' Циклом приходимся по tPickDoc.cRec:  '+ tPickDoc.cRec);
  2434. };
  2435.  
  2436. Case ReportName of
  2437.  'Счет-фактура в валюте (жд, авто 24_0005)'       : { ReportID := Word(0001); OptInv := Word(1); }
  2438.  'Счет на оплату в валюте (жд, авто 24_0005)'     : { ReportID := Word(0002); OptInv := Word(0); }
  2439.  'Счет-фактура в валюте (МКЗ жд, авто 24_0005)'   : { ReportID := Word(0003); OptInv := Word(1); }
  2440.  'Счет на оплату в валюте (МКЗ жд, авто 24_0005)' : { ReportID := Word(0004); OptInv := Word(0); }
  2441.  'Счет-фактура в валюте ENGL (жд, авто 24_0005)'  : { ReportID := Word(0005); OptInv := Word(1); }
  2442.  'Счет на оплату в валюте ENGL (жд, авто 24_0005)': { ReportID := Word(0007); OptInv := Word(0); }
  2443.  'Заявление на получение сертификата происхождения (24_0005)' : { ReportID := Word(0006); OptInv := Word(1);}
  2444.  'Счет-фактура в валюте со штрих-кодом (жд, авто 24_0005)'    : { ReportID := Word(0008); OptInv := Word(1);}
  2445.  'Счет на оплату в валюте со штрих-кодом (жд, авто 24_0005)'  : { ReportID := Word(0009); OptInv := Word(0);}
  2446.  'CMR-накладная Венесуэла, Ливия 24_0005'         : { ReportID := Word(0010); OptInv := Word(2);}
  2447.  'CMR-накладная Печать бланка 24_0005'            : { ReportID := Word(0011); OptInv := Word(2);}
  2448.  'CMR-накладная 24_0005'                          : { ReportID := Word(0012); OptInv := Word(2);}
  2449.  'CMR-накладная Кирпич принтер OKI 3310 24_0005'  : { ReportID := Word(0013); OptInv := Word(2);}
  2450. End;
  2451.  
  2452. Var
  2453.   ReportsNames: Array [0..0] of String;
  2454.  
  2455. FReport := FRCreate(InvDataStream);
  2456.  
  2457. FillReport;
  2458.  
  2459. If (FormDone)
  2460.  {
  2461.   If (FROpenReport(FReport, ReportName))
  2462.    {
  2463.     Var
  2464.      ExportParam : frxRTFExportParam;
  2465.  
  2466.     ClearAdvRecord(ExportParam);
  2467.     FRGetDefaultParameters(frExportRTF, ExportParam);
  2468.  
  2469.     ExportParam.ShowDialog      := False;
  2470.     ExportParam.OpenAfterExport := True;
  2471.     ExportParam.WISYWIG := False;
  2472.     ExportParam.Picture := False;
  2473.     ExportParam.PageBreaks := True;
  2474.  
  2475.     If (FRSetParameters(FReport, frExportRTF, ExportParam)) Then
  2476.      FRExportReport(FReport, frExportRTF, TranslatePath('%OutputFilesDirectory%' + ReportName + '.rtf'));
  2477.  
  2478.     saveInLogTable(ReportName, 'CLOSE', 'nrec = '+ cBaseDoc, 'Д-т № '+BaseDoc.NoDoc);
  2479.  
  2480.  //FRDesignReport(FReport);   //открыть дизайнер
  2481.    }
  2482.   Else
  2483.     Message('Не удалось загрузить шаблон отчета.')
  2484. }
  2485. Else
  2486. { Message(''#3'Нет данных для формирования отчета', Error); Exit; }
  2487.  
  2488. //RunWindowModal(WnFRPrintInv);
  2489.  FRDestroy(FReport);
  2490. Result := True;
  2491. }
  2492. end. //interface
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement