счет на оплату по 2 ставкам для коммерческих представителей

1. user2109808 30.10.24 10:58 Сейчас в теме
доброго времени суток, есть такая задача - есть счета для оплаты по электроэнергии/водоснабжению/отоплению коммерческие и бывает что они обновляются. так вот если на оплату берутся данные из регистра сведений срез последних, то в случае когда половина месяца была оплачена по одной ставке, а другая половина по другой ставке то как такое вывести?
если контрагент имеет 2 оплаты по ставкам к примеру 3,17 и 3,77 то выводиться должно 2 строки в счету, а так пока 1 строка со ставкой 3,77. как в запросе добавить условие чтобы если и оплатили месяц по 2 ставкам то выводилось 2 строки
через выборку когда тогда?
это код который выводит данные счета на оплату по электроэнергии
Запрос1 = Новый Запрос;
	Запрос1.Текст =  "ВЫБРАТЬ
	|	НачисленияПоПриборамУчета.ДоговорАренды.Организация.ИНН КАК ИНН,
	|	НачисленияПоПриборамУчета.ДоговорАренды.Организация.НаименованиеПолное КАК Организация,
	|	НачисленияПоПриборамУчета.Услуга КАК Услуга
	|ИЗ
	|	РегистрНакопления.НачисленияПоПриборамУчета КАК НачисленияПоПриборамУчета
	|ГДЕ
	|	НачисленияПоПриборамУчета.ДоговорАренды.Контрагент = &Контрагент
	|	И НачисленияПоПриборамУчета.Период >= &Период
	|	И НачисленияПоПриборамУчета.Период <= &ПериодК
	|	И НачисленияПоПриборамУчета.Услуга.Наименование ПОДОБНО ""%электроэнергию%""" ;
	
	ЗапросНач = Новый Запрос;
	ЗапросНач.Текст =  "ВЫБРАТЬ
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Контрагент.НаименованиеПолное КАК Контрагент,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Документ КАК Документ,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Номенклатура КАК Номенклатура,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ОбъектНедвижимости КАК Объект,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаБезУчетаНалогов КАК Всего,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаНДС КАК НДС,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаНСП КАК НСП,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаВсего КАК ВсегоСУчетомНалогов,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.БезНаличныйРасчет КАК БезНаличныйРасчет,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды.Организация.ИНН КАК ДоговорАрендыОрганизацияИНН,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды.Организация.Наименование КАК ДоговорАрендыОрганизацияНаименование,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды КАК ДоговорАренды,
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ПриборУчета КАК ПриборУчета
	|ПОМЕСТИТЬ ВременнаяТаблица
	|ИЗ
	|	РегистрСведений.НачисленияПоКонтрагентам_Извещения.СрезПоследних(&Период, Регистратор = &Регистратор) КАК НачисленияПоКонтрагентам_ИзвещенияСрезПоследних
	|ГДЕ
	|	НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Номенклатура.Наименование ПОДОБНО ""%электроэнергию%""
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Регистратор КАК Регистратор,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ПриборУчета КАК ПриборУчета,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ДоговорКонтрагента КАК ДоговорКонтрагента,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Услуга КАК Услуга,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ДоговорАренды КАК ДоговорАренды,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ФактическоеОкончание КАК ФактическоеОкончание,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ФактическоеНачало КАК ФактическоеНачало,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаПоказаний КАК Разница,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаФакт КАК РазницаФакт,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Цена КАК Цена,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Показание КАК ПоказаниеНаКонецПериода,
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Показание - ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаПоказаний КАК ПоказаниеНаНачалоПериода
	|ПОМЕСТИТЬ ВременнаяТаблицаПоказ
	|ИЗ
	|	РегистрСведений.ПоказанияСчетчиковОбъектовНедвижимости.СрезПоследних(&Период, Регистратор ССЫЛКА Документ.АктСнятияПоказанийПриборовУчетаИБиллинга) КАК ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних
	|ГДЕ
	|	ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Услуга.Наименование ПОДОБНО ""%электроэнергию%""
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВременнаяТаблица.Контрагент КАК Контрагент,
	|	ВременнаяТаблица.Документ КАК Документ,
	|	ВременнаяТаблица.Номенклатура КАК Номенклатура,
	|	ВременнаяТаблица.Объект КАК Объект,
	|	ВременнаяТаблица.Всего КАК Всего,
	|	ВременнаяТаблица.НДС КАК НДС,
	|	ВременнаяТаблица.НСП КАК НСП,
	|	ВременнаяТаблица.ВсегоСУчетомНалогов КАК ВсегоСУчетомНалогов,
	|	ВременнаяТаблица.БезНаличныйРасчет КАК БезНаличныйРасчет,
	|	ВременнаяТаблица.ДоговорАрендыОрганизацияИНН КАК ДоговорАрендыОрганизацияИНН,
	|	ВременнаяТаблица.ДоговорАрендыОрганизацияНаименование КАК ДоговорАрендыОрганизацияНаименование,
	|	ВременнаяТаблица.ДоговорАренды КАК ДоговорАренды,
	|	ВременнаяТаблица.ПриборУчета КАК ПриборУчета,
	|	ВременнаяТаблицаПоказ.Регистратор КАК Регистратор,
	|	ВременнаяТаблицаПоказ.ПриборУчета КАК ПриборУчетаИБиллинг,
	|	ВременнаяТаблицаПоказ.ФактическоеОкончание КАК ФактическоеОкончание,
	|	ВременнаяТаблицаПоказ.ФактическоеНачало КАК ФактическоеНачало,
	|	ВременнаяТаблицаПоказ.Разница КАК Разница,
	|	ВременнаяТаблицаПоказ.РазницаФакт КАК РазницаФакт,
	|	ВременнаяТаблицаПоказ.ПоказаниеНаКонецПериода КАК ПоказаниеНаКонецПериода,
	|	ВременнаяТаблицаПоказ.ПоказаниеНаНачалоПериода КАК ПоказаниеНаНачалоПериода,
	|	ВременнаяТаблицаПоказ.Цена КАК Тариф,
	|	ВременнаяТаблица.Объект.ПолезнаяПлощадьОбъектаНедвижимости КАК Метры
	|ИЗ
	|	ВременнаяТаблица КАК ВременнаяТаблица
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаПоказ КАК ВременнаяТаблицаПоказ
	|		ПО ВременнаяТаблица.ПриборУчета = ВременнаяТаблицаПоказ.ПриборУчета
	|ИТОГИ ПО
	|	Контрагент";
	ЗапросНач.УстановитьПараметр("Период", КонецМесяца(Объект.Период)); 
	ЗапросНач.УстановитьПараметр("Регистратор", Объект.Документ);
	
	
	//
	//Запрос2.УстановитьПараметр("Контрагент", Объект.Контрагент);
	//Запрос2.УстановитьПараметр("Период", Объект.Период);
	//Запрос2.УстановитьПараметр("Документ",Объект.Документ);
	//Запрос2.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
	
	Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
	Запрос.УстановитьПараметр("Период", Объект.Период);
	Запрос.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
	
	//Запрос.УстановитьПараметр("Услуга", Объект.Услуга);
	Запрос1.УстановитьПараметр("Контрагент", Объект.Контрагент);
	Запрос1.УстановитьПараметр("Период", Объект.Период);
	Запрос1.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
	
	//	Запрос5.УстановитьПараметр("Контрагент", Объект.Контрагент);
	//	Запрос5.УстановитьПараметр("Период", НачалоМесяца(Объект.Период));
	//	Запрос5.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
	
	//Запрос6.УстановитьПараметр("Контрагент", Объект.Контрагент);
	//Запрос6.УстановитьПараметр("Период", Объект.Период);
	//Запрос6.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
	
	//Запрос1.УстановитьПараметр("Услуга", Объект.Услуга);
	
	ДанныеОрганизации = Запрос1.Выполнить();
	ДанныеНачисления = ЗапросНач.Выполнить();
	//	ДанныеНачмсления2 = Запрос6.Выполнить();
	//	Результат = Запрос.Выполнить();
	//Результат2 = Запрос5.Выполнить();
	Если НЕ ДанныеНачисления.Пустой() Тогда  
		ТабличныйДокумент = Новый ТабличныйДокумент;
		
		ТабличныйДокумент.Очистить();
		
		ТабличныйДокумент.НачатьАвтогруппировкуСтрок();
		Организация = ДанныеОрганизации.Выбрать();
		Организация.Следующий();
		//Начисления = ДанныеНачисления.Выбрать();
		
		//	Начисления2 = ДанныеНачмсления2.Выбрать();
		ВыборкаКонтрагент = ДанныеНачисления.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		//ВыборкаКонтрагентОБЩ = Результат2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаКонтрагент.Следующий() Цикл
			// ВыборкаКонтрагентОБЩ.Следующий();
			ОбластьЗаголовокОбщЭлектро = Макет3.ПолучитьОбласть("Заголовок");
			ОбластьЗаголовокОбщЭлектро.Параметры.Заполнить(Организация);
			ОбластьЗаголовокОбщЭлектро.Параметры.Период = Формат(Объект.Период,"ДФ='MMMM.yyyy'");
			
			ОбластьЗаголовокОбщЭлектро.Параметры.Контрагент = ВыборкаКонтрагент.Контрагент;
			ТабличныйДокумент.Вывести(ОбластьЗаголовокОбщЭлектро);
			ВыборкаДетальныеЗаписи = ВыборкаКонтрагент.Выбрать();
			
			//	ВыброкаДетальныеЗаписиОбщ = ВыборкаКонтрагентОБЩ.Выбрать(); 
			ОбластьШапкаОбщЭлектро = Макет3.ПолучитьОбласть("Шапка");
			ТабличныйДокумент.Вывести(ОбластьШапкаОбщЭлектро);
			НомерСтроки = 0;
			КонИтогоСумма = 0;
			КонИтого = 0;
			КонИтогоНДС = 0;
			КонИтогоНСП = 0;
			
			
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
				// Начисления.Следующий();		 
				НомерСтроки = НомерСтроки + 1;
				ОбластьСтрокаОбщЭлектро = Макет3.ПолучитьОбласть("Строка");
				ОбластьСтрокаОбщЭлектро.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
				//ОбластьСтрокаОбщЭлектро.Параметры.НДС = Начисления.НДС;
				//ОбластьСтрокаОбщЭлектро.Параметры.НСП = Начисления.НСП;
				//ОбластьСтрокаОбщЭлектро.Параметры.ВсегоСУчетомНалогов = Начисления.ВсегоСУчетомНалогов;
				ОбластьСтрокаОбщЭлектро.Параметры.НомерСтроки = НомерСтроки;
				//ИтогоСумма = ИтогоСумма + ВыборкаДетальныеЗаписи.Всего;
				//Итого = Итого + Начисления.ВсегоСУчетомНалогов;
				//ИтогоНСП = ИтогоНСП + Начисления.НСП;
				//ИтогоНДС = ИтогоНДС + Начисления.НДС;
				
				//ОбластьСтрокаОбщЭлектро.Параметры.Заполнить(ВыброкаДетальныеЗаписиОбщ);
				// ИтогоСумма = ИтогоСумма + ВыброкаДетальныеЗаписиОбщ.Всего;
				КонИтогоСумма = КонИтогоСумма +  ВыборкаДетальныеЗаписи.Всего;
				КонИтого =  КонИтого + ВыборкаДетальныеЗаписи.ВсегоСУчетомНалогов;
				КонИтогоНДС = КонИтогоНДС + ВыборкаДетальныеЗаписи.НДС;
				КонИтогоНСП = КонИтогоНСП + ВыборкаДетальныеЗаписи.НСП;
				
				ТабличныйДокумент.Вывести(ОбластьСтрокаОбщЭлектро);
			КонецЦикла;
			
			НомерСтроки3 = 0;
			ИтогоСумма3 = 0;
			Итого3 = 0;
			ИтогоНСП3 = 0;
			ИтогоНДС3 = 0;
			НомерСтроки3 = НомерСтроки;
			
			
			ОбластьПодвалОбщЭлектро = Макет3.ПолучитьОбласть("Подвал");
			ОбластьПодвалОбщЭлектро.Параметры.Заполнить(Организация);
			ОбластьПодвалОбщЭлектро.Параметры.ИтогоСумма = Формат(КонИтогоСумма, "ЧДЦ='2'");
			ОбластьПодвалОбщЭлектро.Параметры.Итого = Формат(КонИтого, "ЧДЦ='2'");
			ОбластьПодвалОбщЭлектро.Параметры.ИтогоНДС = Формат(КонИтогоНДС , "ЧДЦ='2'");
			ОбластьПодвалОбщЭлектро.Параметры.ИтогоНСП = Формат(КонИтогоНСП , "ЧДЦ='2'");
			ОбластьПодвалОбщЭлектро.Параметры.Директор = Директор;
			ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
			ТабличныйДокумент.АвтоМасштаб = Истина;
			ТабличныйДокумент.Вывести(ОбластьПодвалОбщЭлектро);
			
			ОбластьОтрывОбщЭлектро = Макет3.ПолучитьОбласть("Отрыв");
			ТабличныйДокумент.Вывести(ОбластьОтрывОбщЭлектро);
			//ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			
		КонецЦикла;
		
		
	Иначе
		Сообщить("Данных за элетроэнергию не обнаружено!");
	КонецЕсли; 
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. starjevschik 30.10.24 16:23 Сейчас в теме
Перед тем, как переходить к "когда тогда", надо алгоритм составить. А то тут все в кучку - какой-то регистр, какие-то документы, ставки, слов много, а смысла в них не так чтобы очень.

(1)
если контрагент имеет 2 оплаты по ставкам

а если 3? А 5? Наверное, сначала надо получить эти оплаты, раз от их количества что-то зависит? Вот получаем первый пункт алгоритма - получение списка этих оплат, какие бы они ни были.
То есть надо узнать, где и в каком виде они хранятся в базе данных и разработать код, который их получит.
Дальше из постановки задачи непонятно, что нужно, но это можно будет после выполнения первого пункта разбираться дальше.
4. user2109808 30.10.24 16:43 Сейчас в теме
(3) код не мой и давнишний. тоже какой-то новичок делал. а по задаче вроде старался понятней объяснить, что просто изменился тариф по оплате электроэнергии и контрагенты первую половину месяца оплатили по одному тарифу и вторую половину месяца оплатили по другому тарифу. и теперь нужно в макет вывести два эти тарифа(если так было оплачено)
5. user2109808 30.10.24 16:43 Сейчас в теме
(3) спасибо за наставление
2. user2109808 30.10.24 12:59 Сейчас в теме
документ Начисления По Услугам Аренды Недвижимости
движения начисления по контрагентам_извещения
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот