Итоги по оборотам акта сверки взаиморасчетов

1. user1004898 28 22.02.19 15:03 Сейчас в теме
Как можно вывести итоги по двум таблицам раздельно по Дебет/Кредит Нашей организации и Дебет/Кредит Нашего Партнера в печатную форму Акта сверки взаиморасчетов?

То есть в обычную форму внес новую строку - Итого оборотов, им присвоил новые параметры (фото1).
Нужно бы получить форму вида (фото2).

Внешнюю печатную форму уже настроил для подключения в базу.
Косяк получается на выводе Итогов.

Сам модуль формы документа Сверки Взаиморасчетов настолько запутан, что я прошу помощи найти как вывести итоги отдельно по Дебет/Кредит.

В частности тут есть Условие для Строки Задолженность по состоянию на Период
ОбластьМакетаКонОстаток.Параметры.КонецПериодаСверки = Формат(ДанныеДокумента.КонецПериода, "ДФ='дд ММММ гггг'");
	Если КонечныйОстаток > 0 Тогда
		ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = 0;
		ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = КонечныйОстаток;
	Иначе
		ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = -КонечныйОстаток;
		ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = 0;
	КонецЕсли;				
	ТабличныйДокумент.Вывести(ОбластьМакетаКонОстаток);
Показать


Теперь хочу для своей области макета ОбластьМакетаИтогоОборотов вывести отдельно по каждому параметру (т.е. вместо 1/2/3/4 - нужны дельные параметры, но какие??)

Если КонечныйОстаток > 0 Тогда
		ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетНаш = 1;
		ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитНаш = 2;
		ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетПартнера = 3;
		ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитПартнера = 4;
		
	Иначе
		
	КонецЕсли;
	ТабличныйДокумент.Вывести(ОбластьМакетаИтогоОборотов);
Показать
Прикрепленные файлы:
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Release 22.02.19 15:23 Сейчас в теме
Как-то так:
    Если КонечныйОстаток > 0 Тогда
        ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = 0;
        ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = КонечныйОстаток;
       ИтогОбротДебетНаш = ИтогОбротДебетНаш + КонечныйОстаток;
       ИтогОбротКредитПартнера = ИтогОбротДебетНаш;
    Иначе
        ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = -КонечныйОстаток;
        ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = 0;
        ИтогОбротКредитНаш = ИтогОбротКредитНаш - КонечныйОстаток;
        ИтогОбротДебетПартнера = ИтогОбротКредитНаш;
    КонецЕсли;
//...
    Если КонечныйОстаток > 0 Тогда
        ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетНаш = ИтогОбротДебетНаш;
        ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитНаш = ИтогОбротКредитНаш;
        ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетПартнера = ИтогОбротДебетПартнера;
        ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитПартнера = ИтогОбротКредитПартнера;
        
    Иначе
        
    КонецЕсли;
Показать
+
3. user1004898 28 22.02.19 15:28 Сейчас в теме
эти параметры
ИтогОбротДебетПартнера
ИтогОбротКредитПартнера
ИтогОбротДебетНаш
ИтогОбротКредитНаш

они только в макете. В запросах модуля печатной формы их нет (допустим).
Откуда же они подтянутся?
+
4. Release 22.02.19 15:31 Сейчас в теме
(3) Наверное эти переменные нужно добавить перед циклом, в котором выполняется вышеуказанное условие.
Как-то так:
ИтогОбротДебетНаш = 0;
ИтогОбротКредитНаш = 0;
ИтогОбротДебетПартнера = 0;
ИтогОбротКредитПартнера = 0;
+
5. user1004898 28 22.02.19 18:40 Сейчас в теме
(4)
тут вопрос иначе стоит: как суммировать суммы долга по каждому счету.
Из какой функции вытянуть эти суммы, чтобы их потом просуммировать и вывести в итого для Дебет/Кредит
+
6. kumi2012 103 23.02.19 19:59 Сейчас в теме
(5) Через отладчик посмотрите итоговую выборку. Может там есть счета.
+
7. KVIKS 399 23.02.19 22:02 Сейчас в теме
Делал такую же штуку.
В макете добавил область со своими параметрами - на скрине.
В коде в 3-х местах добавил свои переменные СуммаОборотПартнера, СуммаОборотНАШ - перед циклом обнулил, в цикле проссумировал, и за циклом вывел в свою область - в листинге выделил жирным изменения.


