Добавление элемента итерации

Вместо дублирования разделов шаблона путем копирования и вставки блоков в шаблоне можно создать циклы, указав для элемента Итерация свойство Условие Do while.
Ограничение: Значок Создать компонент Элемент Повторение доступен только в шаблонах версии 2.

Прежде чем начать

Об этой задаче

Итерации работают с запросами, применяемыми к ним или к их дочерним элементам, в два этапа. Сначала, при генерации документа эти элементы обрабатываются один раз. Затем, обрабатываются условия, примененные к элементу Итерация. Если условия выполнены, то элемент Итерация и его дочерние элементы обрабатываются снова. Разделы продолжают обрабатываться, пока условие не перестанет выполняться.

На первом этапе используемые в условии данные должны изменяться таким образом, чтобы существовало ограниченное число шагов. Это условие обеспечивает выход из обработки разделов и прекращение цикла. На шаге 5 приведенного ниже примера условие состоит в том, что переменная teamList не пуста. Таким образом, условие выполняется, пока существуют записи данных для переменной teamList. Когда больше не существует записей данных, условие перестает выполняться и повторение завершается.

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

Процедура

  1. Добавьте элемент Итерация Итерация в редактор содержимого шаблона.
    Прим.: На главные страницы невозможно поместить элементы Итерация.
  2. Выберите раздел шаблона, который требуется скопировать, и перенесите его на элемент Итерация.
  3. Выберите элемент Итерация.
  4. На панели Свойства перейдите на вкладку Особый.
  5. В поле Условие цикла do while щелкните на значке Конфигурация.
  6. Перейдите на вкладку Выражение сценария. Сценарий нельзя ввести на вкладке Простое значение, поскольку это приведет к созданию бесконечного цикла.
  7. Выберите переменную. Переменная позволяет применить цикл требуемое число раз или с учетом числа значений данных.
  8. Введите сценарий.
  9. Нажмите кнопку OK.
  10. Сохраните изменения.

Пример

Создание списка участников коллектива:
  1. Создайте внешнюю переменную teamList.
  2. Создайте внешнюю переменную currentMember.
  3. Создайте элемент таблицы и примените условие:
    1. Добавьте Значок таблицы элемент Таблица в редактор материалов шаблона.
    2. Введите 1 столбец и 2 строки.
    3. Щелкните правой кнопкой мыши на элементе Таблица и выберите Данные > Изменить условие.
    4. Выберите переменную teamList.
    5. Для левого операнда выберите переменную teamList.
    6. Для оператора выберите Не равно.
    7. Для правого операнда не вводите значение.
    8. Нажмите кнопку Добавить. Результат сценария: teamList != ""
    9. Нажмите кнопку OK.
  4. В первой ячейке добавьте заголовок для столбца:
    1. Добавьте Значок Текст элемент Текст в ячейку.
    2. Дважды щелкните на текстовом элементе и откройте редактор материалов.
    3. Укажите заголовок Список участников коллектива.
    4. Нажмите кнопку OK.
    5. На панели Свойства перейдите на вкладку Шрифт.
    6. Выберите свойство Полужирный.
    7. Выберите True и нажмите кнопку OK.
  5. Добавьте элемент Итерация:
    1. Перенесите элемент Итерация Итерация из панели Палитра и разместите его между строками таблицы.
    2. Выберите элемент Итерация.
    3. На панели Свойства введите следующий сценарий в свойстве Условие цикла do while : teamList != ""
    4. Добавьте два элемента Контейнер Контейнер в элемент Итерация. Первый Контейнер применяется для вычисления первого имени из списка для текущей строки. Второй Контейнер обеспечивает своевременное завершение цикла.
    5. Перенесите вторую строку и ее содержимое в элемент Итерация и разместите ее после элементов контейнера.
  6. Присвойте переменную первому элементу контейнера:
    1. Щелкните правой кнопкой мыши на первом элементе Контейнер.
    2. Выберите Данные > Изменить присваивания
    3. Нажмите кнопку Добавить.
    4. Выберите переменную currentMember и нажмите кнопку OK.
    5. Перейдите на вкладку Выражение сценария.
    6. Выберите переменную teamList и введите следующий сценарий:
      var pos = teamList.indexOf( ",");
      
      if ( pos >=0)
      {
         // получение первого участника (до первой запятой)
          teamList.substr( 0, pos);
      }
      else
      {
          // последний участник
          teamList;
      }
    7. Нажмите кнопку OK два раза.
  7. Присвойте переменную второму элементу контейнера:
    1. Щелкните правой кнопкой мыши на втором элементе Контейнер.
    2. Выберите Данные > Изменить присваивания
    3. Нажмите кнопку Добавить.
    4. Выберите переменную teamList и нажмите кнопку OK.
    5. Перейдите на вкладку Выражение сценария.
    6. Выберите переменную teamList и введите следующий сценарий:
      var pos = teamList.indexOf( ",");
      
      if ( pos >=0 && pos < teamList.length)
      {
         // получение первого автора (до первой запятой)
          teamList.substr( pos + 1);
      }
      else
      {
          // последний участник, удаляется
          ""
      }
  8. Перенесите переменную currentMember из панели Схема в ячейку во второй строке.
  9. Проверьте вывод.

Комментарии