Вот есть кодик, который разрешает ставить галку только пользователю, который заведен там. Если поставить галку отказ то цикл прекращается.
Надо сделать так, если второй из списка ТЧ поставил отказ, то у пользователя выше по списку должна сниматься галка, если 3 то снимается у 2 ( у первого все остается). Соответственно если первый поставит отказ, то ничего сниматься не должно. Сотрудники и их очередность может меняться.
Подскажите с кодом.
---
Ну вот если так то можно что то в этом роде написать

```1c
    &НаКлиенте
    Процедура УчастникиОтказПриИзменении(Элемент)

    ТекущиеДанные = Элементы.Участники.ТекущиеДанные;

    Если ТекущиеДанные.Отказ = Ложь Тогда
    КоличествоУчастников = Объект.Участники.Количество();
    Если КоличествоУчастников >= 2 Тогда
    Для Счетчик = 2 По КоличествоУчастников Цикл
    ТекущийУчастник = Объект.Участники[Счетчик - 2];
    СледующийУчастник = Объект.Участники[Счетчик - 1];
    Если Не СледующийУчастник.Отказ И ТекущийУчастник.Отказ Тогда
    ТекущийУчастник.Отказ = Ложь;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры
```

То есть программа будет снимать Отказ в ложь у предыдущего участника если у текущего оно снято
---
То есть если 4 ставит галку то 3 нужно снять, а 2 и 1 ни чего не меняется. Такова логика??
---
Да
---
Ну вот если так то можно что то в этом роде написать

```1c
    &НаКлиенте
    Процедура УчастникиОтказПриИзменении(Элемент)

    ТекущиеДанные = Элементы.Участники.ТекущиеДанные;

    Если ТекущиеДанные.Отказ = Ложь Тогда
    КоличествоУчастников = Объект.Участники.Количество();
    Если КоличествоУчастников >= 2 Тогда
    Для Счетчик = 2 По КоличествоУчастников Цикл
    ТекущийУчастник = Объект.Участники[Счетчик - 2];
    СледующийУчастник = Объект.Участники[Счетчик - 1];
    Если Не СледующийУчастник.Отказ И ТекущийУчастник.Отказ Тогда
    ТекущийУчастник.Отказ = Ложь;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры
```

То есть программа будет снимать Отказ в ложь у предыдущего участника если у текущего оно снято
---
А куда мне этот код впихнуть? или сделать отдельную процедуру?
---
Я у себя сделал для вашего примера таблицу Участники, в ней две колонки Участник и Отказ. Далле на колонке Отказ сделал событие ПриИзменении и там написал выше процедуру. Вы можете так же сделать если подойдет
---
Да я сделал при изменении
И чутка дописал ваш код.
---
Благодарю
---
да не зачто!
---
А еще не можете подсказать с вопросом?
надо теперь что бы после того как поставил сотрудник галку, создавалось задание и подставлялся там автор, тема и т.д( что там обязательно к заполнению).
Как это реализовать?
---
Ну на самом деле тоже ни чего сложного. Нам нужно событие. Например, при записи документа, программа обходит все записи таблицы и там где есть галочка создались задание.

Вот пример небольшой

```1c
    Процедура ПриЗаписи(Отказ)

    Если Не Отказ Тогда
    Для Каждого СтрокаТаблицы Из ТаблицыУчастники Цикл
    Если СтрокаТаблицы.Галочка = Истина Тогда
    Задание = Документы.Задание.СоздатьДокумент();
    // тут заполняем реквизиты документа задания
    // или возможно что это не документ а объект - Задача
    Конецесли
    Конеццикла
    Конецесли

    Конецпроцедуры
```

То есть тут нужно понять или создается какой то документ или объект задача. А в ней на этапе разработки ставим те или иные реквизиты обязательные для заполнения, либо программно делаем проверку заполнения тех или иных реквизитов.

Если в крации то как то так
---
стр = ТекСтрока

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

возможно из избавит от пустого трепа на 5 страниц.