При выполнении запроса, нахожу лицевой счет по услуге, почему-то выдаёт долг за период 01.10 по 31.10, в базе долга нету а есть переплата,
Начисления и оплату считает корректно
Подскажите пожалуйста, где ошибся
Заполняю ДБФ файл для соц.защиты.
Начисления и оплату считает корректно
Подскажите пожалуйста, где ошибся
Заполняю ДБФ файл для соц.защиты.
&НаСервере
Процедура ВыгрузитьСодержаниеТекущийРемонт()
ОплатыК = КонецМесяца(КонецМесяца(ДатаОбр)+1)-46799;
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет КАК КвартиросъемщикЛицевойСчет,
| РасчетыПоНачислениямОстаткиИОбороты.Начисление,
| СУММА(РасчетыПоНачислениямОстаткиИОбороты.СуммаНачальныйОстаток) КАК НачальноеСальдо,
| СУММА(РасчетыПоНачислениямОстаткиИОбороты.СуммаПриход) КАК Оплата,
| СУММА(-РасчетыПоНачислениямОстаткиИОбороты.СуммаКонечныйОстаток) КАК Долг,
| СУММА(ВложенныйЗапрос.Потреблено) КАК Потреблено,
| СУММА(ВложенныйЗапрос.Тариф) КАК Тариф,
| СУММА(ВложенныйЗапрос.Начислено) КАК Начислено,
| NULL КАК НачальноеСальдо2,
| NULL КАК Оплата2,
| NULL КАК Долг2,
| NULL КАК Потреблено2,
| NULL КАК Тариф2,
| NULL КАК Начислено2
|ПОМЕСТИТЬ втСвоп
|ИЗ
| РегистрНакопления.РасчетыПоНачислениям.ОстаткиИОбороты(&Нач, &Кон, Период, , ) КАК РасчетыПоНачислениямОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПолныеСведенияОНачислениях.Квартиросъемщик.ЛицевойСчет КАК ЛС,
| ПолныеСведенияОНачислениях.Количество КАК Потреблено,
| ПолныеСведенияОНачислениях.Начисление КАК Начисление,
| ПолныеСведенияОНачислениях.Тариф КАК Тариф,
| ПолныеСведенияОНачислениях.Сумма КАК Начислено
| ИЗ
| РегистрНакопления.ПолныеСведенияОНачислениях КАК ПолныеСведенияОНачислениях
| ГДЕ
| ПолныеСведенияОНачислениях.Период МЕЖДУ &НачалоН И &КонецН
| И ПолныеСведенияОНачислениях.Начисление.Наименование = ""Общедомовые ГВС ХВС нагрев"") КАК ВложенныйЗапрос
| ПО РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет = ВложенныйЗапрос.ЛС
| И РасчетыПоНачислениямОстаткиИОбороты.Начисление = ВложенныйЗапрос.Начисление
|ГДЕ
| РасчетыПоНачислениямОстаткиИОбороты.Начисление.Наименование = ""Общедомовые ГВС ХВС нагрев""
|
|СГРУППИРОВАТЬ ПО
| РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет,
| РасчетыПоНачислениямОстаткиИОбороты.Начисление
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет,
| РасчетыПоНачислениямОстаткиИОбороты.Начисление,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| СУММА(РасчетыПоНачислениямОстаткиИОбороты.СуммаНачальныйОстаток),
| СУММА(РасчетыПоНачислениямОстаткиИОбороты.СуммаПриход),
| СУММА(-РасчетыПоНачислениямОстаткиИОбороты.СуммаКонечныйОстаток),
| СУММА(ВложенныйЗапрос.Потреблено),
| СУММА(ВложенныйЗапрос.Тариф),
| СУММА(ВложенныйЗапрос.Начислено)
|ИЗ
| РегистрНакопления.РасчетыПоНачислениям.ОстаткиИОбороты(&Нач, &Кон, Период, , ) КАК РасчетыПоНачислениямОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПолныеСведенияОНачислениях.Квартиросъемщик.ЛицевойСчет КАК ЛС,
| ПолныеСведенияОНачислениях.Количество КАК Потреблено,
| ПолныеСведенияОНачислениях.Начисление КАК Начисление,
| ПолныеСведенияОНачислениях.Тариф КАК Тариф,
| ПолныеСведенияОНачислениях.Сумма КАК Начислено
| ИЗ
| РегистрНакопления.ПолныеСведенияОНачислениях КАК ПолныеСведенияОНачислениях
| ГДЕ
| ПолныеСведенияОНачислениях.Период МЕЖДУ &НачалоН И &КонецН
| И ПолныеСведенияОНачислениях.Начисление.Наименование = ""Квартплата"") КАК ВложенныйЗапрос
| ПО РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет = ВложенныйЗапрос.ЛС
| И РасчетыПоНачислениямОстаткиИОбороты.Начисление = ВложенныйЗапрос.Начисление
|ГДЕ
| РасчетыПоНачислениямОстаткиИОбороты.Начисление.Наименование = ""Квартплата""
|
|СГРУППИРОВАТЬ ПО
| РасчетыПоНачислениямОстаткиИОбороты.Квартиросъемщик.ЛицевойСчет,
| РасчетыПоНачислениямОстаткиИОбороты.Начисление
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втСвоп.КвартиросъемщикЛицевойСчет КАК КвартиросъемщикЛицевойСчет,
| СУММА(втСвоп.НачальноеСальдо) КАК НачальноеСальдо,
| СУММА(втСвоп.Оплата) КАК Оплата,
| СУММА(втСвоп.Долг) КАК Долг,
| СУММА(втСвоп.Потреблено) КАК Потреблено,
| СУММА(втСвоп.Тариф) КАК Тариф,
| СУММА(втСвоп.Начислено) КАК Начислено,
| СУММА(втСвоп.НачальноеСальдо2) КАК НачальноеСальдо2,
| СУММА(втСвоп.Оплата2) КАК Оплата2,
| СУММА(втСвоп.Долг2) КАК Долг2,
| СУММА(втСвоп.Потреблено2) КАК Потреблено2,
| СУММА(втСвоп.Тариф2) КАК Тариф2,
| СУММА(втСвоп.Начислено2) КАК Начислено2
|ИЗ
| втСвоп КАК втСвоп
|
|СГРУППИРОВАТЬ ПО
| втСвоп.КвартиросъемщикЛицевойСчет
|
|УПОРЯДОЧИТЬ ПО
| КвартиросъемщикЛицевойСчет";
Запрос.УстановитьПараметр("Нач",НачалоМесяца(КонецМесяца(ДатаОбр)+1));
Запрос.УстановитьПараметр("Кон",ОплатыК);
Запрос.УстановитьПараметр("НачалоН",НачалоМесяца(ДатаОбр));
Запрос.УстановитьПараметр("КонецН",КонецМесяца(ДатаОбр));
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();
БД = Новый XBase;
БД.ОткрытьФайл(ПутьКФайлу);
//Первая итерация
Поиск = УбратьПробелы(БД.lchet);
Строка = ТЗ.Найти(Поиск,"КвартиросъемщикЛицевойСчет");
Если Строка <> Неопределено Тогда
НачСал = -Строка.НачальноеСальдо;
Оплат = Строка.Оплата;
Тар = Строка.Тариф;
Кол = Строка.Потреблено;
Нач = Строка.Начислено;
БД.SUMNCH = БД.SUMNCH + Нач;
БД.SUMOPL = БД.SUMOPL + Оплат;
Если НачСал < Оплат Тогда
БД.SUMDOLG = БД.SUMDOLG + 0;
ИначеЕсли НачСал > Оплат Тогда
БД.SUMDOLG = БД.SUMDOLG + Строка.Долг;
КонецЕсли;
БД.TARIF_9 = Тар;
БД.FAKT_9 = Кол;
БД.SUMTAR_9 = Нач;
БД.Записать();
Иначе
Сообщить("Ошибка поиска строки "+ Поиск);
КонецЕсли;
Пока БД.Следующая() Цикл
Поиск = УбратьПробелы(БД.lchet);
Строка = ТЗ.Найти(Поиск,"КвартиросъемщикЛицевойСчет");
Если Строка <> Неопределено Тогда
НачСал = -(Строка.НачальноеСальдо); //Сумма по Содержанию и Текущему ремонту на начало месяца
Оплат = Строка.Оплата; //Сумма оплат по содержанию и текущему ремонту
Тар = Строка.Тариф; //Тариф по двум видам
Кол = Строка.Потреблено; //Потребление в месяц
Нач = Строка.Начислено; //Начисление как произведение Тар на Кол
БД.SUMNCH = БД.SUMNCH + Нач;
БД.SUMOPL = БД.SUMOPL + Оплат;
Если НачСал > Оплат Тогда
БД.SUMDOLG = БД.SUMDOLG + Строка.Долг;
КонецЕсли;
БД.TARIF_9 = Тар;
БД.FAKT_9 = Кол;
БД.SUMTAR_9 = Нач;
БД.Записать();
Иначе
//Сообщить("Ошибка поиска строки "+ Поиск);
КонецЕсли;
КонецЦикла;
БД.ЗакрытьФайл();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Автоматический зачет авансов в 1С:УНФ по ФИФО
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот