Здравствуйте!
Я заполняю шаблон HTML для оповещения на почту. Я добавила одну колонку с суммой и когда я прописываю поле сумма у меня для каждой строки одна и та же сумма, т.е. берет только первую строку из табличной части. Сумма берется из табличной части.
Подскажите пожалуйста как мне перебрать строки или как вытянуть данные из табличной части документа для каждой строки, чтобы для каждой строки была своя сумма?

```1c
    <ht ml>
    <head>
    <title></title>
    <met a http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <st yle type="text/css">
    TABLE {
    border-collapse: collapse; /* Убираем двойные линии между ячейками */
    }
    TD, TH {
    padding: 10px; padding-left: 20px;/* Поля вокруг содержимого таблицы */
    border: 1px solid black; /* Параметры рамки */
    }
    </style>
    </head>
    <body>
    <table>
    <tr>
    <td>Контрагент</td><td>Договор</td><td>Представление документа</td><td>Сумма</td>
    </tr>
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}
    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td>

    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[0].Сумма)%}</td>

    </tr>
    {%КонецЦикла%}
    </table>
    </body>
    </html>
```
---
Точно, работать и не должно. Вы же документы перебираете. А чтобы ещё перебрать таблицу, то вам надо ещё один цикл.

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}
    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td> /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td> /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td> /* Запрос к БД по идее не должно быть, но тут получение представления так что без замера не разобраться */

    {%Для Индекс= 0 По СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Количество()-1 Цикл%} /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Сумма)%}</td> /* Запрос к БД, хотя не уверен */
    {%КонецЦикла%}
    </tr>
    {%КонецЦикла%}
```

Все эти конструкции очень плохо отразятся на производительности. Не знаю как Вы там формируете выборку, но исходя из того, что в формировании html надо бы её переписать, сразу забирая табличную часть с представлениями ссылочных данных, которые Вы используете в дальнейшем, например, "Контрагент".
---
как вытянуть данные из табличной части документа для каждой строки, чтобы для каждой строки была своя сумма? Обходить табличную часть графика платежей вложенным циклом не предлагать? )))
---
табличную часть графика платежей вложенным циклом не предлагать? )))
Пробовала выдает ошибки.
---
Как мне нравятся такие отмазы...
А если пробовала, то обязательно правильно и без ошибок?
А как пробовала надо догадаться?
---
```1c
    <ht ml>
    <head>
    <title></title>
    <met a http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <st yle type="text/css">
    TABLE {
    border-collapse: collapse; /* Убираем двойные линии между ячейками */
    }
    TD, TH {
    padding: 10px; padding-left: 20px;/* Поля вокруг содержимого таблицы */
    border: 1px solid black; /* Параметры рамки */
    }
    </style>
    </head>
    <body>
    <table>
    <tr>
    <td>Контрагент</td><td>Договор</td><td>Представление документа</td>
    </tr>
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}
    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td>

    {%Для каждого Стр из СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей Цикл%}

    <td>{%Строка(Стр.Сумма)%}</td>
    {%КонецЦикла%}

    </tr>
    {%КонецЦикла%}
    </table>
    </body>
    </html>
```
---
Почитайте хотя бы немного про html-разметку и оформление таблиц, в частности...
---
html-разметку и оформление таблиц

html-разметка - правильная.
Если шаблонные конструкции заменить константами таблица отрисовывается со значениями.
И по сути все работает, я только не знаю как правильно вбирать данные.
---
html-разметка - правильная Первая строка - три колонки. Вторая и последующие строки - 3 колонки плюс неизвестное (причем отличающееся от документа к документу) количество из цикла.
---
отличающееся от документа к документу

Как понять отличающееся от документа к документу?
---
В разных документах может быть разное количество строк в графиках платежей.
---
С шаблонами не работал, но, сдается мне, нужно как-то так:

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}
    {%Для каждого Стр из СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей Цикл%}
    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td>
    <td>{%Строка(Стр.Сумма)%}</td>
    </tr>
    {%КонецЦикла%}
    {%КонецЦикла%}
```
---
СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[0].Сумма
Как я понимаю "ГрафикПлатежей" - это табличная часть, только вот вы в ней берёте первую строку при каждом повторе цикла, отсюда и ваша проблема
Вот так хотябы надо:
<td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Сумма)%}</td>
Если что проглядел, то мне с радостью и спотыкаясь на бегу поправят.
---
Вот так хотябы надо:
{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Сумма)%}

