Block( Use('dcluses.ppu'), AppDCL('DCL'), DCL.SetStatus('Подготовка к печати'), DLL('D'), D.LoadLibrary('DES16.DLL', DCL.GetDES32Path()), Design('A'), D.Client(A), {Наименование таблиц - источников данных} Const('DOP', Integer, Global, 1), Const('PRIM', Integer, Global, 2), Const('Appendix', Integer, Global, 3), Const('DOPV', Integer, Global, 4), Const('AppendixRules2019July', Integer, Global, 5), Use('t-lib.ppu'), Const('PPDName', String, Global,DCL.GetPPDName()), {Служебные переменные} Var('BufString', String, Global), Var('BufMemo', Memo, Global), Var('BufFloat', Float, Global), Var('BufInt', Float, Global), Var('i', Integer, Global), Var('Flag', Integer, Global), Var('INIResult', String, Global), Const('AppendixText', Memo, Global, ""), Const('CurrencyAppendixText', String, Global, ''), Var('Pages', Integer, Global), Const('Page', Integer, Global, 2), Var('CH', Integer, Global), Var('PageCHLimit', Integer, Global), Var('CH1',Integer,Global), Const('GtdCargoNo', Integer, Local, 0), Const('SkipGrafa11To22InMethods23', Integer, Global, 0), {для совместимости с дтс-2} Var('ItogNumber', Memo, Global), Var('ItogCode', Memo, Global), Var('ItogSumma', Memo, Global), Var('ItogCourse', Memo, Global), Var('FindCrit', String, Global), Var('Loop', Integer, Global), {Настройки печати} Const('DecimCount', String, Global, DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Знаков после запятой в ДТС1', '4') ), Const('ClrSymb', String, Global, ''), If(DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Заполнение нулями ДТС1', '0') = '1', Let(@ClrSymb, '00') ), Const('NoZero', Integer, Global, 0), If(DCL.GetRegString('HKCU', AppRegKey('MAIN\CONFIG'), 'Подавлять нули в ДТС1', '0') = '1', Let(@NoZero, 1) ), Const('PrintNoEns', Integer, Global, 1), If(DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Груз не страховался', '1') = '0', Let(@PrintNoEns, 0) ), Const('G05', Integer, Global, DCL.GetRecordCount(DOP)), {Признак пустого доп. листа. В этом случае нужно записать константу в поле "Доп. данные"} Const('IsEmptyDoc', Integer, Global, 0), If(G05 = 0, Let(@IsEmptyDoc, 1), If(DCL.GetRegString('HKCU', AppRegKey('MAIN\VIEW'), 'UseNewPrintForm', '1') = '0', If(DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Добавочный лист ДТС1 пустой', '0') = '1', Let(@IsEmptyDoc, 1) ) ) ), If(IsEmptyDoc = 0, Block( DimArray('TovNumber', Integer, 1, G05), Const('AddCurrencyInfo11A', Integer, Global, 0), Const('AddCurrencyInfo11B', Integer, Global, 0), Const('AddCurrencyInfo25B', Integer, Global, 0), Const('CurrentRate', String, Global, ''), Const('FirstRate11A', String, Global, ''), Const('FirstRate11B', String, Global, ''), Const('FirstRate25B', String, Global, ''), DCL.MoveFirst(DOP), Let(@i, 1), While(Not(DCL.IsEOF(DOP)), Block( Let('Global.TovNumber' + i, DCL.GetFieldVal(DOP, 'NTOV')), If(IsRules2019July, If(i < 2, Block ( Let(@FirstRate11A, DCL.GetFieldVal(DOP, 'D113')), Let(@FirstRate11B, DCL.GetFieldVal(DOP, 'CurrCoursI')), Let(@FirstRate25B, DCL.GetFieldVal(DOP, 'TAMST_KURS')) ), Block ( If(AddCurrencyInfo11A = 0, Block ( Let(@CurrentRate, DCL.GetFieldVal(DOP, 'D113')), If(FirstRate11A <> CurrentRate, Let(@AddCurrencyInfo11A, 1) ) ) ), If(AddCurrencyInfo11B = 0, Block ( Let(@CurrentRate, DCL.GetFieldVal(DOP, 'CurrCoursI')), If(FirstRate11B <> CurrentRate, Let(@AddCurrencyInfo11B, 1) ) ) ), If(AddCurrencyInfo25B = 0, Block ( Let(@CurrentRate, DCL.GetFieldVal(DOP, 'TAMST_KURS')), If(FirstRate25B <> CurrentRate, Let(@AddCurrencyInfo25B, 1) ) ) ) ) ) ), Let(@i, i + 1), DCL.MoveNext(DOP) ) ), {Количество листов} If(Remainder(G05, 3)=0, Let(@Pages, G05/3), Let(@Pages, Convert(G05/3, Integer) + 1) ), Const('SelPagesStr', String, Global, DCL.GetPages(Pages)) ), Block( Let(@Pages, 1), Const('SelPagesStr', String, Global, '1') ) ), Const('PPDPage', String, Global, DCL.GetTmpPPD(32767)), Const('PPDDef', String, Global, DCL.GetTmpPPD(32766)), A.Load(PPDName), A.HSDP(0), A.SavePage(PPDPage), A.SDP('Default'), A.SavePage(PPDDef), Const('IsFirstPage', Integer, Global, 1), If(Length(SelPagesStr) > 0, Block( A.Clear(), Let(@Page, 1), While(Page <= Pages, Block( If(IsPageSelected(Page, SelPagesStr), Let(@IsFirstPage, GenerateDocPage(A, Page, IsFirstPage, DCL.GetTmpPPD(If(IsEmptyDoc, 0, Page)), 't1dpage.ppu')) ), Let(@Page, Page + 1) ) ), DCL.SetStatus('Печать'), A.SDP('Default'), A.LoadPage(PPDDef), A.HSDP(0), PrintDoc(A, 1, PPDName) ) ), D.DropClient(A), DropDesign(A), D.FreeLibrary(), DropDLL(D), DropAppDCL(DCL) )