Как можно вывести итоги по двум таблицам раздельно по Дебет/Кредит Нашей организации и Дебет/Кредит Нашего Партнера в печатную форму Акта сверки взаиморасчетов?
То есть в обычную форму внес новую строку - Итого оборотов, им присвоил новые параметры (фото1).
Нужно бы получить форму вида (фото2).
Внешнюю печатную форму уже настроил для подключения в базу.
Косяк получается на выводе Итогов.
Сам модуль формы документа Сверки Взаиморасчетов настолько запутан, что я прошу помощи найти как вывести итоги отдельно по Дебет/Кредит.
В частности тут есть Условие для Строки Задолженность по состоянию на Период
ОбластьМакетаКонОстаток.Параметры.КонецПериодаСверки = Формат(ДанныеДокумента.КонецПериода, "ДФ='дд ММММ гггг'");
Если КонечныйОстаток > 0 Тогда
ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = 0;
ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = КонечныйОстаток;
Иначе
ОбластьМакетаКонОстаток.Параметры.СуммаНашДолг = -КонечныйОстаток;
ОбластьМакетаКонОстаток.Параметры.СуммаДолгПартнера = 0;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакетаКонОстаток);
Показать
Теперь хочу для своей области макета ОбластьМакетаИтогоОборотов вывести отдельно по каждому параметру (т.е. вместо 1/2/3/4 - нужны дельные параметры, но какие??)
Если КонечныйОстаток > 0 Тогда
ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетНаш = 1;
ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитНаш = 2;
ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротДебетПартнера = 3;
ОбластьМакетаИтогоОборотов.Параметры.ИтогОбротКредитПартнера = 4;
Иначе
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакетаИтогоОборотов);
(4)
тут вопрос иначе стоит: как суммировать суммы долга по каждому счету.
Из какой функции вытянуть эти суммы, чтобы их потом просуммировать и вывести в итого для Дебет/Кредит
Делал такую же штуку.
В макете добавил область со своими параметрами - на скрине.
В коде в 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 Тогда
СтрокаЗадолженности.Сумма = КонечныйОстаток;
Иначе
ТаблицаЗадолженности.Удалить(СтрокаЗадолженности);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
вот именно так и делал. отладчиком прошелся, понял что идут записи в Детальные записи.
И когда прописывал:
ИтогОбротПартнера = ИтогОбротПартнера + ДетальныеЗаписи.СуммаДолгПартнера;
то получал ошибку:
{ВнешняяОбработка.АктСверкиВзаимныхРасчетовВнешний.МодульОбъекта(1100)}: Преобразование значения к типу Число не может быть выполнено
ИтогОбротПартнера = ИтогОбротПартнера + ДетальныеЗаписи.СуммаДолгПартнера;
делал формат (число) для Детальных записей. но всё равно ни как.
потом и задался вопросом, может не то вытягиваю.
Преобразование значения к типу Число не может быть выполнено
Это ошибка преобразования, значит либо не объявлена переменная ИтогОбротПартнера =0; перед циклом, либо ДетальныеЗаписи.СуммаДолгПартнера не число тогда просто проверку на число поставить