Так я пробовала.
---
Точно, работать и не должно. Вы же документы перебираете. А чтобы ещё перебрать таблицу, то вам надо ещё один цикл.

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}
    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td> /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td> /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td> /* Запрос к БД по идее не должно быть, но тут получение представления так что без замера не разобраться */

    {%Для Индекс= 0 По СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Количество()-1 Цикл%} /* Запрос к БД */
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Сумма)%}</td> /* Запрос к БД, хотя не уверен */
    {%КонецЦикла%}
    </tr>
    {%КонецЦикла%}
```

Все эти конструкции очень плохо отразятся на производительности. Не знаю как Вы там формируете выборку, но исходя из того, что в формировании html надо бы её переписать, сразу забирая табличную часть с представлениями ссылочных данных, которые Вы используете в дальнейшем, например, "Контрагент".
---
а можете еще подсказать как правильно задать условие?

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}

    {%Для Индекс= 0 По СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Количество()-1 Цикл%}

    {%Если СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования = НЕОПРЕДЕЛЕНО Тогда%}

    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Сумма)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Период)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования)%}</td>

    </tr>

    {%КонецЕсли%}

    {%КонецЦикла%}

    {%КонецЦикла%}
```

Вроде все правильно написала, но не могу понять почему выдает ошибку...Если я убираю условие если то все поля выводятся
---
ДокументПланирования = НЕОПРЕДЕЛЕНО
А Вы уверены, что там может быть неопределено? Может там пустая ссылка?

```1c
    Если ДокументПланирования.ПустаяСсылка() Тогда //не уверен, что конструкция будет работать всегда, если там NULL то может свалиться в ошибку
```

лучше, наверное, так:

```1c
    Если Не ЗначениеЗаполнено(ДокументПланирования) Тогда
```

все поля выводятся
А вот тут я начал сомневаться, может тут банально ";" нужна:

```1c
    {%КонецЕсли;%}
    {%КонецЦикла;%}
    {%КонецЦикла;%}
```
---
Если Не ЗначениеЗаполнено(ДокументПланирования) Тогда

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}

    {%Для Индекс= 0 По СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Количество()-1 Цикл%}
    {%Если Не ЗначениеЗаполнено(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования) Тогда%}

    <tr>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Сумма)%}</td>
    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Период)%}</td>

    <td>{%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования)%}</td>

    </tr>

    {%КонецЕсли;%}

    {%КонецЦикла;%}

    {%КонецЦикла;%}
```

Тоже самое, ругается....
---
А вот так:

```1c
    {%Пока СтруктураКонтекст.ВыборкаДокументов.Следующий() Цикл%}

    {%Для Индекс= 0 По СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей.Количество()-1 Цикл%}
    {%Если ЗначениеЗаполнено(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования) Тогда
    Продолжить;
    КонецЕсли;%}

    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.Контрагент)%}
    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ДоговорКонтрагента)%}
    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект)%}
    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Сумма)%}
    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].Период)%}

    {%Строка(СтруктураКонтекст.ВыборкаДокументов.Объект.ГрафикПлатежей[Индекс].ДокументПланирования)%}

    {%КонецЦикла;%}

    {%КонецЦикла;%}
```

Или проверить работают ли вообще условия:

```1c
    {%Если Истина Тогда%} /* должен вывести всё, а если подставить "Ложь", тогда ничего не должен вывести, только шапку */
```

Честно не понимаю, что не так, глаз не за что не цепляется.
---
Или проверить работают ли вообще условия:
{%Если Истина Тогда%} /* должен вывести всё, а если подставить "Ложь", тогда ничего не должен вывести, только шапку */

Условие не отрабатывается....
---
Тогда остается только правка состава "СтруктураКонтекст.ВыборкаДокументов" и прописать требуемое условия именно в формировании этой выборки. Очень странно, что не работают условия.
Можно ещё попробовать конструкцию типа: ?(<Условие>, <если истина>, <если ложь>), но я не представлю как её сюда встроить.
В общем у меня кончились идеи.