Задача данного шаблона это унифицировать алгоритмы работы с коллекциями. Приведу несколько примеров, есть таблица значений нам нужно обойти ее
Для Каждого Стр Из Таб Цикл
// Выполняем какие-то действия с Стр
КонецЦикла;
Ок написали цикл и все хорошо, через какое-то время появляется необходимость в алгоритме получить номер строки (элемента если у нас массив), что мы делаем, добавляем счетчик
Счетчик = 0;
Для Каждого Стр Из Таб Цикл
// Выполняем какие-то действия с Стр
Счетчик = Счетчик +1;
КонецЦикла;
Можно конечно и так
Для а = 0 По Таб.Количество()-1 Цикл
// Выполняем какие-то действия
КонецЦикла;
но тогда нам нужно по всему телу цикла менять Стр на Таб[а] или в начале объявлять Стр = Таб[а]; т.е. обеспечивать совместимость изменений со старой реализацией.
И в первом примере с объявлением переменной счетчик и во втором с Стр = Таб[а]; обе переменные избыточные, вы вынуждены были их ввести т.к. изменился алгоритм.
В первом примере, на какие грабли мы можем наступить, ну к примеру у нас тело цикла достаточно большое, где-то в середине мы (или другой разработчик) пишем Продолжить;, и все, нам эта строка поломала всю логику.
А если нам нужно коллекцию перебрать в обратной последовательности? А если нужно сортировать массив? Начинаем городить огород и причем этот огород в каждом месте нашего проекта, где потребовалось, там и сделали.
Эти все проблемы решает паттерн курсор.
Курсор = Обработки.КурсорТаблицаЗначений.Создать().Конструктор(Таб).Имплементация("КурсорИнтерфейс");
Пока Курсор.Следующий() Цикл
// Выполняем какие-то действия
КонецЦикла;
Обращение к текущему элементу Курсор.ТекущийЭлемент(), обращение к индексу Курсор.ТекущийИндекс(), хотите делаете метод Сортировать(), хотите делаете сеттер а-ля Курсор.ОбратныйПеребор(Истина) и бог его знает что вы еще добавите в курсор и эта ваша фишка будет доступна для любых коллекций, таблица значений, массив, структура и прочие. Единственное будут меняться реализации курсора, например
Курсор = Обработки.КурсорМассив.Создать().Конструктор(МойМассив).Имплементация("КурсорИнтерфейс");
Пока Курсор.Следующий() Цикл
// Выполняем какие-то действия
КонецЦикла;
Если свою реализацию положить на диаграмму классов получим.
т.е. из классической схемы убран агрегатор в квази ООП он кажется избыточным.