Добрый день. Пытаюсь написать отчет для отображения списка должников. Заранее скажу, что в области программирования в 1С я ультра новичок. На данный момент реализовано:
- Отображение задолженностей по лицевым счетам на конкретную дату.
Что я безуспешно пытаюсь сделать:
- Вывод списка задолженностей, где общая сумма всех задолженностей будет <= какой-либо сумме (сама сумма должна задаваться вручную через соответствующее поле "Ограничение").
Пример отображения отчета прикрепляю.
Нашла тему с разбором примерно такой задачи, попыталась сделать по подобию... В общем, помогите, пожалуйста, я уже весь мозг сломала.

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

    Если НЕ ЗначениеЗаполнено(Форма.ЭлементыФормы.НаДату.Значение) Тогда
    ПараметрДата = ТекущаяДата();
    Иначе
    ПараметрДата = КонецДня(Форма.ЭлементыФормы.НаДату.Значение);
    КонецЕсли;

    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес.Владелец КАК Здание,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес КАК Помещение,
    | УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.СуммаНачисленияОстаток КАК Задолженность
    |ИЗ
    | РегистрНакопления.КВП_ВзаиморасчетыПоЛицевымСчетам.Остатки(&Дата, ) КАК КВП_ВзаиморасчетыПоЛицевымСчетамОстатки
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчета.СрезПоследних(&Дата, ) КАК УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних
    | ПО КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет = УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ЛицевойСчет
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ЛицевыеСчета.СрезПоследних(
    | &Дата,
    | Действует
    | И (Регистратор ССЫЛКА Документ.КВП_ОткрытиеЛицевогоСчета
    | ИЛИ Регистратор ССЫЛКА Документ.КВП_ЗакрытиеЛицевогоСчета)) КАК КВП_ЛицевыеСчетаСрезПоследних
    | ПО КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет = КВП_ЛицевыеСчетаСрезПоследних.ЛицевойСчет
    |ГДЕ
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.СуммаНачисленияОстаток > 0
    | И УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец.ЮрФизЛицо = &ЮрФизЛицо
    |
    |СГРУППИРОВАТЬ ПО
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес.Владелец,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес,
    | УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.СуммаНачисленияОстаток
    |
    |УПОРЯДОЧИТЬ ПО
    | Здание
    |ИТОГИ
    | СУММА(Задолженность)
    |ПО
    | ОБЩИЕ
    |АВТОУПОРЯДОЧИВАНИЕ";

    Запрос.УстановитьПараметр("Дата", ПараметрДата);
    Запрос.УстановитьПараметр("ЮрФизЛицо", Перечисления.ЮрФизЛицо.ФизЛицо);
    Результат = Запрос.Выполнить();
    ТаблицаДолжников = Результат.Выгрузить();

    //Что я пыталась сделать по подобию:

    МассивТЧ = Новый Массив;
    ПределПоСумме = Форма.ЭлементыФормы.МаксимумСумма.Значение;
    СуммаПоТекущейТЧ = 0;
    ТекущаяТЧ = Неопределено;
    Для Каждого СтрокаТаблицы Из ТаблицаДолжников Цикл
    Если СуммаПоТекущейТЧ + СтрокаТаблицы.Задолженность <= ПределПоСумме ИЛИ ТекущаяТЧ = Неопределено Тогда
    ТекущаяТЧ = Новый ТаблицаЗначений;
    ТекущаяТЧ.Колонки.Добавить("ЛицевойСчет");
    ТекущаяТЧ.Колонки.Добавить("ОтветственныйВладелец");
    ТекущаяТЧ.Колонки.Добавить("Здание");
    ТекущаяТЧ.Колонки.Добавить("Помещение");
    ТекущаяТЧ.Колонки.Добавить("Задолженность");
    МассивТЧ.Добавить(ТекущаяТЧ);
    СуммаПоТекущейТЧ = 0;
    КонецЕсли;
    СтрокаТЧ = ТекущаяТЧ.Добавить();
    СтрокаТЧ.ЛицевойСчет = СтрокаТаблицы.ЛицевойСчет;
    СтрокаТЧ.ОтветственныйВладелец = СтрокаТаблицы.ОтветственныйВладелец;
    СтрокаТЧ.Здание = СтрокаТаблицы.Здание;
    СтрокаТЧ.Помещение = СтрокаТаблицы.Помещение;
    СтрокаТЧ.Задолженность = СтрокаТаблицы.Задолженность;
    СуммаПоТекущейТЧ = СуммаПоТекущейТЧ + СтрокаТаблицы.Задолженность;
    КонецЦикла;
```

Буду благодарна за любые советы. Еще раз напомню, что я совсем-совсем новичок. Теги и метки нормально ставить не умею.
Конфигурация: 1С:Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК (2.0.57.4)
1С:Предприятие 8.2 (8.2.19.90)
---
Всем спасибо за советы, попробовали разными способами решить задачу, в итоге пришли к такому решению:

```1c
    //Считаем лимит из базы
    ЛимитДолгов = Константы.ЛимитДолга.Получить();

    //Объявим переменную, которая будет накапливать остаток долга
    НакапливаемаяСумма = 0;

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НакапливаемаяСумма = НакапливаемаяСумма + ВыборкаДетальныеЗаписи.СуммаНачисленияОстаток;
    //Если сумма долга по текущему лицевому счету в общей сумме превышает лимит, прервем вывод
    Если НакапливаемаяСумма > ЛимитДолгов Тогда
    Прервать;
    КонецЕсли;

    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