Функция ВывестиДетальныеЗаписи(
	ВыборкаДетальныхЗаписей, 
	ДанныеДокумента, 
	ТекущийПартнер = Неопределено, 
	ТекущийДоговор = Неопределено, 
	СтруктураПредставленийУчастников, 
	Макет, 
	ТаблицаЗадолженности)
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	ОбластьМакетаГруппировка = Макет.ПолучитьОбласть("ГруппировкаПартнерВалюта");
	ОбластьМакетаШапка		 = Макет.ПолучитьОбласть("ШапкаТаблицыРасчеты");
	ОбластьМакетаНачОстаток  = Макет.ПолучитьОбласть("СтрокаТаблицыРасчетыНачОстаток");
	ОбластьМакетаСтрока 	 = Макет.ПолучитьОбласть("СтрокаТаблицыРасчеты");
	ОбластьМакетаКонОстаток  = Макет.ПолучитьОбласть("СтрокаТаблицыРасчетыКонОстаток");
	ОбластьМакетаОборот  	 = Макет.ПолучитьОбласть("СтрокаТаблицыРасчетыОборот");
	
	СтрокаЗадолженности = ТаблицаЗадолженности.Добавить();
	СтрокаЗадолженности.Валюта = ВыборкаДетальныхЗаписей.Валюта;
	Если ТаблицаЗадолженности.Колонки.Найти("Партнер") <> Неопределено Тогда
		СтрокаЗадолженности.Партнер = ?(ДанныеДокумента.РасшифровкаПоПартнерам,
										ПредставлениеПартнера(ТекущийПартнер),
										ПредставлениеПартнера(ДанныеДокумента.Партнер));
	КонецЕсли;
	Если ТаблицаЗадолженности.Колонки.Найти("Договор") <> Неопределено Тогда
		СтрокаЗадолженности.Договор = ?(ДанныеДокумента.РасшифровкаПоДоговорам,
										ПредставлениеДоговора(ТекущийДоговор),
										ПредставлениеДоговора(ДанныеДокумента.Договор));
	КонецЕсли;
	Если ДанныеДокумента.РасшифровкаПоПартнерам Тогда 
		ОбластьМакетаГруппировка.Параметры.ПартнерВалюта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='%1, в валюте: %2'"), СтрокаЗадолженности.Партнер, ВыборкаДетальныхЗаписей.Валюта);
	ИначеЕсли ДанныеДокумента.РасшифровкаПоДоговорам Тогда 
		ОбластьМакетаГруппировка.Параметры.ПартнерВалюта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='%1, в валюте: %2'"), СтрокаЗадолженности.Договор, ВыборкаДетальныхЗаписей.Валюта);
	Иначе
		ОбластьМакетаГруппировка.Параметры.ПартнерВалюта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='в валюте: %1'"), ВыборкаДетальныхЗаписей.Валюта);
	КонецЕсли;
	
	ТабличныйДокумент.Вывести(ОбластьМакетаГруппировка);
	
	ОбластьМакетаШапка.Параметры.Заполнить(СтруктураПредставленийУчастников);
	ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
	
	ПредставленияДокументов = ПредставленияДокументов();
	ПредставленияВладельцевДокументов = ПредставленияВладельцевДокументов();
	
	ПредставлениеДокумента = "";
	ПредставлениеВладельцаДокумента = "";
	
	НачальныйОстаток = 0;
	КонечныйОстаток  = 0;
	СуммаОборотПартнера  = 0;
	СуммаОборотНАШ		 = 0;
	
	ДетальныеЗаписи = ВыборкаДетальныхЗаписей.Выбрать();
	
	ПервыйПроход = Истина;
	Пока ДетальныеЗаписи.Следующий() Цикл
		
		Если ДетальныеЗаписи.Документ = Неопределено Тогда
			Если ДетальныеЗаписи.Период = ДанныеДокумента.НачалоПериода Тогда
				НачальныйОстаток = НачальныйОстаток + ДетальныеЗаписи.СуммаНачальныйОстаток;
			Иначе
				КонечныйОстаток = КонечныйОстаток + ДетальныеЗаписи.СуммаКонечныйОстаток;
			КонецЕсли;
		Иначе
			
			Если ПервыйПроход
				И ЗначениеЗаполнено(ДанныеДокумента.НачалоПериода) Тогда
				
				ОбластьМакетаНачОстаток.Параметры.НачалоПериодаСверки = Формат(ДанныеДокумента.НачалоПериода, "ДФ='дд ММММ гггг'");
				Если НачальныйОстаток > 0 Тогда
					ОбластьМакетаНачОстаток.Параметры.СуммаНашДолг = 0;
					ОбластьМакетаНачОстаток.Параметры.СуммаДолгПартнера = НачальныйОстаток;
				Иначе
					ОбластьМакетаНачОстаток.Параметры.СуммаНашДолг = -НачальныйОстаток;
					ОбластьМакетаНачОстаток.Параметры.СуммаДолгПартнера = 0;
				КонецЕсли;				
				ТабличныйДокумент.Вывести(ОбластьМакетаНачОстаток);
				
			КонецЕсли;
			
			ИмяДокумента = ДетальныеЗаписи.Документ.Метаданные().Имя;
			ПредставленияДокументов.Свойство(ИмяДокумента, ПредставлениеДокумента);
			ПредставленияВладельцевДокументов.Свойство(ИмяДокумента, ПредставлениеВладельцаДокумента);
			
			Если ЗначениеЗаполнено(ПредставлениеВладельцаДокумента) Тогда
				ПредставлениеВладельцаДокумента = ПредставлениеВладельцаДокумента + " " + ?(ДетальныеЗаписи.ЭтоВходящийДокумент,
					СтруктураПредставленийУчастников.КонтрагентНаименование,
					СтруктураПредставленийУчастников.ПредставлениеОрганизации);
			КонецЕсли;
			
			ОписаниеДокумента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru='%1 №%2 от %3'"),
				?(ПредставлениеДокумента <> Неопределено, ПредставлениеДокумента, ""),
				?(ЗначениеЗаполнено(ДетальныеЗаписи.Номер), ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДетальныеЗаписи.Номер), "_______"),
				?(ЗначениеЗаполнено(ДетальныеЗаписи.ДатаВходящегоДокумента), Формат(ДетальныеЗаписи.ДатаВходящегоДокумента, "ДЛФ=D") + " " + НСтр("ru='г.'"), "'  .  .    '"));
			
			Если ЗначениеЗаполнено(ДетальныеЗаписи.ОрганизацияРеглУчет) Тогда
				
				СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДетальныеЗаписи.ОрганизацияРеглУчет, ДанныеДокумента.Дата);
				ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, 
					"ПолноеНаименование");
				
				ОписаниеДокумента = НСтр("ru='Перенос задолженности'");
				ПредставлениеВладельцаДокумента = НСтр("ru='от'") + " " + ПредставлениеОрганизации;
				
			КонецЕсли;
			
			ОбластьМакетаСтрока.Параметры.Дата = Формат(ДетальныеЗаписи.Дата, "ДФ='дд.ММ.гггг'");
			ОбластьМакетаСтрока.Параметры.Документ = ОписаниеДокумента;
			ОбластьМакетаСтрока.Параметры.ОтКого = ПредставлениеВладельцаДокумента;
			ОбластьМакетаСтрока.Параметры.СуммаДолгПартнера = ДетальныеЗаписи.СуммаДолгПартнера;
			ОбластьМакетаСтрока.Параметры.СуммаНашДолг = ДетальныеЗаписи.СуммаНашДолг;
			ОбластьМакетаСтрока.Параметры.ДокументСсылка = ДетальныеЗаписи.Документ;
			ТабличныйДокумент.Вывести(ОбластьМакетаСтрока);
			
			СуммаОборотПартнера=СуммаОборотПартнера+ДетальныеЗаписи.СуммаДолгПартнера;
			СуммаОборотНАШ=СуммаОборотНАШ+ДетальныеЗаписи.СуммаНашДолг;
			
			ПервыйПроход = Ложь;
			
		КонецЕсли;
	
	КонецЦикла; 
	
	Если ПервыйПроход
		И ЗначениеЗаполнено(ДанныеДокумента.НачалоПериода) Тогда
		
		ОбластьМакетаНачОстаток.Параметры.НачалоПериодаСверки = Формат(ДанныеДокумента.НачалоПериода, "ДФ='дд ММММ гггг'");
		Если НачальныйОстаток > 0 Тогда
			ОбластьМакетаНачОстаток.Параметры.СуммаНашДолг = 0;
			ОбластьМакетаНачОстаток.Параметры.СуммаДолгПартнера = НачальныйОстаток;
		Иначе
			ОбластьМакетаНачОстаток.Параметры.СуммаНашДолг = -НачальныйОстаток;
			ОбластьМакетаНачОстаток.Параметры.СуммаДолгПартнера = 0;
		КонецЕсли;				
		ТабличныйДокумент.Вывести(ОбластьМакетаНачОстаток);
		
	КонецЕсли;
	
	ОбластьМакетаОборот.Параметры.ПериодСверки=Формат(ДанныеДокумента.НачалоПериода,"ДФ=dd.MM.yyyy")+" - "+Формат(ДанныеДокумента.КонецПериода,"ДФ=dd.MM.yyyy");
	ОбластьМакетаОборот.Параметры.СуммаОборотПартнера=СуммаОборотПартнера;
	ОбластьМакетаОборот.Параметры.СуммаОборотНАШ=СуммаОборотНАШ;
	ТабличныйДокумент.Вывести(ОбластьМакетаОборот);
	
	ОбластьМакетаКонОстаток.Параметры.КонецПериодаСверки = Формат(ДанныеДокумента.КонецПериода, "ДФ='дд ММММ гггг'");
	Если КонечныйОстаток > 0 Тогда
		ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = 0;
		ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = КонечныйОстаток;
	Иначе
		ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = -КонечныйОстаток;
		ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = 0;
	КонецЕсли;				
	ТабличныйДокумент.Вывести(ОбластьМакетаКонОстаток);
	
	Если КонечныйОстаток <> 0 Тогда
		СтрокаЗадолженности.Сумма = КонечныйОстаток;
	Иначе
		ТаблицаЗадолженности.Удалить(СтрокаЗадолженности);
	КонецЕсли; 
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать
Прикрепленные файлы:
+
8. user1004898 28 24.02.19 10:28 Сейчас в теме
(7)

