Вцелом - логика абсолютно верна, но есть пара предложений по рефакторингу:
Вот это - лишнее:
(номер строки и так система поставит сама)
А вот это:
ДокБухС.СчетКт=СчетПоКоду("001",ПланыСчетов.Основной);
лучше бы написать более универсально:
ДокБухС.СчетКт=БухИт.Счет;
Еще я бы сделал универсально по количеству субконто. Вместо:
ДокБухС.НазначитьТип("СубконтоКт1", ДокБухС.СчетКт.ВидСубконто(1)) ;
ДокБухС.НазначитьТип("СубконтоКт2", ДокБухС.СчетКт.ВидСубконто(2)) ;
ДокБухС.СубконтоКт1=БухИт.Субконто(1);
ДокБухС.СубконтоКт2=БухИт.Субконто(2);
я бы сделал циклом:
Для Ном=1 По БухИт.Счет.КоличествоСубконто() Цикл
ДокБухС.НазначитьТип("СубконтоКт"+Ном, БухИт.Счет.ВидСубконто(Ном));
ДокБухС.УстановитьАтрибут("СубконтоКт"+Ном, БухИт.Субконто(Ном));
КонецЦикла;
При подобных изменениях у тебя цикл заполнения табличной части не будет меняться для итогов по любому счету с остатками по кредиту. Если еще немного доработать - то можно сделать абсолютно универсальный цикл независимо от остатков Дт или Кт.