PDA

Просмотр полной версии : Как посчитать сумму в колонках ТЧ отчета в расчетно платежной ведомости?



vladimir369
16.02.2017, 12:44
Народ, помогите пожалуйста, нужно чтобы сумма считалась в каждой колонке документа. А она считается только по колонке ИтогоКВыплате.

Заранее спасибо.






// Подвал документа.
ОбластьМакетаПодвал.Парам� �тры.Заполнить(СтрокаОтчет� �);
ВедомостьИтого = 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,"");
КонецЦикла;
ОбластьМакетаСтрока.Парам� �тры.Физлицо = " " + Символы.ПС + " ";
Пока ФормированиеПечатныхФорм.� �роверитьВыводТабличногоД� �кумента(ТабДокумент, ВыводимыеОбластиДляПровер ки, Ложь) Цикл
ТабДокумент.Вывести(Област ьМакетаСтрока);
КонецЦикла;

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

КонецЦикла;

avm3110
16.02.2017, 13:01
Думаю не стоит плодить темы.
"В двух словах" к сожалению это не объяснишь, обратитесь к 1Снику и он это сделает за 2 минуты

Ну по тексту, нужно сделать
Завести в соответствующие места макета соответствующие параметры, а в тексте процедуры получить значение этих параметров (или из запроса или же "тупым сложением в цикле").

vladimir369
16.02.2017, 13:11
Хоть намекните, а дальше я справлюсь. Где именно в макете надо работать и в какой процедуре,

Заранее спасибо

avm3110
16.02.2017, 15:08
Макет - тот который вы видите в отчете (ветка макеты)
В какой процедуре - В той процедуре, которую вы сюда запостили

vladimir369
16.02.2017, 15:31
А можете подсказать, с чего мне начать?

alexandr_ll
17.02.2017, 06:41
А можете подсказать, с чего мне начать?

Начните с самого простого отчета, в котором бы выводился итог по колонкам, потом уже переходите к более сложному, как у вас.
Я понимаю, что вы погружены в размышления по поводу своего отчета, но все же следует указывать платформу, конфигурацию и релиз.

avm3110
17.02.2017, 08:21
А можете подсказать, с чего мне начать?

Повторюсь - у вас там довольно сложно и чтобы рассказывать "что и как" нужно быть рядом - дистанционно явно не получится.