суть идеи Цикла такова, получаю исполнителя, сравниваю его с ТЧ документа Обьект.ЭтапыВыполнения
доходя до ТЧ Объект.Уведомляемые сравниваю, существует ли такой Исполнитель уже в ТЧ (т.е. равно или нет с уже имеющими)
Если нет, продолжаю до последней записи выхожу из Если и добавляю нового исполнителя

```1c
    новаястрока=Объект.Уведомляемые;
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
```

но когда исполнитель уже есть, то перервать и выйти из цикла
```1c
    Для Каждого СтрокаУв Из Объект.Уведомляемые Цикл
```

но на деле перерывается и все равно записывается повторно, потому как

```1c
    новаястрока=Объект.Уведомляемые;
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
```
 за условием если.

В условие Если данную функцию не добавляю, так как исполнители точно дублируются в ТЧ Объект.Уведомляемые.

Как можно перервать при

```1c
    Если Строка.Исполнитель = СтрокаУв.Уведомляемый
```
, но чтобы процесс вышел за пределы цикла?

```1c
    Для Каждого СтрокаУв Из Объект.Уведомляемые Цикл ....
```

весь текст общего цикла:

```1c
    Для Каждого Строка Из Объект.ЭтапыВыполнения Цикл
    Если Строка.Исполнитель <> Неопределено И Строка.Исполнитель <> Объект.АвторОбращения И Строка.Исполнитель <> Объект.ТекущийИсполнитель Тогда
    Для Каждого СтрокаУв Из Объект.Уведомляемые Цикл
    Если Строка.Исполнитель <> СтрокаУв.Уведомляемый Тогда
    Продолжить;
    Иначе
    Прервать;
    КонецЕсли;

    КонецЦикла;
    новаястрока=Объект.Уведомляемые;
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
    КонецЕсли;

    КонецЦикла;
```
---
А зачем цикл внутри Цикла
Когда есть метод НайтиСтроки? и зачем вы Реквизит ссылочного типа проверяете на неопределено? Неопределено может принимать только реквизит составного типа. Если Нет то просто

```1c
    не Строка.Исполнитель.Пустая()
```

или

```1c
    ЗначениеЗаполнено(Строка.Исполнитель)
```

А так всего делоф

```1c
    Для Каждого Строка Из Объект.ЭтапыВыполнения Цикл
    Если ЗначениеЗаполнено(Строка.Исполнитель) И Строка.Исполнитель <> Объект.АвторОбращения И Строка.Исполнитель <> Объект.ТекущийИсполнитель Тогда
    Если Объект.Уведомляемые.НайтиСтроки(Новый Структура("Уведомляемый",Строка.Исполнитель)).Количество()=0 Тогда
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
```
---
А зачем цикл внутри Цикла
Когда есть метод НайтиСтроки? и зачем вы Реквизит ссылочного типа проверяете на неопределено? Неопределено может принимать только реквизит составного типа. Если Нет то просто

```1c
    не Строка.Исполнитель.Пустая()
```

или

```1c
    ЗначениеЗаполнено(Строка.Исполнитель)
```

А так всего делоф

```1c
    Для Каждого Строка Из Объект.ЭтапыВыполнения Цикл
    Если ЗначениеЗаполнено(Строка.Исполнитель) И Строка.Исполнитель <> Объект.АвторОбращения И Строка.Исполнитель <> Объект.ТекущийИсполнитель Тогда
    Если Объект.Уведомляемые.НайтиСтроки(Новый Структура("Уведомляемый",Строка.Исполнитель)).Количество()=0 Тогда
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
```
---
```1c
    Для Каждого Строка Из Объект.ЭтапыВыполнения Цикл
    Если ЗначениеЗаполнено(Строка.Исполнитель) И Строка.Исполнитель <> Объект.АвторОбращения И Строка.Исполнитель <> Объект.ТекущийИсполнитель Тогда
    Если Объект.Уведомляемые.НайтиСтроки(Новый Структура("Уведомляемый",Строка.Исполнитель)).Количество()=0 Тогда
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
```

хорошое решение, но двойное "Добавить()", особенно первое, явно лишнее.

```1c
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
```
---
Очепятка ну:) Я жеж прям. в пофигураторе набросал да отформатировал. Синтаксис не проверить

```1c
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Уведомляемый = Строка.Исполнитель;
```
---
ИЛИ Еще меньше букаф

```1c
    Для Каждого Строка Из Объект.ЭтапыВыполнения Цикл
    Если ЗначениеЗаполнено(Строка.Исполнитель)
    И Строка.Исполнитель <> Объект.АвторОбращения
    И Строка.Исполнитель <> Объект.ТекущийИсполнитель
    И Объект.Уведомляемые.НайтиСтроки(Новый Структура("Уведомляемый",Строка.Исполнитель)).Количество()=0 Тогда
    новаястрока=Объект.Уведомляемые.Добавить();
    новаястрока.Добавить().Уведомляемый = Строка.Исполнитель;
    КонецЕсли;
    КонецЦикла;
```
---
Перед циклом добавить переменную булево со значением ложь, в нужной ветке условия присвоить ей истину. Перед добавлением проверять эту переменную, если истина то добавлять. или перенести добавление в нужную ветку условия.