```

Упростили код, вывели все в макет. Возможно, кому-нибудь понадобится.
---
Вывод списка задолженностей, где общая сумма всех задолженностей будет <= какой-либо сумме (сама сумма должна задаваться вручную через соответствующее поле "Ограничение")
думаю тут нужно использовать в запросе директиву "Имеющие" к полю задолженности.

```1c
    Имеющие
    Сумма(ПолеЗадолженность) <= &КакаяЛибоСумма
```
---
Ну как минимум выйдут все строки, потому что добавление строк в табличную часть находится не в условии.
---
обход группировок тоже в модуле не используется, поэтому запрос можно и проще написать, сгруппировать все лицевые по сумме задолженности

```1c
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет КАК ЛицевойСчет,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес.Владелец КАК Здание,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес КАК Помещение,
    | УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец КАК ОтветственныйВладелец,
    | СУММА(КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.СуммаНачисленияОстаток) КАК Задолженность
    |ИЗ
    | РегистрНакопления.КВП_ВзаиморасчетыПоЛицевымСчетам.Остатки(&Дата, ) КАК КВП_ВзаиморасчетыПоЛицевымСчетамОстатки
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчета.СрезПоследних(&Дата, ) КАК УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних
    | ПО КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет = УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ЛицевойСчет
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ЛицевыеСчета.СрезПоследних(
    | &Дата,
    | Действует
    | И (Регистратор ССЫЛКА Документ.КВП_ОткрытиеЛицевогоСчета
    | ИЛИ Регистратор ССЫЛКА Документ.КВП_ЗакрытиеЛицевогоСчета)) КАК КВП_ЛицевыеСчетаСрезПоследних
    | ПО КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет = КВП_ЛицевыеСчетаСрезПоследних.ЛицевойСчет
    |ГДЕ
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.СуммаНачисленияОстаток > 0
    | И УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец.ЮрФизЛицо = &ЮрФизЛицо
    |
    |СГРУППИРОВАТЬ ПО
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес.Владелец,
    | КВП_ВзаиморасчетыПоЛицевымСчетамОстатки.ЛицевойСчет.Адрес,
    | УПЖКХ_ОтветственныйСобственникНанимательЛицевогоСчетаСрезПос­ледних.ОтветственныйВладелец
    |
    |УПОРЯДОЧИТЬ ПО
    | Здание";
```
---
То есть итоги не нужны? Я изначально пыталась вывести их в подвал таблицы, но потом не смогла, расстроилась и удалила все к чертям :(

Не совсем поняла (2) ответ, то есть мне нужно добавлять строки внутри условия, а не после него? Я думала, что нужно сначала объявить условие, а сами строки в цикле объявлять
---
Итоги в запросе нужны для обхода результата запроса, а итоги по всем долгам можно просчитать и в цикле.

```1c
    ПределПоСумме = Форма.ЭлементыФормы.МаксимумСумма.Значение;
    Итого = 0;
    Для Каждого СтрокаТаблицы Из ТаблицаДолжников Цикл
    Если СтрокаТаблицы.Задолженность <= ПределПоСумме Тогда
    СтрокаТЧ = ТекущаяТЧ.Добавить();
    СтрокаТЧ.ЛицевойСчет = СтрокаТаблицы.ЛицевойСчет;
    СтрокаТЧ.ОтветственныйВладелец = СтрокаТаблицы.ОтветственныйВладелец;
    СтрокаТЧ.Здание = СтрокаТаблицы.Здание;
    СтрокаТЧ.Помещение = СтрокаТаблицы.Помещение;
    СтрокаТЧ.Задолженность = СтрокаТаблицы.Задолженность;
    Итого = Итого+СтрокаТаблицы.Задолженность;
    КонецЕсли;
    КонецЦикла;
```
---
К сожалению, как бы я не писала цикл, он его просто напросто пропускает и из строчки Для каждого сразу прыгает на результат, похоже где-то напутала в названиях переменных
---
а ну и считать итог не обязательно, достаточно установить для табличной части формы "Отображать итоги в подвале"
---
оооооо, вот оно, самое интересное, нет у меня такой галочки :)
---
это характеристика колонки
---
все мимо, не поле ввода, надо нажать на заголовок самой колонки, и в свойствах в характеристиках, если тип число, то будет этот пункт
---
Всем спасибо за советы, попробовали разными способами решить задачу, в итоге пришли к такому решению:

```1c
    //Считаем лимит из базы
    ЛимитДолгов = Константы.ЛимитДолга.Получить();

    //Объявим переменную, которая будет накапливать остаток долга
    НакапливаемаяСумма = 0;

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НакапливаемаяСумма = НакапливаемаяСумма + ВыборкаДетальныеЗаписи.СуммаНачисленияОстаток;
    //Если сумма долга по текущему лицевому счету в общей сумме превышает лимит, прервем вывод
    Если НакапливаемаяСумма > ЛимитДолгов Тогда
    Прервать;
    КонецЕсли;

    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
```

Упростили код, вывели все в макет. Возможно, кому-нибудь понадобится.