Добавление строчки по значению субконто счетов ДобавитьСтрочку()

Процедура ДобавитьСтрочку(Счет,Дт = Истина,Субконто, НомерСтроки,Ячейка,СуммаП) используется в регламентированном отчете для вывода строки по значению субконто, то есть например, для строки сумм по счету 51, вывод значений сумм по банкам.

Счет в данном случае равен 51. Значение Дт по умолчанию «Истина».

Субконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета.

НомерСтроки указывает на номер строки в табличном поле документа, например 15.

Ячейка указывает на название строки в табличном поле документа, например «П0103».

СуммаП – это сумма по счету 51.

В самом начале процедуры выполняется запрос на вычисления сумм оборотов по субконто и запускается цикл:

                Запрос = Новый Запрос;

                Запрос.Текст = "ВЫБРАТЬ

                |               ХозрасчетныйОбороты.СуммаОборотДт,

                |   ХозрасчетныйОбороты.Субконто1,

                |               ХозрасчетныйОбороты.СуммаОборотКт

                |ИЗ

                |               РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, &Субконто, , , ) КАК ХозрасчетныйОбороты";

                Запрос.УстановитьПараметр("НачПериода", НачалоМесяца(мДатаНачалаПериодаОтчета));

                Запрос.УстановитьПараметр("КонПериода", КонецМесяца(мДатаКонцаПериодаОтчета));

                Запрос.УстановитьПараметр("Счет", Счет);

                Запрос.УстановитьПараметр("Субконто", Субконто);

                ОборотДт = 0;

                ОборотКт = 0;

                числ = 0;

                РезультатЗапроса = Запрос.Выполнить().Выбрать();

                Пока РезультатЗапроса.Следующий() Цикл

В цикле проверяется условие на размер суммы данного банка в данном счете не менее 5%. После чего идет подсчет количество банков и использование их сумм.

Если ((СуммаП * 5/100) <РезультатЗапроса.СуммаОборотДт) ИЛИ ((СуммаП * 5/100) <РезультатЗапроса.СуммаОборотКт) Тогда

                числ = числ + 1;

                ОборотДт = РезультатЗапроса.СуммаОборотДт;

                ОборотКт = РезультатЗапроса.СуммаОборотКт;

                ТабДок =  ЭлементыФормы.ПолеТабличногоДокумента1;

Если расчет выполнен в первый раз, то вставить новую строчку ниже строки с суммой счета 51.

                Если первый <> 1 Тогда

                               ТабДок.ВставитьОбласть(ТабДок.Область("R"+Строка(НомерСтроки+к)), ТабДок.Область("R"+Строка(НомерСтроки+1+к)),ТипСмещенияТабличногоДокумента.ПоГоризонтали);

                КонецЕсли;        

Ввод значений данного субконто в этой новой строчке.                                           

                ТабДок.Область("R"+Строка(НомерСтроки+к+числ)+"C1").Текст =  РезультатЗапроса.Субконто1;

                ТабДок.Область("R"+Строка(НомерСтроки+к+числ)+"C2").Текст =  "";

                ТабДок.Область("R"+Строка(НомерСтроки+к+числ)+"C3").Имя = Ячейка + Строка(числ)+"3";

                ТабДок.Область("R"+Строка(НомерСтроки+к+числ)+"C4").Имя = Ячейка + Строка(числ)+"4";

                к = к+1;

                Строк = ТаблицаЗнач.Добавить();

                Строк.Номер = "R"+Строка(НомерСтроки+к+числ);

Устанавливает значение суммы для ячейки данной новой строчки.

                Если ДТ = Истина Тогда

                               УстановитьЗначениеПоказателя(Ячейка + Строка(числ)+"4", ОборотДт);

                Иначе

                               УстановитьЗначениеПоказателя(Ячейка + Строка(числ)+"4", ОборотКт);

                КонецЕсли;

Аналогичным способом добавляются значения и на начало года в данной процедуре. Исходный код процедуры в файле.