Строка с циклом |
Конструкция <строка с циклом> предназначена для форм, управляемых из прикладной программы. Конструкция считается устаревшей и в новых разработках не используется. Вместо строк с циклом рекомендуется использовать горизонтальные циклы.
Строка с циклом предназначена для организации горизонтального цикла. Повторяющийся процесс вывода значений в отчет происходит в рамках одной строки отчета. При каждой итерации цикла создаются новые столбцы таблицы.
Необходимо учитывать, что длина строки ограничена возможностями Вашего принтера.
<строка с циклом> ::= [<простая строка>] .{ <имя строки с циклом> [<фильтр>] <тело строки с циклом>; .} [<простая строка>]
Строка с циклом начинается ключевым словом .{ и оканчивается ключевым словом .}. Перед закрывающей скобкой строки с циклом всегда стоит точка с запятой. Между телом строки и точкой с запятой не должно быть пробелов.
Ключевые символы .{ и .} в конструкции <строка с циклом> не могут занимать первую позицию строки. В начале строки перед открывающей скобкой и после закрывающей скобки строки может стоять <простая строка>.
Строка с циклом является циклом с параметром checkenter, который в конструкции строки не указывается.
Строка с циклом обязательно именуется. Имя строки располагается после открывающей скобки цикла.
<имя строки с циклом>::= .? <идентификатор>;
Имя строки с циклом является идентификатором. Перед идентификатором стоит ключевой символ .?, после идентификатора стоит точка с запятой. Между точкой с запятой и идентификатором не должно быть пробелов.
Строка с циклом может иметь фильтр. Фильтры применяются только в присоединенных формах.
Правила создания фильтра строки с циклом те же, что и фильтра цикла.
Фильтры в строке с циклом используются для усечения обрабатываемого строкой потока данных, поступающего из прикладной программы. Фильтр является дополнительным условием, выполнение которого открывает доступ к очередной итерации строки с циклом. Условие формируется внутри формы.
При работе с несколькими вложенными строками с циклами, имеющими фильтры, вхождение во внутреннюю строку определяется только собственным фильтром внутренней строки и не зависит от фильтрации очередной итерации внешней строки с циклом.
Если строка с циклом имеет фильтр, то перед логическим выражением фильтра стоят две точки с запятой: первая точка с запятой принадлежит имени строки с циклом, вторая принадлежит фильтру.
<тело строки с циклом> ::= { <строка с циклом> | <простая строка> }
Тело строки с циклом представляет собой произвольную комбинацию из простых строк и строк с циклом с любой степенью вложенности. Строка с циклом не может содержать условные операторы, операторы выбора, простые циклы и тому подобное.
Пример
.form акт .fields поле1 поле2 .endfields .{ .?строка1; |@@-@@@|;.} .endform
Форма-прототип "акт" содержит два поля и строку с циклом "cтрока1" для вывода этих полей. Предположим, строка с циклом выполняется три раза, "поле1" заполняется единицами, "поле2" заполняется двойками. Отчет будет иметь следующий вид:
|11-222||11-222||11-222|