Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:43

Итоговые колонки

Автор Vladimir369, 14 фев 2017, 14:57

0 Пользователей и 1 гость просматривают эту тему.

Vladimir369

В моей таблице под всеми колонками итоги показывают одинаковые суммы, однако, в колонках разные. Как Сделать так что бы итоговые суммы расчитывались по колонкам?

pavl_vs

Vladimir369, похоже, что Вы заполнение параметров для всех колонок записали единым образом, взяв за основу расчет параметра ИтогоКВыплате.
Для более предметного обсуждения покажите код заполнения области ИтогоПоСтранице и по крайней мере область макета ИтогоПоСтранице.

Vladimir369

ПечатьРПВ(ТабДокумент, Выборка, ИспользуетсяПолеВедомость, ИмяМакета)
   
   ЗаполнятьКБК = ИмяМакета = "форма0504401";
   
   ОсновныеНачисления = Новый Соответствие;
      
   Больничные = ВидыРасчетовБольничные();
   ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Больничные", Больничные);
   
   ПособияПоУходу = Новый СписокЗначений;
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ДополнительныеВыходныеДниПоУходуЗаДетьмиИнвалидами);
   
   СписокНачисленийКолонка1 = Новый Соответствие;
   СписокНачисленийКолонка2 = Новый Соответствие;
   СписокНачисленийКолонка3 = Новый Соответствие;
   СписокНачисленийКолонка4 = Новый Соответствие;
   СписокУдержанийКолонка1  = Новый Соответствие;
   СписокУдержанийКолонка2  = Новый Соответствие;
   
   ЗаголовокНачисленийКолонка1 = "";
   ЗаголовокНачисленийКолонка2 = "";
   ЗаголовокНачисленийКолонка3 = "";
   ЗаголовокНачисленийКолонка4 = "";
   ЗаголовокУдержанийКолонка1  = "";
   ЗаголовокУдержанийКолонка2  = "";
   
   // Получим списки видов расчета
   Если ИмяМакета = "форма0504401" Тогда
      
      ОсмотренныеВР = Новый Соответствие;
      Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
         Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
            Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
               Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
                  Продолжить;
               Иначе
                  ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
               КонецЕсли;
               Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") И СтрокаНачисление.ЗачетОтработанногоВремени тогда
                  ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка1.Количество() = 0 тогда
                  СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка2.Количество() =0 тогда
                  СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени)) И СписокНачисленийКолонка3.Количество() =0 тогда
                  СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени) тогда
                  СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций")
                  или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата")
                  И СписокУдержанийКолонка1.Количество() = 0 тогда
                  СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                     ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  Иначе
                     ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
                  КонецЕсли;
               ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций")
                  или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                  СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                     ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  Иначе
                     ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
                  КонецЕсли;
               КонецЕсли;
            КонецЦикла;
         КонецЦикла;
      КонецЦикла;
      
      Если СписокУдержанийКолонка1.Количество() > 0 и СписокУдержанийКолонка2.Количество() > 0 тогда
         МежрасчетнаяВыплата = СписокУдержанийКолонка2["МежРасчетнаяВыплата"];
         Если МежрасчетнаяВыплата <> Неопределено тогда
            Для каждого КлючИЗначение Из СписокУдержанийКолонка1 Цикл
               УдержаниеКолонки1 = КлючИЗначение.Значение;
               Прервать;
            КонецЦикла;
            СписокУдержанийКолонка2.Вставить(УдержаниеКолонки1, УдержаниеКолонки1);
            СписокУдержанийКолонка1.Очистить();
            СписокУдержанийКолонка1.Вставить("МежРасчетнаяВыплата", "МежРасчетнаяВыплата");
            ЗаголовокУдержанийКолонка1 = "Межрасчетная выплата";
            ЗаголовокУдержанийКолонка2 = "";
            Если СписокУдержанийКолонка2.Количество() = 1 тогда
               Для каждого КлючИЗначение Из СписокУдержанийКолонка2 Цикл
                  ЗаголовокУдержанийКолонка2 = Строка(КлючИЗначение.Значение);
                  Прервать;
               КонецЦикла;
            КонецЕсли;
         КонецЕсли;
      КонецЕсли;
      
   Иначе
      
      ОсмотренныеВР = Новый Соответствие;
      Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
         Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
            Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
               Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
                  Продолжить;
               Иначе
                  ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
               КонецЕсли;
               Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               ТипВР = ТипЗнч(СтрокаНачисление.ВидРасчета);
               Если СтрокаНачисление.ЗачетОтработанногоВремени тогда
                  
                  ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  
               ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") Или ТипВР = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Мат. выгода" Тогда
                  
                  Если СписокНачисленийКолонка1.Количество() = 0 Тогда
                     СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  ИначеЕсли СписокНачисленийКолонка2.Количество() =0 Тогда
                     СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  ИначеЕсли СписокНачисленийКолонка3.Количество() =0 Тогда
                     СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  Иначе
                     СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  КонецЕсли;
                  
               ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Погашение займа" Тогда
                  
                  СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  
               ИначеЕсли СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" Тогда
                  
                  СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  
               КонецЕсли;
            КонецЦикла;
         КонецЦикла;
      КонецЦикла;

   КонецЕсли;
   
   НазваниеКолонок = Новый Структура("Колонка5, Колонка6, Колонка7, Колонка8, Колонка16, Колонка17");
   НазваниеКолонок.Колонка5  = ?(СписокНачисленийКолонка1.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка1));
   НазваниеКолонок.Колонка6  = ?(СписокНачисленийКолонка2.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка2));
   НазваниеКолонок.Колонка7  = ?(СписокНачисленийКолонка3.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка3));
   НазваниеКолонок.Колонка8  = ?(СписокНачисленийКолонка4.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка4));
   НазваниеКолонок.Колонка16 = ?(СписокУдержанийКолонка1.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка1));
   НазваниеКолонок.Колонка17 = ?(СписокУдержанийКолонка2.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка2));
   
   // подготовим документ к выводу
   ТабДокумент.АвтоМасштаб         = Истина;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВедомостьВКассу_РПВ";
   ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
   Макет = ПолучитьМакет(ИмяМакета);
   
   ОбластьМакетаШапкаДокумента   = Макет.ПолучитьОбласть("Шапка");
   ОбластьМакетаШапкаТаблицы   = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьМакетаПодвал         = Макет.ПолучитьОбласть("Подвал");
   ОбластьМакетаСтрока         = Макет.ПолучитьОбласть("Строка");
   ОбластьПодвалСтр            = Макет.ПолучитьОбласть("ИтогоПоСтранице");
   
   ОбластьМакетаШапкаТаблицы.Параметры.Заполнить(НазваниеКолонок);
   
   ВыводимыеОбласти = Новый Массив();
   ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбласти.Добавить(ОбластьПодвалСтр);
   
   ВыводимыеОбластиСПодвалом = Новый Массив();
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьПодвалСтр);
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаПодвал);
   
   ВыводимыеОбластиДляПроверки = Новый Массив();   
   ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаПодвал);
   
   ОбластьМакетаПодвал.Параметры.ИтогоКВыплате   = 0;
   
   ПервыйРаз = истина;
   
   Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
   
   Для каждого СтрокаОтчета из Выборка.Строки Цикл
      
      Если НЕ ПервыйРаз тогда
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      Иначе
         ПервыйРаз = ложь;
      КонецЕсли;

      ОбластьМакетаШапкаДокумента.Параметры.Заполнить(СтрокаОтчета);
      
      ПараметрыОрганизации = ОбщегоНазначенияЗК.ПолучитьЗначенияРеквизитов(СтрокаОтчета.Организация, "КодПоОКПО, НаименованиеПолное, ИНН, КПП");
      ПараметрыОрганизации.Вставить("Организация", ПараметрыОрганизации.НаименованиеПолное);
      ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ПараметрыОрганизации);
      
      ОбластьМакетаШапкаДокумента.Параметры.Период = СтрокаОтчета.ПериодРегистрации;
      ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = """_____"" _________________ 20____г.";
      ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = """_____"" _________________ 20____г.";
      ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = """_____"" _________________ 20____г.";
      
      Если ИспользуетсяПолеВедомость тогда
         
         СрокОплаты = "";
         
         Если СтрокаОтчета.ВедомостьДата <> Null тогда
            Запрос = Новый Запрос;
            
            Запрос.УстановитьПараметр("НачалоОплаты", СтрокаОтчета.ВедомостьДата);
            
            Запрос.Текст =
            "ВЫБРАТЬ
            |   МАКСИМУМ(РабочиеДни.РабочаяДата) КАК СрокОплаты
            |ИЗ
            |   (ВЫБРАТЬ ПЕРВЫЕ 2
            |      РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК РабочаяДата
            |   ИЗ
            |      РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            |   ГДЕ
            |      РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &НачалоОплаты
            |      И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
            |            ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
            |   
            |   УПОРЯДОЧИТЬ ПО
            |      РабочаяДата) КАК РабочиеДни";
            
            ВыборкаДней = Запрос.Выполнить().Выбрать();
            
            Если ВыборкаДней.Следующий() И ЗначениеЗаполнено(ВыборкаДней.СрокОплаты) Тогда
               СрокОплаты = МАКС(ВыборкаДней.СрокОплаты, СтрокаОтчета.ВедомостьДата + 2 * 24*60*60);
            Иначе   
               СрокОплаты = СтрокаОтчета.ВедомостьДата + 2 * 24*60*60;
            КонецЕсли;   
            
         Иначе
            СрокОплаты = ""
         КонецЕсли;
         
          ОбластьМакетаШапкаДокумента.Параметры.НомерДок   = СтрокаОтчета.ВедомостьНомер;
         Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование) Тогда
            ОбластьМакетаШапкаДокумента.Параметры.ПодразделениеОрганизации = СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование;
         КонецЕсли;
         
         Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьДата) тогда
            ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = Формат(СтрокаОтчета.ВедомостьДата, "ДФ='dd MMMM yyyy'");
            ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = Формат(СрокОплаты, "ДФ='dd MMMM yyyy'");
            Если СтрокаОтчета.ДокументПроведен тогда
               ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = Формат(СтрокаОтчета.ДатаВыплаты, "ДФ='dd MMMM yyyy'")+" г."
            КонецЕсли;
         КонецЕсли;
         
         ОбластьМакетаШапкаДокумента.Параметры.СуммаДок   = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(?(СтрокаОтчета.СуммаПоВедомостиИтого <> NULL, СтрокаОтчета.СуммаПоВедомостиИтого, 0), Валюта);
         
         Если ЗаполнятьКБК Тогда
            ОбластьМакетаШапкаДокумента.Параметры.КБК        = СтрокаОтчета.КБК;
            ОбластьМакетаШапкаДокумента.Параметры.Дт         = СокрЛП(Строка(СтрокаОтчета.КВД)) +"."+ СокрЛП(?(СтрокаОтчета.ДтСчет <> NULL, СтрокаОтчета.ДтСчет.Код, "")) +"."+ СокрЛП(?(СтрокаОтчета.ДтКОСГУ <> NULL, СтрокаОтчета.ДтКОСГУ.Код, ""));
         КонецЕсли;
         
         Если СтрокаОтчета.ВедомостьДокументОснованиеДата = '00010101' тогда
            ОбластьМакетаПодвал.Параметры.ДатаВедомости = """_____"" _________________ 20____г."
         Иначе
            ОбластьМакетаПодвал.Параметры.ДатаВедомости   = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'")+" г.";
            ОбластьМакетаШапкаДокумента.Параметры.ДатаДок = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'");
         КонецЕсли;
      
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомостиИтого), СтрокаОтчета.СуммаПоВедомостиИтого, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.Задепонировано), СтрокаОтчета.Задепонировано, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
         ОбластьМакетаПодвал.Параметры.НеВыдано         = ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомости), СтрокаОтчета.СуммаПоВедомости, 0) ;
      КонецЕсли;
      
      // Подвал документа.
      ОбластьМакетаПодвал.Параметры.Заполнить(СтрокаОтчета);
      ВедомостьИтого = 0;
      
      ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
      
      ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
      
      НомерПП = 1;
      ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();   
      ИтогоПоСтранице = 0;
      
      Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл
         
         ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
         ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
         Основные        = 0;
         Больничный      = 0;
         ДниБолезни      = 0;
         Пособия        = 0;
         Колонка5        = 0;
         Колонка6        = 0;
         Колонка7        = 0;
         Колонка8        = 0;
         ВсегоНачислено  = 0;
         ЗаработнаяПлата = 0;
         Колонка16       = 0;
         Колонка17       = 0;
         НДФЛ            = 0;
         СтраховойВзнос  = 0;
         ВсегоУдержано   = 0;
         
         Для каждого СтрокаНачисление из СтрокаФизЛица.Строки Цикл
            Если ОсновныеНачисления[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Основные = Основные + СтрокаНачисление.Результат;
            ИначеЕсли ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
               Пособия = Пособия + СтрокаНачисление.Результат;
            ИначеЕсли Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
               Больничный = Больничный + СтрокаНачисление.Результат;
               ДниБолезни = ДниБолезни + СтрокаНачисление.ДниБолезни;
            ИначеЕсли СписокНачисленийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка5 = Колонка5 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка6 = Колонка6 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка3[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка7 = Колонка7 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка4[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка8 = Колонка8 + СтрокаНачисление.Результат;
            ИначеЕсли СписокУдержанийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка16 = Колонка16 + СтрокаНачисление.Результат;
            ИначеЕсли СписокУдержанийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка17 = Колонка17 + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "НДФЛ" тогда
               НДФЛ = НДФЛ + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "СтраховойВзнос" тогда
               СтраховойВзнос = СтраховойВзнос + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "ЗаработнаяПлата" тогда
               ЗаработнаяПлата = ЗаработнаяПлата + СтрокаНачисление.Результат;
            КонецЕсли;
            ВсегоНачислено = Основные + Колонка5 + Колонка6 + Колонка7 + Колонка8 + Больничный + Пособия;
            ВсегоУдержано  = ЗаработнаяПлата + Колонка16 + Колонка17 + НДФЛ + СтраховойВзнос;
         КонецЦикла;
         
         ОбластьМакетаСтрока.Параметры.Основные       = Основные;
         ОбластьМакетаСтрока.Параметры.Больничный     = Больничный;
         Если ЗаполнятьКБК Тогда
            ОбластьМакетаСтрока.Параметры.ДниБолезни = ДниБолезни;
         КонецЕсли;
         ОбластьМакетаСтрока.Параметры.Пособия        = Пособия;
         ОбластьМакетаСтрока.Параметры.Колонка5       = Колонка5;
         ОбластьМакетаСтрока.Параметры.Колонка6       = Колонка6;
         ОбластьМакетаСтрока.Параметры.Колонка7       = Колонка7;
         ОбластьМакетаСтрока.Параметры.Колонка8       = Колонка8;
         ОбластьМакетаСтрока.Параметры.ВсегоНачислено = ВсегоНачислено;
         ОбластьМакетаСтрока.Параметры.Аванс          = ЗаработнаяПлата;
         ОбластьМакетаСтрока.Параметры.НДФЛ           = НДФЛ;
         ОбластьМакетаСтрока.Параметры.СтраховойВзнос = СтраховойВзнос;
         ОбластьМакетаСтрока.Параметры.Колонка16      = Колонка16;
         ОбластьМакетаСтрока.Параметры.Колонка17         = Колонка17;
         ОбластьМакетаСтрока.Параметры.ВсегоУдержано     = ВсегоУдержано;
         
         ОбластьМакетаСтрока.Параметры.СуммаПоВедомости  = ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
         Если НЕ ИспользуетсяПолеВедомость тогда
            ОбластьМакетаСтрока.Параметры.ЗаписьОДепонировании = "";
         КонецЕсли;

         ВедомостьИтого = ВедомостьИтого + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
         
         ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
         Если Не ВывестиПодвалЛиста и НомерПП = ВсегоСтрокДокумента Тогда
            //все строки отчета перебрали, они все еще умещаются на странице
            ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиСПодвалом);
         КонецЕсли;
         
         Если ВывестиПодвалЛиста тогда
            ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
            ТабДокумент.Вывести(ОбластьПодвалСтр);
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
            ИтогоПоСтранице = 0;
         КонецЕсли;
         
         ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

         ТабДокумент.Вывести(ОбластьМакетаСтрока);
         НомерПП = НомерПП + 1;
         
      КонецЦикла;
      
      Если ИспользуетсяПолеВедомость тогда
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ОбластьМакетаПодвал.Параметры.ИтогоКВыплате;
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(СтрокаОтчета.Ведомость <> Null И СтрокаОтчета.Ведомость.Проведен, ОбластьМакетаПодвал.Параметры.СуммаПоВедомости, 0);
      Иначе
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ВедомостьИтого;
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = 0;
         ОбластьМакетаПодвал.Параметры.НеВыдано         = 0;
         ОбластьМакетаПодвал.Параметры.Задепонировано   = 0;
      КонецЕсли;
      
      Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
         ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
      КонецЦикла;
      ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
      Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиДляПроверки, Ложь) Цикл
         ТабДокумент.Вывести(ОбластьМакетаСтрока);
      КонецЦикла;
      
      ТабДокумент.Вывести(ОбластьМакетаПодвал);
      
   КонецЦикла;
   
КонецФункции // ПечатьРПВ()
Добавлено: 15 фев 2017, 19:34


Цитата: pavl_vs от 15 фев 2017, 13:17
Vladimir369, похоже, что Вы заполнение параметров для всех колонок записали единым образом, взяв за основу расчет параметра ИтогоКВыплате.
Для более предметного обсуждения покажите код заполнения области ИтогоПоСтранице и по крайней мере область макета ИтогоПоСтранице.



ПечатьРПВ(ТабДокумент, Выборка, ИспользуетсяПолеВедомость, ИмяМакета)
   
   ЗаполнятьКБК = ИмяМакета = "форма0504401";
   
   ОсновныеНачисления = Новый Соответствие;
      
   Больничные = ВидыРасчетовБольничные();
   ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Больничные", Больничные);
   
   ПособияПоУходу = Новый СписокЗначений;
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
   ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ДополнительныеВыходныеДниПоУходуЗаДетьмиИнвалидами);
   
   СписокНачисленийКолонка1 = Новый Соответствие;
   СписокНачисленийКолонка2 = Новый Соответствие;
   СписокНачисленийКолонка3 = Новый Соответствие;
   СписокНачисленийКолонка4 = Новый Соответствие;
   СписокУдержанийКолонка1  = Новый Соответствие;
   СписокУдержанийКолонка2  = Новый Соответствие;
   
   ЗаголовокНачисленийКолонка1 = "";
   ЗаголовокНачисленийКолонка2 = "";
   ЗаголовокНачисленийКолонка3 = "";
   ЗаголовокНачисленийКолонка4 = "";
   ЗаголовокУдержанийКолонка1  = "";
   ЗаголовокУдержанийКолонка2  = "";
   
   // Получим списки видов расчета
   Если ИмяМакета = "форма0504401" Тогда
      
      ОсмотренныеВР = Новый Соответствие;
      Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
         Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
            Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
               Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
                  Продолжить;
               Иначе
                  ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
               КонецЕсли;
               Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") И СтрокаНачисление.ЗачетОтработанногоВремени тогда
                  ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка1.Количество() = 0 тогда
                  СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка2.Количество() =0 тогда
                  СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени)) И СписокНачисленийКолонка3.Количество() =0 тогда
                  СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций")
                  ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
                  ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
                  И НЕ СтрокаНачисление.ЗачетОтработанногоВремени) тогда
                  СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
               ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций")
                  или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата")
                  И СписокУдержанийКолонка1.Количество() = 0 тогда
                  СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                     ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  Иначе
                     ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
                  КонецЕсли;
               ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций")
                  или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                  СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
                     ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  Иначе
                     ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
                  КонецЕсли;
               КонецЕсли;
            КонецЦикла;
         КонецЦикла;
      КонецЦикла;
      
      Если СписокУдержанийКолонка1.Количество() > 0 и СписокУдержанийКолонка2.Количество() > 0 тогда
         МежрасчетнаяВыплата = СписокУдержанийКолонка2["МежРасчетнаяВыплата"];
         Если МежрасчетнаяВыплата <> Неопределено тогда
            Для каждого КлючИЗначение Из СписокУдержанийКолонка1 Цикл
               УдержаниеКолонки1 = КлючИЗначение.Значение;
               Прервать;
            КонецЦикла;
            СписокУдержанийКолонка2.Вставить(УдержаниеКолонки1, УдержаниеКолонки1);
            СписокУдержанийКолонка1.Очистить();
            СписокУдержанийКолонка1.Вставить("МежРасчетнаяВыплата", "МежРасчетнаяВыплата");
            ЗаголовокУдержанийКолонка1 = "Межрасчетная выплата";
            ЗаголовокУдержанийКолонка2 = "";
            Если СписокУдержанийКолонка2.Количество() = 1 тогда
               Для каждого КлючИЗначение Из СписокУдержанийКолонка2 Цикл
                  ЗаголовокУдержанийКолонка2 = Строка(КлючИЗначение.Значение);
                  Прервать;
               КонецЦикла;
            КонецЕсли;
         КонецЕсли;
      КонецЕсли;
      
   Иначе
      
      ОсмотренныеВР = Новый Соответствие;
      Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
         Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
            Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
               Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
                  Продолжить;
               Иначе
                  ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
               КонецЕсли;
               Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
                  Продолжить;
               КонецЕсли;
               ТипВР = ТипЗнч(СтрокаНачисление.ВидРасчета);
               Если СтрокаНачисление.ЗачетОтработанногоВремени тогда
                  
                  ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  
               ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") Или ТипВР = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Мат. выгода" Тогда
                  
                  Если СписокНачисленийКолонка1.Количество() = 0 Тогда
                     СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  ИначеЕсли СписокНачисленийКолонка2.Количество() =0 Тогда
                     СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  ИначеЕсли СписокНачисленийКолонка3.Количество() =0 Тогда
                     СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  Иначе
                     СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                     ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  КонецЕсли;
                  
               ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Погашение займа" Тогда
                  
                  СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
                  
               ИначеЕсли СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" Тогда
                  
                  СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
                  ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
                  
               КонецЕсли;
            КонецЦикла;
         КонецЦикла;
      КонецЦикла;

   КонецЕсли;
   
   НазваниеКолонок = Новый Структура("Колонка5, Колонка6, Колонка7, Колонка8, Колонка16, Колонка17");
   НазваниеКолонок.Колонка5  = ?(СписокНачисленийКолонка1.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка1));
   НазваниеКолонок.Колонка6  = ?(СписокНачисленийКолонка2.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка2));
   НазваниеКолонок.Колонка7  = ?(СписокНачисленийКолонка3.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка3));
   НазваниеКолонок.Колонка8  = ?(СписокНачисленийКолонка4.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка4));
   НазваниеКолонок.Колонка16 = ?(СписокУдержанийКолонка1.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка1));
   НазваниеКолонок.Колонка17 = ?(СписокУдержанийКолонка2.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка2));
   
   // подготовим документ к выводу
   ТабДокумент.АвтоМасштаб         = Истина;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВедомостьВКассу_РПВ";
   ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
   Макет = ПолучитьМакет(ИмяМакета);
   
   ОбластьМакетаШапкаДокумента   = Макет.ПолучитьОбласть("Шапка");
   ОбластьМакетаШапкаТаблицы   = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьМакетаПодвал         = Макет.ПолучитьОбласть("Подвал");
   ОбластьМакетаСтрока         = Макет.ПолучитьОбласть("Строка");
   ОбластьПодвалСтр            = Макет.ПолучитьОбласть("ИтогоПоСтранице");
   
   ОбластьМакетаШапкаТаблицы.Параметры.Заполнить(НазваниеКолонок);
   
   ВыводимыеОбласти = Новый Массив();
   ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбласти.Добавить(ОбластьПодвалСтр);
   
   ВыводимыеОбластиСПодвалом = Новый Массив();
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьПодвалСтр);
   ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаПодвал);
   
   ВыводимыеОбластиДляПроверки = Новый Массив();   
   ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаСтрока);
   ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаПодвал);
   
   ОбластьМакетаПодвал.Параметры.ИтогоКВыплате   = 0;
   
   ПервыйРаз = истина;
   
   Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
   
   Для каждого СтрокаОтчета из Выборка.Строки Цикл
      
      Если НЕ ПервыйРаз тогда
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      Иначе
         ПервыйРаз = ложь;
      КонецЕсли;

      ОбластьМакетаШапкаДокумента.Параметры.Заполнить(СтрокаОтчета);
      
      ПараметрыОрганизации = ОбщегоНазначенияЗК.ПолучитьЗначенияРеквизитов(СтрокаОтчета.Организация, "КодПоОКПО, НаименованиеПолное, ИНН, КПП");
      ПараметрыОрганизации.Вставить("Организация", ПараметрыОрганизации.НаименованиеПолное);
      ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ПараметрыОрганизации);
      
      ОбластьМакетаШапкаДокумента.Параметры.Период = СтрокаОтчета.ПериодРегистрации;
      ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = """_____"" _________________ 20____г.";
      ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = """_____"" _________________ 20____г.";
      ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = """_____"" _________________ 20____г.";
      
      Если ИспользуетсяПолеВедомость тогда
         
         СрокОплаты = "";
         
         Если СтрокаОтчета.ВедомостьДата <> Null тогда
            Запрос = Новый Запрос;
            
            Запрос.УстановитьПараметр("НачалоОплаты", СтрокаОтчета.ВедомостьДата);
            
            Запрос.Текст =
            "ВЫБРАТЬ
            |   МАКСИМУМ(РабочиеДни.РабочаяДата) КАК СрокОплаты
            |ИЗ
            |   (ВЫБРАТЬ ПЕРВЫЕ 2
            |      РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК РабочаяДата
            |   ИЗ
            |      РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            |   ГДЕ
            |      РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &НачалоОплаты
            |      И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
            |            ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
            |   
            |   УПОРЯДОЧИТЬ ПО
            |      РабочаяДата) КАК РабочиеДни";
            
            ВыборкаДней = Запрос.Выполнить().Выбрать();
            
            Если ВыборкаДней.Следующий() И ЗначениеЗаполнено(ВыборкаДней.СрокОплаты) Тогда
               СрокОплаты = МАКС(ВыборкаДней.СрокОплаты, СтрокаОтчета.ВедомостьДата + 2 * 24*60*60);
            Иначе   
               СрокОплаты = СтрокаОтчета.ВедомостьДата + 2 * 24*60*60;
            КонецЕсли;   
            
         Иначе
            СрокОплаты = ""
         КонецЕсли;
         
          ОбластьМакетаШапкаДокумента.Параметры.НомерДок   = СтрокаОтчета.ВедомостьНомер;
         Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование) Тогда
            ОбластьМакетаШапкаДокумента.Параметры.ПодразделениеОрганизации = СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование;
         КонецЕсли;
         
         Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьДата) тогда
            ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = Формат(СтрокаОтчета.ВедомостьДата, "ДФ='dd MMMM yyyy'");
            ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = Формат(СрокОплаты, "ДФ='dd MMMM yyyy'");
            Если СтрокаОтчета.ДокументПроведен тогда
               ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = Формат(СтрокаОтчета.ДатаВыплаты, "ДФ='dd MMMM yyyy'")+" г."
            КонецЕсли;
         КонецЕсли;
         
         ОбластьМакетаШапкаДокумента.Параметры.СуммаДок   = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(?(СтрокаОтчета.СуммаПоВедомостиИтого <> NULL, СтрокаОтчета.СуммаПоВедомостиИтого, 0), Валюта);
         
         Если ЗаполнятьКБК Тогда
            ОбластьМакетаШапкаДокумента.Параметры.КБК        = СтрокаОтчета.КБК;
            ОбластьМакетаШапкаДокумента.Параметры.Дт         = СокрЛП(Строка(СтрокаОтчета.КВД)) +"."+ СокрЛП(?(СтрокаОтчета.ДтСчет <> NULL, СтрокаОтчета.ДтСчет.Код, "")) +"."+ СокрЛП(?(СтрокаОтчета.ДтКОСГУ <> NULL, СтрокаОтчета.ДтКОСГУ.Код, ""));
         КонецЕсли;
         
         Если СтрокаОтчета.ВедомостьДокументОснованиеДата = '00010101' тогда
            ОбластьМакетаПодвал.Параметры.ДатаВедомости = """_____"" _________________ 20____г."
         Иначе
            ОбластьМакетаПодвал.Параметры.ДатаВедомости   = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'")+" г.";
            ОбластьМакетаШапкаДокумента.Параметры.ДатаДок = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'");
         КонецЕсли;
      
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомостиИтого), СтрокаОтчета.СуммаПоВедомостиИтого, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.Задепонировано), СтрокаОтчета.Задепонировано, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
         ОбластьМакетаПодвал.Параметры.НеВыдано         = ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомости), СтрокаОтчета.СуммаПоВедомости, 0) ;
      КонецЕсли;
      
      // Подвал документа.
      ОбластьМакетаПодвал.Параметры.Заполнить(СтрокаОтчета);
      ВедомостьИтого = 0;
      
      ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
      
      ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
      
      НомерПП = 1;
      ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();   
      ИтогоПоСтранице = 0;
      
      Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл
         
         ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
         ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
         Основные        = 0;
         Больничный      = 0;
         ДниБолезни      = 0;
         Пособия        = 0;
         Колонка5        = 0;
         Колонка6        = 0;
         Колонка7        = 0;
         Колонка8        = 0;
         ВсегоНачислено  = 0;
         ЗаработнаяПлата = 0;
         Колонка16       = 0;
         Колонка17       = 0;
         НДФЛ            = 0;
         СтраховойВзнос  = 0;
         ВсегоУдержано   = 0;
         
         Для каждого СтрокаНачисление из СтрокаФизЛица.Строки Цикл
            Если ОсновныеНачисления[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Основные = Основные + СтрокаНачисление.Результат;
            ИначеЕсли ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
               Пособия = Пособия + СтрокаНачисление.Результат;
            ИначеЕсли Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
               Больничный = Больничный + СтрокаНачисление.Результат;
               ДниБолезни = ДниБолезни + СтрокаНачисление.ДниБолезни;
            ИначеЕсли СписокНачисленийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка5 = Колонка5 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка6 = Колонка6 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка3[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка7 = Колонка7 + СтрокаНачисление.Результат;
            ИначеЕсли СписокНачисленийКолонка4[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка8 = Колонка8 + СтрокаНачисление.Результат;
            ИначеЕсли СписокУдержанийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка16 = Колонка16 + СтрокаНачисление.Результат;
            ИначеЕсли СписокУдержанийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
               Колонка17 = Колонка17 + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "НДФЛ" тогда
               НДФЛ = НДФЛ + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "СтраховойВзнос" тогда
               СтраховойВзнос = СтраховойВзнос + СтрокаНачисление.Результат;
            ИначеЕсли СтрокаНачисление.ВидРасчета = "ЗаработнаяПлата" тогда
               ЗаработнаяПлата = ЗаработнаяПлата + СтрокаНачисление.Результат;
            КонецЕсли;
            ВсегоНачислено = Основные + Колонка5 + Колонка6 + Колонка7 + Колонка8 + Больничный + Пособия;
            ВсегоУдержано  = ЗаработнаяПлата + Колонка16 + Колонка17 + НДФЛ + СтраховойВзнос;
         КонецЦикла;
         
         ОбластьМакетаСтрока.Параметры.Основные       = Основные;
         ОбластьМакетаСтрока.Параметры.Больничный     = Больничный;
         Если ЗаполнятьКБК Тогда
            ОбластьМакетаСтрока.Параметры.ДниБолезни = ДниБолезни;
         КонецЕсли;
         ОбластьМакетаСтрока.Параметры.Пособия        = Пособия;
         ОбластьМакетаСтрока.Параметры.Колонка5       = Колонка5;
         ОбластьМакетаСтрока.Параметры.Колонка6       = Колонка6;
         ОбластьМакетаСтрока.Параметры.Колонка7       = Колонка7;
         ОбластьМакетаСтрока.Параметры.Колонка8       = Колонка8;
         ОбластьМакетаСтрока.Параметры.ВсегоНачислено = ВсегоНачислено;
         ОбластьМакетаСтрока.Параметры.Аванс          = ЗаработнаяПлата;
         ОбластьМакетаСтрока.Параметры.НДФЛ           = НДФЛ;
         ОбластьМакетаСтрока.Параметры.СтраховойВзнос = СтраховойВзнос;
         ОбластьМакетаСтрока.Параметры.Колонка16      = Колонка16;
         ОбластьМакетаСтрока.Параметры.Колонка17         = Колонка17;
         ОбластьМакетаСтрока.Параметры.ВсегоУдержано     = ВсегоУдержано;
         
         ОбластьМакетаСтрока.Параметры.СуммаПоВедомости  = ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
         Если НЕ ИспользуетсяПолеВедомость тогда
            ОбластьМакетаСтрока.Параметры.ЗаписьОДепонировании = "";
         КонецЕсли;

         ВедомостьИтого = ВедомостьИтого + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
         
         ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
         Если Не ВывестиПодвалЛиста и НомерПП = ВсегоСтрокДокумента Тогда
            //все строки отчета перебрали, они все еще умещаются на странице
            ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиСПодвалом);
         КонецЕсли;
         
         Если ВывестиПодвалЛиста тогда
            ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
            ТабДокумент.Вывести(ОбластьПодвалСтр);
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
            ИтогоПоСтранице = 0;
         КонецЕсли;
         
         ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

         ТабДокумент.Вывести(ОбластьМакетаСтрока);
         НомерПП = НомерПП + 1;
         
      КонецЦикла;
      
      Если ИспользуетсяПолеВедомость тогда
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ОбластьМакетаПодвал.Параметры.ИтогоКВыплате;
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(СтрокаОтчета.Ведомость <> Null И СтрокаОтчета.Ведомость.Проведен, ОбластьМакетаПодвал.Параметры.СуммаПоВедомости, 0);
      Иначе
         ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ВедомостьИтого;
         ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = 0;
         ОбластьМакетаПодвал.Параметры.НеВыдано         = 0;
         ОбластьМакетаПодвал.Параметры.Задепонировано   = 0;
      КонецЕсли;
      
      Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
         ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
      КонецЦикла;
      ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
      Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиДляПроверки, Ложь) Цикл
         ТабДокумент.Вывести(ОбластьМакетаСтрока);
      КонецЦикла;
      
      ТабДокумент.Вывести(ОбластьМакетаПодвал);
      
   КонецЦикла;
   
КонецФункции // ПечатьРПВ()

pavl_vs

Vladimir369, Вы издеваетесь?
Вместо макета снова фрагмент сформированного отчета, а вместо ваших доработок кода - исходник целиком, да ещё в двух экземплярах и то и другое.

Делаю ещё одну попытку помочь Вам.
Заполняете конкретными параметрами ячейки итоговых строк как в Подвале, так и в области ИтогоПоСтранице (так, как это сделано, например, для области Строка).
Теперь этим параметрам нужно присвоить значения - они накапливаются в цикле перебора по сотрудникам, который начинается на строке 457 и заканчивается на строке 556, если у нас идентичные модули:
НомерПП = 1;
ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();
ИтогоПоСтранице = 0;

Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
Основные        = 0;
Больничный      = 0;
ДниБолезни      = 0;
                //..........................................................................
                //...... просто показываю начало и конец цикла .............................
                //..........................................................................
Если ВывестиПодвалЛиста тогда
ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
ТабДокумент.Вывести(ОбластьПодвалСтр);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
ИтогоПоСтранице = 0;
КонецЕсли;

ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

ТабДокумент.Вывести(ОбластьМакетаСтрока);
НомерПП = НомерПП + 1;

КонецЦикла;

На входе в цикл следует обнулить все параметры итоговой строки (в исходнике обнуляется один - ИтогоПоСтранице).

Дерзайте.

Vladimir369

Цитата: pavl_vs от 16 фев 2017, 00:38
Vladimir369, Вы издеваетесь?
Вместо макета снова фрагмент сформированного отчета, а вместо ваших доработок кода - исходник целиком, да ещё в двух экземплярах и то и другое.

Делаю ещё одну попытку помочь Вам.
Заполняете конкретными параметрами ячейки итоговых строк как в Подвале, так и в области ИтогоПоСтранице (так, как это сделано, например, для области Строка).
Теперь этим параметрам нужно присвоить значения - они накапливаются в цикле перебора по сотрудникам, который начинается на строке 457 и заканчивается на строке 556, если у нас идентичные модули:
НомерПП = 1;
ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();
ИтогоПоСтранице = 0;

Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
Основные        = 0;
Больничный      = 0;
ДниБолезни      = 0;
                //..........................................................................
                //...... просто показываю начало и конец цикла .............................
                //..........................................................................
Если ВывестиПодвалЛиста тогда
ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
ТабДокумент.Вывести(ОбластьПодвалСтр);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
ИтогоПоСтранице = 0;
КонецЕсли;

ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

ТабДокумент.Вывести(ОбластьМакетаСтрока);
НомерПП = НомерПП + 1;

КонецЦикла;

На входе в цикл следует обнулить все параметры итоговой строки (в исходнике обнуляется один - ИтогоПоСтранице).

Дерзайте.

Испробывал все, ничего не получается

pavl_vs

Vladimir369, Вы по-прежнему не даете возможности оценить всё ли испробовали, или нет.

Для примера я добавил параметры, описыващие итоги по колонкам 4, 5, 12 и 18.
1. Изменения в макете Вы видите на картинке:
- кроме параметров в Подвал'е добавлена строка 21, чтобы строка Итогов не сливалась с последующим ячейками типа "не выдано";
- аналогичные параметры добавлены в области ИтогоПоСтранице/
2. Введены строки в процедуре ПечатьРПВ, которые имеют мои метки (//pvs) начала и окончания.
НомерПП = 1;
ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();
ИтогоПоСтранице = 0;
//pvs вставка нового блока ==============
//связанного с изменениями в макете
//
Итого4     = 0;
Итого5     = 0;
Итого12    = 0;
Итого18    = 0;
ИтогоСтр4  = 0;
ИтогоСтр5  = 0;
ИтогоСтр12 = 0;
ИтогоСтр18 = 0;
//
//pvs конец вставки =====================

Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
Основные        = 0;
Больничный      = 0;
ДниБолезни      = 0;
Пособия     = 0;
Колонка5        = 0;
Колонка6        = 0;
Колонка7        = 0;
Колонка8        = 0;
ВсегоНачислено  = 0;
ЗаработнаяПлата = 0;
Колонка16       = 0;
Колонка17       = 0;
НДФЛ            = 0;
СтраховойВзнос  = 0;
ВсегоУдержано   = 0;

Для каждого СтрокаНачисление из СтрокаФизЛица.Строки Цикл
Если ОсновныеНачисления[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Основные = Основные + СтрокаНачисление.Результат;
ИначеЕсли ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
Пособия = Пособия + СтрокаНачисление.Результат;
ИначеЕсли Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
Больничный = Больничный + СтрокаНачисление.Результат;
ДниБолезни = ДниБолезни + СтрокаНачисление.ДниБолезни;
ИначеЕсли СписокНачисленийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка5 = Колонка5 + СтрокаНачисление.Результат;
ИначеЕсли СписокНачисленийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка6 = Колонка6 + СтрокаНачисление.Результат;
ИначеЕсли СписокНачисленийКолонка3[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка7 = Колонка7 + СтрокаНачисление.Результат;
ИначеЕсли СписокНачисленийКолонка4[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка8 = Колонка8 + СтрокаНачисление.Результат;
ИначеЕсли СписокУдержанийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка16 = Колонка16 + СтрокаНачисление.Результат;
ИначеЕсли СписокУдержанийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
Колонка17 = Колонка17 + СтрокаНачисление.Результат;
ИначеЕсли СтрокаНачисление.ВидРасчета = "НДФЛ" тогда
НДФЛ = НДФЛ + СтрокаНачисление.Результат;
ИначеЕсли СтрокаНачисление.ВидРасчета = "СтраховойВзнос" тогда
СтраховойВзнос = СтраховойВзнос + СтрокаНачисление.Результат;
ИначеЕсли СтрокаНачисление.ВидРасчета = "ЗаработнаяПлата" тогда
ЗаработнаяПлата = ЗаработнаяПлата + СтрокаНачисление.Результат;
КонецЕсли;
ВсегоНачислено = Основные + Колонка5 + Колонка6 + Колонка7 + Колонка8 + Больничный + Пособия;
ВсегоУдержано  = ЗаработнаяПлата + Колонка16 + Колонка17 + НДФЛ + СтраховойВзнос;
КонецЦикла;
//pvs вставка нового блока ==============
//
Итого4 = Итого4     + Основные;
Итого5 = Итого5     + Колонка5;
Итого12 = Итого12    + ВсегоНачислено;
Итого18 = Итого18    + ВсегоУдержано;
ИтогоСтр4 = ИтогоСтр4  + Основные;
ИтогоСтр5 = ИтогоСтр5  + Колонка5;
ИтогоСтр12 = ИтогоСтр12 + ВсегоНачислено;
ИтогоСтр18 = ИтогоСтр18 + ВсегоУдержано;
//
//pvs конец вставки =====================
ОбластьМакетаСтрока.Параметры.Основные       = Основные;
ОбластьМакетаСтрока.Параметры.Больничный     = Больничный;
Если ЗаполнятьКБК Тогда
ОбластьМакетаСтрока.Параметры.ДниБолезни = ДниБолезни;
КонецЕсли;
ОбластьМакетаСтрока.Параметры.Пособия = Пособия;
ОбластьМакетаСтрока.Параметры.Колонка5       = Колонка5;
ОбластьМакетаСтрока.Параметры.Колонка6       = Колонка6;
ОбластьМакетаСтрока.Параметры.Колонка7       = Колонка7;
ОбластьМакетаСтрока.Параметры.Колонка8       = Колонка8;
ОбластьМакетаСтрока.Параметры.ВсегоНачислено = ВсегоНачислено;
ОбластьМакетаСтрока.Параметры.Аванс          = ЗаработнаяПлата;
ОбластьМакетаСтрока.Параметры.НДФЛ           = НДФЛ;
ОбластьМакетаСтрока.Параметры.СтраховойВзнос = СтраховойВзнос;
ОбластьМакетаСтрока.Параметры.Колонка16      = Колонка16;
ОбластьМакетаСтрока.Параметры.Колонка17         = Колонка17;
ОбластьМакетаСтрока.Параметры.ВсегоУдержано     = ВсегоУдержано;

ОбластьМакетаСтрока.Параметры.СуммаПоВедомости  = ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
Если НЕ ИспользуетсяПолеВедомость тогда
ОбластьМакетаСтрока.Параметры.ЗаписьОДепонировании = "";
КонецЕсли;

ВедомостьИтого = ВедомостьИтого + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
Если Не ВывестиПодвалЛиста и НомерПП = ВсегоСтрокДокумента Тогда
//все строки отчета перебрали, они все еще умещаются на странице
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиСПодвалом);
КонецЕсли;

Если ВывестиПодвалЛиста тогда
ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
//pvs вставка нового блока ==============
//
ОбластьПодвалСтр.Параметры.ИтогоСтр4 = ИтогоСтр4 - Основные;
ОбластьПодвалСтр.Параметры.ИтогоСтр5 = ИтогоСтр5 - Колонка5;
ОбластьПодвалСтр.Параметры.ИтогоСтр12 = ИтогоСтр12 - ВсегоНачислено;
ОбластьПодвалСтр.Параметры.ИтогоСтр18 = ИтогоСтр18 - ВсегоУдержано;
//
//pvs конец вставки ======================
ТабДокумент.Вывести(ОбластьПодвалСтр);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
ИтогоПоСтранице = 0;
//pvs вставка нового блока ==============
//
ИтогоСтр4  = Основные;
ИтогоСтр5  = Колонка5;
ИтогоСтр12 = ВсегоНачислено;
ИтогоСтр18 = ВсегоУдержано;
//
//pvs конец вставки ======================
КонецЕсли;

ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

ТабДокумент.Вывести(ОбластьМакетаСтрока);
НомерПП = НомерПП + 1;

КонецЦикла;

Если ИспользуетсяПолеВедомость тогда
ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ОбластьМакетаПодвал.Параметры.ИтогоКВыплате;
ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(СтрокаОтчета.Ведомость <> Null И СтрокаОтчета.Ведомость.Проведен, ОбластьМакетаПодвал.Параметры.СуммаПоВедомости, 0);
Иначе
ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ВедомостьИтого;
ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = 0;
ОбластьМакетаПодвал.Параметры.НеВыдано         = 0;
ОбластьМакетаПодвал.Параметры.Задепонировано   = 0;
КонецЕсли;

//pvs вставка нового блока ==============
//
ОбластьМакетаПодвал.Параметры.Итого4  = Итого4;
ОбластьМакетаПодвал.Параметры.Итого5  = Итого5;
ОбластьМакетаПодвал.Параметры.Итого12 = Итого12;
ОбластьМакетаПодвал.Параметры.Итого18 = Итого18;
//
//pvs конец вставки ======================

Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиДляПроверки, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

ТабДокумент.Вывести(ОбластьМакетаПодвал);

КонецЦикла;

КонецФункции // ПечатьРПВ()

Если внесены изменения в макете, приведенный фрагмент код просто скопированный "поверх" имеющегося должен сразу работать.
Итоги в остальных колонках сделаете сами по аналогии.

Успеха.

Добавлено: 16 фев 2017, 18:31


Vladimir369, некоторые правки, замечание и пожелание.
Текст в моем последнем посте
ЦитироватьЕсли внесены изменения в макете, приведенный фрагмент код просто скопированный "поверх" имеющегося должен сразу работать.
Следует читать так
ЦитироватьЕсли внесены изменения в макете, приведенный фрагмент кода, просто скопированный "поверх" соответствующего исходного, должен сразу работать.

Замечание. Из предлагаемых макетов был выбран "форма0504401"; Вы можете переделать все, если нужно.

Пожелание. Представляйте программные коды в формате 1С - для этого служат теги под кнопкой с пиктограммой решетки #.

Добавлено: 16 фев 2017, 18:47



Теги: итоги 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск