Block( Use('dcluses.ppu'), AppDCL('DCL'), DCL.SetStatus('Подготовка к печати'), DLL('D'), D.LoadLibrary('DES16.DLL', DCL.GetDES32Path()), Design('INV'), D.Client(INV), Design('smpINV'), D.Client(smpINV), Const('PPDName', String, Global, DCL.GetPPDName()), Const('IsRus', Integer, Global, Pos('RUS', PPDName)), {Наименование таблиц - источников данных} Const('PRIM', Integer, Global, 1), Const('DOP', Integer, Global, 2), Const('EXP', Integer, Global, 3), Const('VALUTA', Integer, Global, 4), Var('BufString', String, Global), Var('BufString1', String, Global), {Var('SettingsMemo', Memo, Global),} Const('ValAbbr', String, Global, GetValAbbr(DCL.GetFieldVal(PRIM, 'G221'))), Var('BufInt', Integer, Global), Var('BufFloat', Float, Global), Var('BufSum', Float, Global), Var('BufMemo', Memo, Global), {Знаков после запятой в стоимостях} Var('DecCount', String, Global), Let(@DecCount, DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Округления в инвойсе', '2')), {Параметры для печати таблицы} Var('CurCode', String, Global), Var('LastCode', String, Global), Var('IsSubTotal', String, Global), { Буферные переменные для вычисления подитогов сгрупированных по кодам товаров} Var('SubTotal', Float, Global), Var('SubTotalBr', Float, Global), Var('SubTotalNt', Float, Global), Var('SubTotalMest', Float, Global), { Признак источника данных для сводной таблицы 1 - буферные переменные,} { не 1 - итоги из PRIM таблицы} Var('SubTotalSource', Float, Global), Let(@SubTotalSource, 1), Let(@IsSubTotal, DCL.GetRegString('HKCU', AppRegKey('MAIN\ПЕЧАТЬ'), 'Итоги по группам товаров в инвойсе', '0')), Var('TmpFileName', String, Global), {Для ускорения поисков в таблице товаров} Const('ND', String, Global, DCL.GetFieldVal(PRIM, 'ND')), Const('Page', Integer, Global, 1), Const('Pages', Integer, Global, 1), Const('SelPagesStr', String, Global, '1'), If(DCL.GetHostId()='DCL', Block( DCL.MoveLast(PRIM), Let(@Pages, DCL.GetFieldVal(PRIM, 'NPP')), If(Pages > Page, Let(@SelPagesStr, DCL.GetPages(Pages))) ) ), If(Length(SelPagesStr) > 0, Block( Let(@Page, 1), While(Page <= Pages, Block( If((DCL.IsPageSelected(Page, SelPagesStr) * DCL.FindFirst(PRIM, 'NPP='+Page)), Block( Let(@TmpFileName, DCL.GetTmpPPD(Page)), D.DropClient(INV), D.Client(INV), If(DCL.FileExists(TmpFileName)=0, Block( smpINV.Load(PPDName), CopyDocParams(smpINV, INV), DCL.SetStatus('Обработка базы данных. Лист ' + Page), INV.BeginRoll('Инвойс ', 0), Use('invpg.ppu'), INV.EndRoll(), INV.HRDP(0,'Инвойс'), INV.SignPages(), INV.Save(TmpFileName) ), INV.Load(TmpFileName) ), DCL.SetStatus('Печать'), PrintDoc(INV, 1, '') ) ), Let(@Page, Page + 1) ) ) ) ), D.DropClient(INV), DropDesign(INV), D.DropClient(smpINV), DropDesign(smpINV), D.FreeLibrary(), DropDLL(D), DCL.SetStatus(''), DropAppDCL(DCL) )