Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вывод табличного списка с ограничением по сумме

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

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

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


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

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


Буду благодарна за любые советы. Еще раз напомню, что я совсем-совсем новичок. Теги и метки нормально ставить не умею.
Конфигурация: 1С:Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК (2.0.57.4)
1С:Предприятие 8.2 (8.2.19.90)
   Ёпрст
 
1 - 08.10.21 - 09:07
(0) выкинуть первые, добавить группировку + имеющие Сумма(показатель)>10000
   Chan1C
 
2 - 08.10.21 - 09:47
(1) не совсем поняла
группировку по чему?
имеющие это я так поняла в запросе?
   DrShad
 
3 - 08.10.21 - 09:54
(2) группировку по полям, по которым нужно считать сумму
и таки да все это в запросе

Список тем форума
 
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.