Строка с циклом Назад В начало Вперед

Конструкция <строка с циклом> предназначена для форм, управляемых из прикладной программы. Конструкция считается устаревшей и в новых разработках не используется. Вместо строк с циклом рекомендуется использовать горизонтальные циклы.

Строка с циклом предназначена для организации горизонтального цикла. Повторяющийся процесс вывода значений в отчет происходит в рамках одной строки отчета. При каждой итерации цикла создаются новые столбцы таблицы.

Необходимо учитывать, что длина строки ограничена возможностями Вашего принтера.

<строка с циклом> ::=
  [<простая строка>]
  .{
	<имя строки с циклом> [<фильтр>] <тело строки с циклом>;
  .}
  [<простая строка>]

Строка с циклом начинается ключевым словом .{ и оканчивается ключевым словом .}. Перед закрывающей скобкой строки с циклом всегда стоит точка с запятой. Между телом строки и точкой с запятой не должно быть пробелов.

Ключевые символы .{ и .} в конструкции <строка с циклом> не могут занимать первую позицию строки. В начале строки перед открывающей скобкой и после закрывающей скобки строки может стоять <простая строка>.

Строка с циклом является циклом с параметром checkenter, который в конструкции строки не указывается.

Строка с циклом обязательно именуется. Имя строки располагается после открывающей скобки цикла.

<имя строки с циклом>::= .? <идентификатор>;

Имя строки с циклом является идентификатором. Перед идентификатором стоит ключевой символ .?, после идентификатора стоит точка с запятой. Между точкой с запятой и идентификатором не должно быть пробелов.

Строка с циклом может иметь фильтр. Фильтры применяются только в присоединенных формах.

Правила создания фильтра строки с циклом те же, что и фильтра цикла.

Фильтры в строке с циклом используются для усечения обрабатываемого строкой потока данных, поступающего из прикладной программы. Фильтр является дополнительным условием, выполнение которого открывает доступ к очередной итерации строки с циклом. Условие формируется внутри формы.

При работе с несколькими вложенными строками с циклами, имеющими фильтры, вхождение во внутреннюю строку определяется только собственным фильтром внутренней строки и не зависит от фильтрации очередной итерации внешней строки с циклом.

Если строка с циклом имеет фильтр, то перед логическим выражением фильтра стоят две точки с запятой: первая точка с запятой принадлежит имени строки с циклом, вторая принадлежит фильтру.

<тело строки с циклом> ::=
		{ <строка с циклом> | <простая строка> }

Тело строки с циклом представляет собой произвольную комбинацию из простых строк и строк с циклом с любой степенью вложенности. Строка с циклом не может содержать условные операторы, операторы выбора, простые циклы и тому подобное.

Пример

.form акт
.fields поле1 поле2 .endfields
  .{ .?строка1; |@@-@@@|;.}
.endform

Форма-прототип "акт" содержит два поля и строку с циклом "cтрока1" для вывода этих полей. Предположим, строка с циклом выполняется три раза, "поле1" заполняется единицами, "поле2" заполняется двойками. Отчет будет иметь следующий вид:

			|11-222||11-222||11-222|