Вот собственно сама процедура расчета:
Процедура РасчетныеЛистки()
Перем Стр;
КвоНаСтраницу = 3;
ВвестиЧисло(КвоНаСтраницу,"Введите кол-во листков на страницу.",1,0);
КвоНаСтраницу = ?(КвоНаСтраницу > 0, КвоНаСтраницу, 3);
ПолучитьДанныеИзЗапроса();
Таб.ПараметрыСтраницы(1); // портрет
ВыбратьСтроки();
Ном = 1;
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Сотрудники);
БИ.ИспользоватьСубконто(ВидыСубконто.МесяцНачисленияЗП,НачМесяца(ДатаДок),2);
БИ.ВыполнитьЗапрос(НачМесяца(ДатаДок),ТекущийДокумент(),"661","301");
БИ.ВыбратьСубконто(1);
Пока ПолучитьСтроку() = 1 Цикл
//СА начало
Аванс = 0;
Если БИ.ПолучитьСубконто(1,,Сотрудник) = 1 Тогда
Аванс = БИ.ДО("С");
КонецЕсли;
СуммаИЛ = 0;
Сумма1 = 0;
Сумма2 = 0;
Сумма3 = 0;
Сумма = 0;
Удержание1 = "";
Удержание2 = "";
Удержание3 = "";
Удержание4 = "";
Удержание = "";
НиО = создатьобъект("Справочник.НалогиОтчисления");
Если глПолучитьНиО(ноПроцентПочт,"ПроцентПочт1","об отчислениях в ПФ с сотрудника!") = 0 Тогда
Возврат;
КонецЕсли;
КонецПериода = КонМесяца(ДатаДок);
НиО.ИспользоватьДату(КонецПериода);
Сч = 1;
КВыпл = Начислено - Удержано;
СпрИЛ = создатьобъект("Справочник.ИсполнительныеЛисты");
СпрИЛ.ИспользоватьВладельца(Сотрудник);
СпрИЛ.ВыбратьЭлементы();
Пока СпрИЛ.ПолучитьЭлемент() = 1 Цикл
СуммаИЛ = 0;
Сумма = 0;
Если СпрИЛ.ПометкаУдаления() = 0 Тогда
Если (пустоезначение(СпрИЛ.ДатаКонца) = 0) и (СпрИЛ.ДатаКонца < конмесяца(ДатаДок)) Тогда
Продолжить;
КонецЕсли;
Если (пустоезначение(СпрИЛ.ДатаНачала) = 0) и (СпрИЛ.ДатаНачала > начмесяца(ДатаДок)) Тогда
Продолжить;
КонецЕсли;
Если СпрИЛ.ПроцентСумма = 1 тогда
СуммаИЛ = КВыпл*СпрИЛ.ПроцентОтОклада/100;
Иначе
СуммаИЛ = СпрИЛ.Сумма;
КонецЕсли;
Если СпрИЛ.ПочтовыйПеревод = 1 тогда
НиО.ИспользоватьРодителя(ноПроцентПочт.Родитель);
НиО.ИспользоватьДату(КонецПериода);
НиО.ПорядокНаименований();
НиО.ВыбратьЭлементы();
Пока НиО.ПолучитьЭлемент() = 1 Цикл
Если СуммаИЛ <= НиО.Предел Тогда
СуммаИЛ = НиО.Ставка*СуммаИЛ + СуммаИЛ;
прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Сч = 1 Тогда
Сумма1 = СуммаИЛ;
Удержание1 = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
Сч=Сч+1;
ИначеЕсли Сч = 2 тогда
Сумма2 = СуммаИЛ;
Удержание2 = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
// Таб.ВывестиСекцию("Основная");
Сч=Сч+1;
ИначеЕсли Сч = 3 тогда
Сумма3 = СуммаИЛ;
Удержание3 = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
// Таб.ВывестиСекцию("Основная");
Сч=Сч+1;
ИначеЕсли Сч = 4 тогда
Сумма4 = СуммаИЛ;
Удержание4 = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
// Таб.ВывестиСекцию("Основная");
Сч=Сч+1;
ИначеЕсли Сч = 5 тогда
Сумма5 = СуммаИЛ;
Удержание5 = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
Таб.ВывестиСекцию("Основная");
Сч=Сч+1;
иначе
Сумма = СуммаИЛ;
Удержание = ?(СпрИЛ.ВидИсполнительногоЛиста = Перечисление.ИсполнительныеЛисты.Алименты,"Алименты","Исп.лист: "+СпрИЛ.Наименование);
Таб.ВывестиСекцию("Строка");
КонецЕсли;
//Если СпрИЛ.ПочтовыйПеревод = 1 тогда
// НиО.ИспользоватьРодителя(ноПроцентПочт.Родитель);
// НиО.ИспользоватьДату(КонецПериода);
// НиО.ПорядокНаименований();
// НиО.ВыбратьЭлементы();
// Пока НиО.ПолучитьЭлемент() = 1 Цикл
// Если СуммаИЛ <= НиО.Предел Тогда
// СуммаПП = НиО.Ставка*СуммаИЛ;
// Если Сч = 1 Тогда
// Сумма1 = СуммаПП;
// Удержание1 = "Почтовый сбор";
// Сч=Сч+1;
// ИначеЕсли Сч = 2 тогда
// Сумма2 = СуммаПП;
// Удержание2 = "Почтовый сбор";
// Таб.ВывестиСекцию("Основная");
// Сч=Сч+1;
// иначе
// Сумма = СуммаПП;
// Удержание = "Почтовый сбор";
// Таб.ВывестиСекцию("Строка");
// КонецЕсли;
// Прервать;
// КонецЕсли;
// КонецЦикла
//КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Сч <= 5 тогда
Таб.ВывестиСекцию("Основная");
КонецЕсли;
Таб.ВывестиСекцию("Итого");
//СА конец
ТаблСотр.НайтиЗначение(Сотрудник,Стр,"Сотрудник");
ТаблСотр.ПолучитьСтрокуПоНомеру(Стр);
Стр = 0; Долг=" ";
Если ТаблСотр.СальдоНач <> 0 Тогда
Если ТаблСотр.СальдоНач < 0 Тогда
Долг = "Долг за работником";
СальдоН=(-1)*ТаблСотр.СальдоНач;
Иначе
Долг = "Долг за предприятием";
СальдоН=ТаблСотр.СальдоНач;
КонецЕсли;
Таб.ВывестиСекцию("ДолгНач");
КонецЕсли;
ПолагаетсяКВыплате = Макс(0, ТаблСотр.КВыплате + ТаблСотр.Аванс + ТаблСотр.СальдоНач);
Выплачено = ТаблСотр.ВыплПред + ТаблСотр.Аванс + ТаблСотр.ВыплТек;
Таб.ВывестиСекцию("КВыплате");
Если ТаблСотр.СальдоКон <> 0 Тогда
Если ТаблСотр.СальдоКон < 0 Тогда
Долг = "Долг за работником";
СальдоК=(-1)*ТаблСотр.СальдоКон;
Иначе
Долг = "Долг за предприятием";
СальдоК=ТаблСотр.СальдоКон;
КонецЕсли;
//Таб.ВывестиСекцию("ДолгКон");
КонецЕсли;
Если Ном < КоличествоСтрок() Тогда
Если Ном%КвоНаСтраницу = 0 Тогда
Таб.НоваяСтраница();
Иначе
Таб.ВывестиСекцию("Черта");
КонецЕсли;
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
Таб.Показать("Расчетные листки","");