|
Вывод табличного списка с ограничением по сумме | ☑ | ||
---|---|---|---|---|
0
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
|
|||
2
Chan1C
08.10.21
✎
09:47
|
(1) не совсем поняла
группировку по чему? имеющие это я так поняла в запросе? |
|||
3
DrShad
08.10.21
✎
09:54
|
(2) группировку по полям, по которым нужно считать сумму
и таки да все это в запросе |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |