{Печать сведений о товаре ДТС2, метод 6} Block( A.SFP('Графа 11 код валюты', 'Caption', GetCurrencyCodeFieldValue(DOP, 'CurrCode')), A.SFP('Графа 11 в валюте', 'Caption', ZeroIf('%.2f', DCL.GetFieldVal(DOP, 'D11A1'), NoZero)), A.SFP('Графа 11 курс', 'Caption', Zero ('%.' + DecimCount + 'f', DCL.GetFieldVal(DOP, 'CurrCourse'))), A.SFP('Графа 11 в руб', 'Caption', ZeroIf('%.2f', DCL.GetFieldVal(DOP, 'D11A2'), NoZero)), { далее заполняем с формированием как бы таблицы путём размножения полей вниз } Let(@Counter, 0), Let(@DFName1, DFN1Root), Let(@DFName2, DFN2Root), { определим до какого предела может расти как бы таблица } Let(@BottomLimit,A.GFP('Графа 13а', 'Top')), { цикл формирования как бы таблицы } Let(@FindCrit, 'NTOV=' + GtdCargoNo), Let(@Loop, DCL.FindFirst(DOP6, FindCrit)), While(Loop, Block( Let(@BufMemo, GetMemoVal(DOP6, 'FreeText', 0)), AddStrToSnake(@BufMemo, DCL.GetFieldVal(DOP6, 'DINF01')), AddStrToSnake(@BufMemo, DCL.GetFieldVal(DOP6, 'DINF02')), AddStrToSnake(@BufMemo, DCL.GetFieldVal(DOP6, 'DINF03')), A.SFP(DFName1, 'Caption', RemakeText(BufMemo, A.GFP(DFName1, 'Margin') ) ), Let(@BufString, ZeroIf('%.2f', DCL.GetFieldVal(DOP6, 'FreeValue'), NoZero)), A.SFP(DFName2, 'Caption', BufString), A.GFP(DFName2,'Caption'), { пересчёт высоты полей с FloatHeight = -1: ..Update(), ..Recalc() } A.Update(), A.Recalc(), { низ новой строки как бы таблицы } Let(@CurBottom, MaxI(FBottom(DFName1), FBottom(DFName2))), If(CurBottom < BottomLimit, Let(@Loop, DCL.FindNext(DOP6, FindCrit)), Block( Let(@Loop, 0), { укорачиваем поля } CutFBottom(DFName1), CutFBottom(DFName2) ) ), Let(@Counter, Counter+1), If(Loop, Block( { значит будет следующий проход цикла, готовимся } { копируем поля и располагаем их ниже - след. строкой как бы таблицы } Let(@DFN1Copy, DFN1Root + Counter), CopyDF(DFName1, DFN1Copy), Let(@DFN2Copy, DFN2Root + Counter), CopyDF(DFName2, DFN2Copy), { теперь расположим копии ниже оригиналов } A.SFP(DFN1Copy, 'Top', CurBottom + 1), A.SFP(DFN2Copy, 'Top', CurBottom + 1), { Готовы к след. кругу цикла } { Имеем новые поля, в их пользу забываем имя старых } Let(@DFName1, DFN1Copy), Let(@DFName2, DFN2Copy) )) )), A.SFP('Графа 13а', 'Caption', ZeroIf('%.2f', DCL.GetFieldVal(DOP, 'D25A'), NoZero)), A.SFP('Графа 13б', 'Caption', ZeroIf('%.2f', DCL.GetFieldVal(DOP, 'D25B'), NoZero)), A.SFP('Графа 13б курс', 'Caption', Zero('%.' + DecimCount + 'f', DCL.GetFieldVal(PRIM, 'TAMST_KURS'))) )