вот именно так и делал. отладчиком прошелся, понял что идут записи в Детальные записи.
И когда прописывал:
ИтогОбротПартнера = ИтогОбротПартнера + ДетальныеЗаписи.СуммаДолгПартнера;

то получал ошибку:

{ВнешняяОбработка.АктСверкиВзаимныхРасчетовВнешний.МодульОбъекта(1100)}: Преобразование значения к типу Число не может быть выполнено
			ИтогОбротПартнера = ИтогОбротПартнера + ДетальныеЗаписи.СуммаДолгПартнера;


делал формат (число) для Детальных записей. но всё равно ни как.
потом и задался вопросом, может не то вытягиваю.
+
9. KVIKS 399 24.02.19 11:10 Сейчас в теме
(8)
Преобразование значения к типу Число не может быть выполнено

Это ошибка преобразования, значит либо не объявлена переменная ИтогОбротПартнера =0; перед циклом, либо ДетальныеЗаписи.СуммаДолгПартнера не число тогда просто проверку на число поставить
+
11. user1004898 28 24.02.19 11:19 Сейчас в теме +1 $m
(9)
всё так, как у Вас. Формы у нас схожие.
воспользовался подказкой Ягг из поста (функция "вчисло")
https://forum.infostart.ru/forum9/topic51033/

считает как надо.
+
10. KVIKS 399 24.02.19 11:13 Сейчас в теме
(8)
формат (число)
Функция формат всегда возвращает строку
+
12. kumi2012 103 24.02.19 20:17 Сейчас в теме
(8) перед сложением проверяйте на NULL
+
Внимание! Тема сдана в архив

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